Agent-almanac analyze-codebase-for-mcp
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/es/skills/analyze-codebase-for-mcp" ~/.claude/skills/pjt222-agent-almanac-analyze-codebase-for-mcp-39dd6d && rm -rf "$T"
i18n/es/skills/analyze-codebase-for-mcp/SKILL.mdAnalizar Base de Código para MCP
Analizar un repositorio existente para identificar funcionalidad exponer como herramientas MCP.
Cuándo Usar
- Planificando integración MCP para una base de código existente
- Identificando qué funciones o APIs exponer como herramientas MCP
- Evaluando la viabilidad de integración MCP
- Diseñando la estrategia de herramientas MCP para un proyecto
- Priorizando funcionalidad para exposición vía MCP
Entradas
- Requerido: Repositorio de código a analizar
- Requerido: Lenguaje(s) de programación del proyecto
- Opcional: Documentación existente de la API
- Opcional: Casos de uso previstos para la integración MCP
- Opcional: Restricciones de seguridad o acceso
Procedimiento
Paso 1: Catalogar la Funcionalidad del Proyecto
Escanear el repositorio para identificar funciones, APIs, y servicios exportados.
# Encontrar funciones exportadas (JavaScript/TypeScript) grep -rn "export function\|export const\|export class" src/ --include="*.ts" --include="*.js" # Encontrar funciones públicas (Python) grep -rn "^def \|^class " src/ --include="*.py" | grep -v "^.*:.*_" # Encontrar funciones exportadas (R) grep -rn "#' @export" R/ --include="*.R" # Encontrar endpoints de API grep -rn "app\.get\|app\.post\|app\.put\|app\.delete\|@app\.route" --include="*.py" --include="*.ts" --include="*.js"
Esperado: Lista de funciones, clases, y endpoints candidatos para exposición MCP.
En caso de fallo: Revisar la documentación del proyecto, examinar los archivos de entrada principales (main, index, app).
Paso 2: Clasificar Candidatos por Tipo MCP
Categorizar la funcionalidad identificada:
| Tipo MCP | Candidatos |
|---|---|
| Herramientas | Funciones que realizan acciones (CRUD, cálculos, transformaciones) |
| Recursos | Datos que se pueden leer (configuración, estado, catálogos) |
| Prompts | Plantillas de interacción reutilizables |
Criterios de selección:
- Incluir: Funciones bien definidas con entradas/salidas claras
- Incluir: Operaciones que se benefician del contexto de lenguaje natural
- Excluir: Funciones internas de infraestructura
- Excluir: Operaciones que requieren interacción visual
- Excluir: Funciones con efectos secundarios peligrosos sin confirmación
Esperado: Funcionalidad clasificada en herramientas, recursos, y prompts con justificación.
En caso de fallo: Comenzar con las funciones más simples y de menor riesgo, agregar más iterativamente.
Paso 3: Diseñar Esquemas de Herramientas
Para cada herramienta candidata, diseñar el esquema de entrada/salida:
// Ejemplo: convertir una función existente // Original: function buscarProductos(query: string, categoria?: string, limite?: number) // Esquema MCP: { name: "buscar-productos", description: "Buscar productos en el catálogo por nombre o categoría", inputSchema: { query: z.string().describe("Término de búsqueda"), categoria: z.string().optional().describe("Filtrar por categoría"), limite: z.number().optional().default(10).describe("Resultados máximos"), } }
Esperado: Esquemas diseñados con descripciones claras, validación de tipos, y valores predeterminados.
En caso de fallo: Simplificar esquemas complejos, dividir herramientas grandes en operaciones más pequeñas.
Paso 4: Evaluar Consideraciones de Seguridad
Revisar cada herramienta candidata por riesgos de seguridad:
- ¿La herramienta modifica datos? -> Requiere confirmación
- ¿Accede a datos sensibles? -> Requiere autorización
- ¿Ejecuta código arbitrario? -> Requiere sandboxing
- ¿Tiene efectos secundarios irreversibles? -> Requiere protección
Esperado: Cada herramienta evaluada con controles de seguridad apropiados identificados.
En caso de fallo: Errar del lado de la precaución. Comenzar con herramientas de solo lectura.
Validación
- Todas las funciones principales del proyecto identificadas y catalogadas
- Candidatos clasificados como herramientas, recursos, o prompts
- Esquemas de entrada/salida diseñados con descripciones claras
- Consideraciones de seguridad evaluadas para cada candidato
- Priorización basada en valor y riesgo documentada
- Plan de implementación con fases definido
Errores Comunes
- Exponer demasiada funcionalidad: Comenzar con un conjunto pequeño de herramientas de alto valor.
- Descripciones vagas: Los clientes MCP dependen de las descripciones para decidir cuándo usar herramientas.
- Ignorar seguridad: Las herramientas MCP son accesibles por el modelo. Evaluar riesgos cuidadosamente.
- Esquemas demasiado complejos: Simplificar entradas. El modelo trabaja mejor con parámetros simples.
- No considerar idempotencia: Las herramientas pueden ser invocadas múltiples veces. Diseñar para idempotencia cuando sea posible.
Habilidades Relacionadas
- Implementar el servidor MCP después del análisisbuild-custom-mcp-server
- Generar estructura del proyecto MCPscaffold-mcp-server
- Configurar el servidor resultanteconfigure-mcp-server
- Revisión de arquitectura complementariareview-software-architecture