====== 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''.