Repo Therapist
Repo Therapist 🛋️
Tu base de código se explica a sí misma bajo presión
Este servidor MCP está construido completamente usando Cursor
Repo Therapist es un servidor MCP (Model Context Protocol) que convierte cualquier repositorio en conocimiento consultable y explicable. Haz preguntas sobre tu base de código a través de Cursor y obtén respuestas estructuradas y perspicaces.
Qué hace
Le preguntas a Cursor cosas como:
"¿Por qué este servicio está estructurado así?"
"¿Qué se romperá si elimino esto?"
"¿Qué partes de este repositorio te dan miedo?"
Detrás de escena, Repo Therapist:
Lee la estructura y los archivos de tu repositorio
Analiza el historial de git y los patrones de confirmación (commits)
Correlaciona el código con la frecuencia de cambios
Identifica puntos críticos de complejidad y riesgos
Related MCP server: Code Understanding MCP Server
Herramientas disponibles
Herramienta | Descripción |
| Analiza un repositorio: ejecuta esto primero |
| Obtiene la instantánea estática (fuente de verdad) del repositorio |
| Obtiene el análisis del historial de git (la dimensión temporal) |
| Explica por qué un archivo específico es como es |
| Haz cualquier pregunta sobre el repositorio analizado |
| Obtiene una visión general de alto nivel |
| Genera un informe de evaluación de riesgos |
Fuente de verdad: La instantánea
Cuando ejecutas analyze_repo, Repo Therapist crea una instantánea estática: la fuente de verdad autorizada sobre tu repositorio. Esta instantánea incluye:
{
"files": [...], // Every file with path, language, line count
"languages": {...}, // Language breakdown with percentages
"entryPoints": [...], // Detected entry points with confidence levels
"configs": {...}, // Parsed package.json, tsconfig, Dockerfile, CI configs
"directories": [...] // Directory structure with inferred purposes
}Por qué esto es importante: Los LLM deben citar estos datos de la instantánea, no adivinar. Cuando preguntas "¿Qué lenguajes usa este repositorio?", la respuesta proviene de la instantánea, no de suposiciones del LLM.
Usa get_snapshot para recuperar secciones específicas:
get_snapshot(section: "files")- Todos los archivos con metadatosget_snapshot(section: "languages")- Estadísticas de lenguajeget_snapshot(section: "entryPoints")- Puntos de entrada detectadosget_snapshot(section: "configs")- Archivos de configuración analizadosget_snapshot(section: "directories")- Estructura de directoriosget_snapshot()- Resumen de todo
Historiador de Git: La dimensión temporal
El Historiador de Git analiza el historial de confirmaciones para explicar POR QUÉ el código es como es. Aquí es donde deja de ser algo superficial.
{
"fileChurn": { "auth.ts": { "totalCommits": 47, "churnScore": 85 } },
"authors": { "auth.ts": ["alice", "bob", "charlie"] },
"fragileFiles": [{ "path": "auth.ts", "reasons": ["high-churn", "many-authors"] }],
"hotPaths": [...],
"stableCore": [...]
}Esto te permite responder:
"¿Por qué esto es raro?" → "Porque ha sido reescrito 12 veces en 6 meses."
"¿Quién es dueño de este archivo?" → "Disputado: 4 personas lo han modificado, ninguna con >30%."
"¿Con qué debo tener cuidado?" → "Estos 5 archivos son frágiles y propensos a errores."
Usa get_history para recuperar aspectos específicos:
get_history(section: "churn")- Frecuencia de cambio de archivos y volatilidadget_history(section: "authors")- Estadísticas de colaboradoresget_history(section: "fragile")- Archivos con probabilidad de causar problemasget_history(section: "hotPaths")- Rutas críticas frente al núcleo estableget_history(section: "timeline")- Eventos clave y patrones de confirmaciónget_history(section: "ownership")- Quién es dueño de quéget_history()- Resumen de todo
Usa why_is_this_weird para un análisis de archivo específico:
Use why_is_this_weird on "src/auth/login.ts"Devuelve una explicación detallada con citas:
# Why is "src/auth/login.ts" the way it is?
## Change History
- Total commits: 47
- Authors: 5 (alice, bob, charlie, dave, eve)
- Churn score: 85 ⚠️ HIGH
## 🔍 Why It's Unusual
**Heavily modified:** This file has been changed 47 times...
**Many hands:** 5 different people have modified this file...Configuración
1. Instalar dependencias
cd repo-therapist
npm install2. Construir el proyecto
npm run build3. Añadir a Cursor
Abre la configuración de Cursor → MCP → Añadir nuevo servidor MCP:
{
"mcpServers": {
"repo-therapist": {
"command": "node",
"args": ["/FULL/PATH/TO/repo-therapist/dist/index.js"]
}
}
}Importante: Reemplaza /FULL/PATH/TO/ con la ruta absoluta real a tu carpeta repo-therapist.
Ejemplo:
{
"mcpServers": {
"repo-therapist": {
"command": "node",
"args": ["/Users/saar/Projects/private/repo-therapist/dist/index.js"]
}
}
}4. Reiniciar Cursor
Después de añadir la configuración de MCP, reinicia Cursor para que los cambios surtan efecto.
Preguntas frecuentes
¿Necesito ejecutar repo-therapist por separado?
No. Cursor inicia y gestiona automáticamente el servidor MCP por ti. Cuando añades la configuración a los ajustes de MCP de Cursor, Cursor:
Inicia el proceso
node dist/index.jscuando es necesarioLo mantiene ejecutándose en segundo plano
Se comunica con él a través de stdio (entrada/salida estándar)
Solo necesitas construir una vez (npm run build), añadir la configuración y reiniciar Cursor. Eso es todo.
¿Dónde hago las preguntas?
En el chat normal de Cursor (Cmd+L o el panel de chat). La diferencia es cómo preguntas:
Sin MCP: "¿Qué hace este repositorio?" → Cursor usa sus herramientas integradas
Con Repo Therapist: "Usa
analyze_repoen/path/to/repo" → Cursor llama a la herramienta MCP
Le dices explícitamente a Cursor que use las herramientas de repo-therapist. Cursor las ve como capacidades adicionales que puede usar.
¿Cuál es la diferencia con el chat normal de Cursor?
Chat normal de Cursor | Con Repo Therapist |
Lee archivos bajo demanda | Pre-analiza toda la estructura del repositorio |
Sin conciencia del historial de git | Analiza patrones de confirmación y rotación |
Responde basado en lo que lee | Responde basado en análisis estructurado |
Sin detección de riesgos | Identifica puntos críticos de complejidad |
Comprensión genérica del código | Perspectivas específicas del dominio ("¿qué te asusta?") |
La diferencia clave: Repo Therapist realiza un análisis estructurado por adelantado y lo almacena, por lo que preguntas como "¿qué archivos cambian más a menudo?" o "¿cuáles son los riesgos?" pueden responderse a partir de datos precalculados en lugar de que Cursor tenga que resolverlo cada vez.
Piénsalo así: Cursor es inteligente pero reactivo. Repo Therapist le da un "documento informativo" sobre tu base de código que puede consultar.
Uso
Una vez configurado, puedes usar Repo Therapist en el chat de Cursor:
Paso 1: Analizar un repositorio
Primero, analiza el repositorio que quieres explorar:
Use analyze_repo to analyze /path/to/some/repoPaso 2: Hacer preguntas
Ahora puedes hacer preguntas:
Use ask_repo to answer: "What does this repo do?"Use ask_repo to answer: "Which parts of this repo scare you?"Use ask_repo to answer: "What will break if I remove the auth module?"Paso 3: Obtener informes
Obtén un resumen:
Use repo_summary to show me an overviewObtén una evaluación de riesgos:
Use risk_report to identify potential issuesEjemplos de preguntas
"¿Qué hace este repositorio?"
"¿Cómo está estructurado el código?"
"¿Qué stack tecnológico se está utilizando?"
"Muéstrame las dependencias"
"¿Qué archivos son los más grandes?"
"¿Qué archivos cambian más a menudo?"
"¿Quiénes son los colaboradores?"
"¿Cuáles son las confirmaciones recientes?"
"¿Qué partes te asustan?"
"¿Qué se romperá si cambio X?"
Desarrollo
Ejecutar en modo desarrollo
npm run devConstruir para producción
npm run buildEjecutar pruebas
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coverage reportPautas de prueba
Nota: Añade siempre pruebas unitarias al implementar nuevas funciones.
Las pruebas se encuentran en tests/ y usan Vitest. La estructura de pruebas refleja la fuente:
tests/
├── fixtures/ # Test utilities and mock repos
│ └── setup.ts # Helper functions for creating test repos
├── scanner/ # Scanner module tests
├── historian/ # Historian module tests
├── tools/ # Tool tests
└── cache.test.ts # Cache testsAl añadir una nueva función:
Crea pruebas en el subdirectorio
tests/apropiadoUsa
createTestRepo()defixtures/setup.tspara pruebas relacionadas con gitLimpia los repositorios de prueba con
cleanupTestRepo()enafterAllEjecuta
npm testpara verificar que todas las pruebas pasen antes de confirmar (commit)
Estructura del proyecto
repo-therapist/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── cache.ts # In-memory repo cache
│ ├── types.ts # TypeScript interfaces
│ ├── scanner/ # Static snapshot engine (Step 2)
│ │ ├── index.ts # Scanner exports
│ │ ├── types.ts # Snapshot type definitions
│ │ └── scan-repo.ts # Repository scanner
│ ├── historian/ # Git history analyzer (Step 3)
│ │ ├── index.ts # Historian exports
│ │ ├── types.ts # History type definitions
│ │ └── analyze-history.ts # Git history analysis
│ └── tools/
│ ├── analyze-repo.ts # Repository analyzer (orchestrates all)
│ ├── get-snapshot.ts # Snapshot retrieval (ground truth)
│ ├── get-history.ts # History retrieval (time dimension)
│ ├── ask-repo.ts # Question answering
│ ├── repo-summary.ts # Summary generator
│ └── risk-report.ts # Risk assessment
├── tests/ # Unit tests
│ ├── fixtures/ # Test utilities
│ ├── scanner/ # Scanner tests
│ ├── historian/ # Historian tests
│ └── tools/ # Tool tests
├── package.json
├── tsconfig.json
├── vitest.config.ts # Test configuration
└── README.mdStack tecnológico
TypeScript - Base de código con tipado seguro
@modelcontextprotocol/sdk - Implementación del servidor MCP
simple-git - Análisis del historial de Git
ts-morph - Análisis AST de TypeScript/JavaScript (planificado)
glob - Coincidencia de patrones de archivos
Hoja de ruta
[ ] Análisis de código basado en AST con ts-morph
[ ] Persistir el análisis en JSON/SQLite
[ ] Visualización del grafo de dependencias
[ ] Detección de vulnerabilidades de seguridad
[ ] Análisis de cobertura de pruebas
[ ] Manejadores de preguntas personalizados
Licencia
MIT
Available Tools
7 toolsanalyze_repoA
Analyze a repository to understand its structure, dependencies, and git history. Run this first before asking questions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the repository to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what the tool does (analyze structure, dependencies, git history) but does not disclose side effects, permissions, or output format. Adequate but lacks depth on behavioral traits like mutability or performance impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second provides usage guidance. Extremely concise, front-loaded with essential information, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description lacks details on what the analysis returns (e.g., report structure, how to use results). It hints at follow-up use ('before asking questions') but does not fully equip an agent to handle output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'path', is described in the schema as 'Absolute path to the repository to analyze'. The description does not add extra meaning beyond what the schema already provides. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a repository for structure, dependencies, and git history, and provides a usage directive ('Run this first before asking questions'), which distinctively positions it among siblings like ask_repo and get_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: run this before asking questions. It implies when to use but does not explicitly list alternatives or when not to use, though the sibling context partially compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_repoC
Ask a question about an analyzed repository. Questions can be about structure, purpose, dependencies, patterns, or concerns.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed | |
| question | Yes | The question to ask about the repository (e.g., 'What does this repo do?', 'Why is the auth service structured this way?') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does not state that the tool is read-only, whether it requires prior analysis, or any side effects. The description lacks behavioral details beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and to the point. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the agent can expect as a response (e.g., an answer text). It also does not mention that the repository must be analyzed first, though sibling tools imply context. The description is incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already contains examples for the 'question' parameter. The description adds marginal value by listing question types, but those are similar to schema examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'ask' and the resource 'repository', and provides examples of question categories (structure, purpose, etc.). However, it does not explicitly distinguish from sibling tools like 'repo_summary' or 'why_is_this_weird', which may also answer questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., that the repository must have been analyzed first). It only states what the tool does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyB
Get git history analysis - the time dimension. Reveals WHY code is the way it is: file churn, ownership, fragile files, hot paths vs stable core.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed | |
| section | No | Which aspect of history to retrieve: 'churn' (file change frequency), 'authors' (contributor stats), 'fragile' (problem files), 'hotPaths' (volatile vs stable), 'timeline' (events), 'ownership' (who owns what), 'all' (summary). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It mentions what the tool reveals (churn, authorship, etc.) but omits behavioral details: whether it modifies state, requires authentication, or handles large repos. As a likely read-only analysis, this gap limits agent understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with purpose and examples. Efficient but could briefly list alternative uses or output format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks usage guidelines, output schema, and behavioral details. With six sibling tools, agent needs more context to choose correctly. Missing information on return format or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear descriptions for both parameters (path, section with enums). Description adds no further semantic value beyond what the schema provides; baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's verb ('Get'), resource ('git history analysis'), and specific insights ('file churn, ownership, fragile files, hot paths vs stable core'). It emphasizes the 'time dimension', distinguishing it from sibling tools like get_snapshot or repo_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., analyze_repo, risk_report). The description hints at 'time dimension' but lacks exclusions or context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snapshotA
Get the static snapshot (ground truth) of the repository. This is the authoritative source - LLMs must cite this data, not guess. Use section parameter to get specific data.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed | |
| section | No | Which section of the snapshot to retrieve. 'all' returns a summary view. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes a read operation but does not disclose error handling, caching behavior, or response scope beyond inferring from section parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and authoritative emphasis. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description conveys the tool's role as a source of truth. Could elaborate on return format, but sufficient for a simple retrieval tool with well-defined params.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, baseline 3. The description adds 'Use section parameter' but does not provide additional meaning beyond the schema's enum or path description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a static snapshot as the authoritative ground truth, distinguishing it from sibling tools that involve analysis or generation. It emphasizes this data should be cited, not guessed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use (for ground truth) and suggests using the section parameter. However, no explicit when-not-to-use or alternatives, though siblings like analyze_repo imply different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repo_summaryB
Get a high-level summary of the analyzed repository including tech stack, structure, and key components.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits, but it only states the action. It does not mention that the tool requires a repository to have been analyzed, that it is read-only, or any constraints like 'last analyzed' implication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter and no output schema, the description is minimally complete. However, it omits details about the output format and prerequisites (e.g., requiring prior analysis), which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description does not add meaning beyond what is already in the schema for the 'path' parameter. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a high-level summary including tech stack, structure, and key components, which is specific and informative. However, it does not explicitly differentiate from sibling tools like ask_repo or analyze_repo, but the distinct purpose is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any context about prerequisites (e.g., requiring a prior analysis). The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_reportC
Generate a risk assessment report identifying code smells, complexity hotspots, and areas that might cause problems.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether the tool is read-only, requires permissions, or has side effects. It only states it generates a report, leaving behavioral traits unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a risk assessment report, the description lacks details on the report's structure, output format, or behavior. It does not compensate for the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter 'path' is already fully described in the input schema. The tool description adds no additional meaning beyond the schema, achieving baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a risk assessment report focusing on code smells and complexity hotspots. However, it does not differentiate from sibling tools like analyze_repo or repo_summary, which may have overlapping purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives such as analyze_repo, repo_summary, or why_is_this_weird. The description lacks context on appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
why_is_this_weirdA
Explain why a specific file is the way it is, based on git history. Answers questions like 'Why is this file so complex?' with data: 'Because it's been rewritten 12 times by 5 different people.'
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional: path to repo if different from last analyzed | |
| file_path | Yes | The relative path to the file to analyze (e.g., 'src/auth/login.ts') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool uses git history to answer questions, but with no annotations, it does not disclose whether the tool modifies data, requires special permissions, or the exact nature of its operations. It is adequate but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences and an example. It is front-loaded with the primary purpose and efficiently conveys value without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a moderate number of parameters, the description explains the tool's behavior well, including an example output. However, it does not address edge cases like files with no history or error conditions, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, so the schema itself provides parameter meaning. The description adds context about the analysis type (git history, complexity) but does not extend parameter semantics significantly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Explain why a specific file is the way it is, based on git history.' It provides a concrete example question and answer, distinguishing it from sibling tools like get_history or analyze_repo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding file complexity via git history, but it does not explicitly state when to use this tool versus alternatives (e.g., get_history for raw history), nor does it provide any 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
analyze_repo - First observed
ask_repo - First observed
get_history - First observed
get_snapshot - First observed
repo_summary - First observed
risk_report - First observed
why_is_this_weird
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: analyze_repo is for initial analysis, ask_repo for questions, get_history for git history, get_snapshot for authoritative data, repo_summary for high-level summary, risk_report for risk assessment, and why_is_this_weird for explaining file history. No overlap.
Most tools follow a verb_noun pattern (analyze_repo, ask_repo, get_history, get_snapshot), but repo_summary and risk_report are noun_noun, and why_is_this_weird is a full sentence, creating inconsistency.
Seven tools is well-scoped for a repository analysis server, providing essential functionality without being overwhelming or insufficient.
The tool set covers key aspects: analysis, Q&A, history, snapshot, summary, and risk assessment. Minor gaps like direct file search or comparison are missing but can be partially addressed by ask_repo.
Maintenance
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
A MCP server built for developers enabling Git based project management with project and personal…
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that transforms codebases into intelligent, queryable knowledge bases, enabling AI assistants to perform semantic search, explore architecture, and analyze code relationships.166-
- AlicenseCqualityDmaintenanceAn MCP server that analyzes local or remote GitHub repositories, providing intelligent code context and structure to AI coding assistants.1013MIT
- AlicenseAqualityCmaintenanceAn MCP server that extracts complete knowledge from any codebase — architecture, patterns, dependencies, API surface. Combines static analysis with AI-powered deep interpretation.8MIT
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server for local git repositories that provides tools for code search, git history analysis, complexity metrics, test discovery, and dependency management.MIT