Herramientas de usuario

Herramientas del sitio


cursos:sdd:10-mcp

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
cursos:sdd:10-mcp [2026/11/05 22:22] – borrado - editor externo (Fecha desconocida) 127.0.0.1cursos:sdd:10-mcp [2026/11/05 22:23] (actual) – Renumera el tema y sus referencias tras añadir el tema 7 (AGENTS.md) claude
Línea 1: Línea 1:
 +====== 10. 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.
 +
 +<note important>**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.</note>
 +
 +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:
 +<sxh bash>
 +claude mcp add --scope project context7 -- npx -y @upstash/context7-mcp
 +</sxh>
 +  * OpenCode:
 +<sxh json;title:opencode.json>
 +{
 +  "mcp": {
 +    "context7": { "type": "local", "command": ["npx", "-y", "@upstash/context7-mcp"] }
 +  }
 +}
 +</sxh>
 +
 +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**:
 +
 +<sxh markdown;title:AGENTS.md>
 +- Antes de usar una API de Spring Boot o de Angular, consulta su documentación con Context7.
 +</sxh>
 +
 +----
 +
 +===== 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:
 +
 +<sxh ini;title:dbhub.toml>
 +[[sources]]
 +id = "pedidos"
 +dsn = "postgres://pedidos:${DB_PASSWORD}@localhost:5432/pedidos"
 +
 +[[tools]]
 +name = "execute_sql"
 +source = "pedidos"
 +readonly = true
 +max_rows = 100
 +</sxh>
 +
 +  * **''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:
 +<sxh bash>
 +claude mcp add --scope project basedatos -- npx -y @bytebase/dbhub@latest --config dbhub.toml
 +</sxh>
 +  * OpenCode:
 +<sxh json;title:opencode.json>
 +{
 +  "mcp": {
 +    "basedatos": { "type": "local", "command": ["npx", "-y", "@bytebase/dbhub@latest", "--config", "dbhub.toml"] }
 +  }
 +}
 +</sxh>
 +
 +<note warning>**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.</note>
 +
 +<note important>**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.</note>
 +
 +----
 +
 +===== 3. Comprobar que están conectados =====
 +
 +  * Claude Code: ''/mcp'' dentro de la sesión lista los servidores y si han arrancado.
 +  * OpenCode:
 +<sxh bash>
 +opencode mcp list
 +</sxh>
 +
 +----
 +
 +===== 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''.