====== MCP ======
Qué es un servidor MCP está en [[cursos:sdd:02-conceptos-basicos#mcp|Conceptos básicos]]. Aquí, cuáles se instalan: **dos y ninguno más**.
* **[[#context7|Context7]]**: la documentación actual de las librerías.
* **[[#base_de_datosdbhub|DBHub]]**: la base de datos de desarrollo.
Todo lo demás el agente ya lo hace con sus herramientas y con las órdenes de siempre: ''git'', ''gh'', ''./mvnw'', ''curl''. Un MCP para eso ocupa contexto en cada sesión y no aporta nada.
**Cada servidor conectado ocupa contexto en todas las sesiones**, se use o no: la descripción de cada una de sus herramientas. Antes de añadir un tercero, comprueba que no se puede hacer con una orden de terminal.
Los dos se instalan **en el proyecto**, para que viajen en el repositorio y los tenga todo el equipo:
* **Claude Code**: ''claude mcp add'' con ''%%--scope project%%'', que lo guarda en ''.mcp.json'', en la raíz. Sin él se guarda solo para esa carpeta y en otro //worktree// no estaría.
* **OpenCode**: en la clave ''mcp'' de ''opencode.json'', en la raíz.
----
===== 1. Context7 =====
[[https://github.com/upstash/context7|Context7]] le da al agente la documentación **actual** de la librería que está usando. Sin él, escribe el código de la versión que recuerda, que no es la que tiene el proyecto: métodos que ya no existen, configuración que ha cambiado.
* Claude Code:
claude mcp add --scope project context7 -- npx -y @upstash/context7-mcp
* OpenCode:
{
"mcp": {
"context7": { "type": "local", "command": ["npx", "-y", "@upstash/context7-mcp"] }
}
}
Sin la //API key// que pone la página de Context7: no hace falta y acabaría en el repositorio.
El agente no lo usa solo siempre que debería. Se le dice en ''AGENTS.md'', con **cuándo**:
- Antes de usar una API de Spring Boot o de Angular, consulta su documentación con Context7.
----
===== 2. Base de datos: DBHub =====
[[https://github.com/bytebase/dbhub|DBHub]] deja al agente **consultar la base de datos de desarrollo**: ver el esquema real antes de diseñar una migración, escribir una consulta y probarla, o comprobar qué ha guardado un test que falla. Vale para PostgreSQL, MySQL, MariaDB, SQL Server, Oracle y SQLite.
Se configura con un ''dbhub.toml'' en la raíz:
[[sources]]
id = "pedidos"
dsn = "postgres://pedidos:${DB_PASSWORD}@localhost:5432/pedidos"
[[tools]]
name = "execute_sql"
source = "pedidos"
readonly = true
max_rows = 100
* **''dsn''**: la conexión. La contraseña sale de la variable de entorno ''DB_PASSWORD'', así el fichero se puede subir al repositorio. En MySQL: ''%%mysql://pedidos:${DB_PASSWORD}@localhost:3306/pedidos%%''.
* **''readonly = true''**: solo consultas. Los datos los cambia la aplicación o una migración, no el agente.
* **''max_rows''**: lo que devuelve una consulta entra en el contexto. Cien filas bastan para ver cómo son los datos.
Y se da de alta apuntando a ese fichero:
* Claude Code:
claude mcp add --scope project basedatos -- npx -y @bytebase/dbhub@latest --config dbhub.toml
* OpenCode:
{
"mcp": {
"basedatos": { "type": "local", "command": ["npx", "-y", "@bytebase/dbhub@latest", "--config", "dbhub.toml"] }
}
}
**Solo la base de datos de desarrollo, nunca la de producción**, ni siquiera en solo lectura: lo que devuelve una consulta entra en la conversación y se manda al proveedor del modelo.
**Si ''DB_PASSWORD'' no está definida, DBHub no avisa**: deja el texto ''%%${DB_PASSWORD}%%'' tal cual como contraseña y lo que falla es la conexión. Ante un error de autenticación, lo primero, ''%%echo $DB_PASSWORD%%'' en la terminal desde la que se arrancó el agente.
----
===== 3. Comprobar que están conectados =====
* Claude Code: ''/mcp'' dentro de la sesión lista los servidores y si han arrancado.
* OpenCode:
opencode mcp list
----
===== Más información =====
* [[https://github.com/upstash/context7|Context7]]: instalación en cada agente y librerías disponibles.
* [[https://dbhub.ai/config/toml|DBHub: configuración TOML]]: varias bases de datos a la vez, ''readonly'', ''max_rows'' y herramientas propias con SQL fijo.
* [[https://code.claude.com/docs/en/mcp|Claude Code: MCP]]: ''claude mcp add'', los //scopes// y ''.mcp.json''.
* [[https://opencode.ai/docs/mcp-servers/|OpenCode: MCP servers]]: la clave ''mcp'' de ''opencode.json''.