Integración con MCP Servers
🎓 MCP Servers: Potenciando SDD
👨🏫 Del Investigador: Como investigador en desarrollo de software incursionando en ciberseguridad, he encontrado que Model Context Protocol (MCP) representa un estándar crítico para la extensibilidad de agentes IA. La literatura indica que MCP permite integraciones que potencian significativamente las capacidades de SDD.
💭 Mentalidad de Investigador: “La evidencia sugiere que un agente de IA aislado tiene capacidades limitadas. Con MCP, se conecta al ecosistema completo de herramientas, multiplicando su efectividad.”
🧠 ¿Qué es MCP?
Model Context Protocol es un protocolo abierto que permite [1]:
- Tools: Ejecutar comandos externos
- Resources: Acceder a archivos y datos
- Prompts: Templates de interacción
Analogía
MCP es como USB para asistentes de IA: - Sin MCP: IA aislada, conocimiento limitado - Con MCP: IA conectada a bases de datos, APIs, herramientas
🛠️ MCP Servers para SDD
1. spec-coding-mcp
Propósito: Edición estructurada de especificaciones
Instalación:
{
"mcpServers": {
"spec-coding": {
"command": "npx",
"args": ["-y", "@kevinlin/spec-coding-mcp"]
}
}
}Herramientas disponibles:
| Tool | Descripción |
|---|---|
create_spec |
Crear nueva especificación |
update_spec |
Actualizar spec existente |
validate_spec |
Validar formato de spec |
merge_specs |
Combinar specs |
Uso en SDD:
Usuario: "Crear spec para health endpoint"
IA: [usa spec-coding-mcp para crear spec estructurado]
2. Engram (Memoria Persistente)
Propósito: Memoria a largo plazo entre sesiones [2]
“Your AI coding agent forgets everything when the session ends. Engram gives it a brain.”
— Gentleman Programming [3]
“Tu agente de codificación con IA olvida todo cuando termina la sesión. Engram le da un cerebro.”
Definición de Engram
“engram
/ˈen.ɡræm/— neuroscience: the physical trace of a memory in the brain.”“engram
/ˈen.ɡræm/— neurociencia: el rastro físico de un recuerdo en el cerebro.”— Gentleman Programming [2]
Filosofía de Diseño
“Engram trusts the agent to decide what’s worth remembering — not a firehose of raw tool calls.”
“Engram confía en el agente para decidir qué vale la pena recordar — no una manguera de llamadas de herramientas en bruto.”
— Gentleman Programming [2]
Instalación
{
"mcpServers": {
"engram": {
"command": "npx",
"args": ["-y", "engram-mcp"],
"env": {
"ENGRAM_DB_PATH": "~/.engram/memory.db"
}
}
}
}Herramientas disponibles:
| Tool | Descripción |
|---|---|
remember |
Guardar información |
recall |
Recuperar información |
forget |
Eliminar información |
list_memories |
Listar memorias |
Uso en SDD:
# Guardar patrón descubierto
IA: [usa engram.remember]
"Patrón: Health endpoints deben incluir version"
# Recuperar en sesión futura
IA: [usa engram.recall]
"Recuerdo que decidimos incluir version en health checks"
Integración con SDD:
# En sdd-archive skill:
## Step: Save Learnings
After archiving, use Engram to save:
- Architecture decisions
- Patterns discovered
- Gotchas encounteredVentajas de Engram
“That’s it. No Node.js, no Python, no Bun, no Docker, no ChromaDB, no vector database, no worker processes. One binary, one SQLite file.”
“Eso es todo. No Node.js, no Python, no Bun, no Docker, no ChromaDB, no base de datos vectorial, no procesos workers. Un binario, un archivo SQLite.”
— Gentleman Programming [2]
3. Context7 (Documentación Actualizada)
Propósito: Fetch de documentación actualizada [4]
Instalación:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
}
}
}Herramientas disponibles:
| Tool | Descripción |
|---|---|
fetch_docs |
Obtener documentación |
search_docs |
Buscar en documentación |
get_examples |
Obtener ejemplos |
Uso en SDD:
# Durante sdd-design
IA: "Voy a verificar la API de Express 4.18"
[usa context7 para obtener docs actualizados]
"La firma correcta es res.status(200).json(...)"
📋 Configuración Completa
Kilocode: ~/.kilocode/mcp.json
{
"mcpServers": {
"spec-coding": {
"command": "npx",
"args": ["-y", "@kevinlin/spec-coding-mcp"],
"env": {}
},
"engram": {
"command": "npx",
"args": ["-y", "engram-mcp"],
"env": {
"ENGRAM_DB_PATH": "~/.engram/memory.db"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"],
"env": {}
}
}
}Opencode: ~/.config/opencode/opencode.json
{
"model": "claude-sonnet-4-20250514",
"mcpServers": {
"spec-coding": {
"command": "npx",
"args": ["-y", "@kevinlin/spec-coding-mcp"]
},
"engram": {
"command": "npx",
"args": ["-y", "engram-mcp"],
"env": {
"ENGRAM_DB_PATH": "~/.engram/memory.db"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
}
}
}🔄 Flujo SDD con MCP
INIT + Context7
Usuario: /sdd:init
IA:
1. Detecta package.json
2. [Context7] fetch_docs("express 4.18")
3. Detecta que es Express con middleware pattern
4. Crea config.yaml con contexto enriquecido
SPEC + spec-coding-mcp
Usuario: /sdd:spec
IA:
1. Lee proposal.md
2. [spec-coding-mcp] create_spec({
name: "health-endpoint",
requirements: [...],
scenarios: [...]
})
3. Valida formato con validate_spec
ARCHIVE + Engram
Usuario: /sdd:archive
IA:
1. Verifica tasks completas
2. Merge specs
3. [Engram] remember({
type: "pattern",
content: "Health endpoints sin auth para K8s",
tags: ["health", "kubernetes", "no-auth"]
})
4. Mueve a archive/
🛠️ MCP Server Personalizado para SDD
Crear: sdd-mcp-server
Propósito: Herramientas específicas para SDD
// sdd-mcp-server/index.ts
import { Server } from "@modelcontextprotocol/sdk/server";
const server = new Server({
name: "sdd-mcp-server",
version: "1.0.0",
});
// Tool: Create Change
server.addTool({
name: "sdd_create_change",
description: "Create a new SDD change with all artifacts",
parameters: {
type: "object",
properties: {
name: { type: "string" },
intent: { type: "string" },
scope: { type: "array", items: { type: "string" } },
},
},
handler: async (params) => {
// Create proposal.md, spec.delta.md, etc.
},
});
// Tool: Verify Implementation
server.addTool({
name: "sdd_verify",
description: "Verify implementation against specs",
handler: async () => {
// Compare code to specs
// Run tests
// Generate verification.md
},
});
// Tool: Next Phase
server.addTool({
name: "sdd_next_phase",
description: "Determine and execute next SDD phase",
handler: async () => {
// Check current state
// Return next recommended action
},
});📊 Comparación: Sin MCP vs Con MCP
Sin MCP
IA: "Voy a crear el spec..."
[Escribe manualmente]
IA: "Recuerdo que hicimos algo similar..."
[No tiene acceso a sesiones anteriores]
IA: "Creo que la API es así..."
[Conocimiento puede estar desactualizado]
Con MCP
IA: "Voy a crear el spec..."
[spec-coding-mcp] Crea estructura validada
IA: "Recuerdo que decidimos usar este patrón..."
[Engram] Recupera decisión de sesión anterior
IA: "Verifico la API actual..."
[Context7] Obtiene documentación actualizada
⚠️ Troubleshooting MCP
MCP Server No Conecta
# Verificar que npx puede ejecutar
npx -y @kevinlin/spec-coding-mcp
# Verificar variables de entorno
echo $ENGRAM_DB_PATH
# Reiniciar el agente
# Kilocode: Cmd+Shift+P → Reload Window
# Opencode: Ctrl+C y reiniciarEngram No Guarda
# Verificar permisos del directorio
ls -la ~/.engram/
# Crear si no existe
mkdir -p ~/.engram
touch ~/.engram/memory.dbContext7 Timeout
# Aumentar timeout en config
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"],
"env": {
"TIMEOUT_MS": "30000"
}
}
}
}🎓 Síntesis de la Investigación
- MCP conecta IA con herramientas externas según Anthropic [1]
- spec-coding-mcp estructura especificaciones de manera sistemática
- Engram persiste memoria entre sesiones [2]
- Context7 mantiene documentación actualizada [4]
- Servidores custom extienden capacidades del agente
- Metodología SDD integrada con MCP [5]
📖 Referencias
🚀 Siguiente Paso
Continúa con Módulo 7: Patrones Avanzados para aplicar SDD en escenarios complejos.
📚 Referencias Adicionales
Para una discusión más amplia sobre metodologías SDD y su implementación práctica, consultar Saavedra (2026) [5].
Módulo 6 | Duración: 45 min | Dificultad: 🔴 Avanzado | © Diego Saavedra