MCP-CodeSavant
CodeSavant es un proyecto WIP.
CodeSavant es un servidor de Protocolo de Contexto de Modelo (MCP) que ofrece funciones de manipulación, ejecución y control de versiones de código. Permite a los asistentes de IA leer, escribir y ejecutar código, manteniendo un historial de cambios.
Características
Leer y escribir archivos de código con operaciones específicas de línea
Ejecutar código en múltiples lenguajes de programación (Python, Node.js)
Ejecutar comandos de shell en un entorno controlado
Realice un seguimiento y gestione los cambios de código con el control de versiones
Buscar dentro de los archivos de código
Revertir a versiones anteriores del código
Related MCP server: My Coding Buddy MCP Server
Instalación
Clonar el repositorio:
git clone https://github.com/twolven/mcp-codesavant.git
cd mcp-codesavant
Instale las dependencias necesarias:
pip install -r requirements.txt
Agregue la configuración del servidor a su config.json de Claude Desktop:
{
"mcpServers": {
"codesavant": {
"command": "python",
"args": ["path/to/codesavant.py"]
}
}
}
Estructura del directorio
El servidor crea y administra la siguiente estructura de directorio:
workspaces/
├── project1/
│ ├── .code_history.json
│ └── [code files]
├── project2/
│ ├── .code_history.json
│ └── [code files]
└── ...
Referencia de herramientas
Uso detallado
1. leer_archivo_de_código
Leer el contenido de un archivo de código, buscando opcionalmente secciones específicas.
{
"project": "string", // Project name
"path": "string", // Path to file relative to project workspace
"search": "string" // (Optional) Text/pattern to search for in file
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"content": "string", // File content
"start_line": number, // (Only if search used) Starting line of found section
"end_line": number // (Only if search used) Ending line of found section
}
}
2. escribir_archivo_de_código
Escribir o actualizar líneas específicas en un archivo de código.
{
"project": "string", // Project name
"path": "string", // Path to file relative to workspace
"content": "string", // Content to write (just the lines being changed)
"start_line": number, // Starting line number for the change
"end_line": number // (Optional) Ending line number for the change
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"diff": {
"changes": [ // List of changes made
[string, number, number, number, number] // (type, old_start, old_end, new_start, new_end)
],
"timestamp": number // When the change was made
}
}
}
3. obtener_historial_de_código
Obtener el historial de cambios de un archivo de código.
{
"path": "string" // Path to file relative to workspace
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"history": [
{
"changes": [ // List of changes made
[string, number, number, number, number]
],
"timestamp": number
}
]
}
}
4. ejecutar_código_comando
Ejecutar un comando de shell relacionado con el código.
{
"command": "string", // Shell command to execute
"timeout": number // (Optional) Command timeout in seconds (default: 30)
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"state": "success|error|timeout|cancelled",
"output": "string", // Command output
"error": "string", // Error message if any
"runtime": number, // Execution time in seconds
"exit_code": number // Command exit code
}
}
5. código_de_ejecución
Ejecutar código en el lenguaje especificado.
{
"code": "string", // Code to execute
"language": "string", // Programming language ("python" or "node")
"timeout": number // (Optional) Execution timeout in seconds (default: 30)
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"state": "success|error|timeout|cancelled",
"output": "string", // Code execution output
"error": "string", // Error message if any
"runtime": number, // Execution time in seconds
"exit_code": number // Execution exit code
}
}
6. revertir a la versión
Revertir un archivo de código a una versión específica.
{
"path": "string", // Path to file relative to workspace
"timestamp": number // Timestamp of version to revert to
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"diff": {
"changes": [ // List of changes made
[string, number, number, number, number]
],
"timestamp": number // When the reversion was made
}
}
}
7. líneas de archivo de código de lectura
Leer líneas específicas de un archivo de código.
{
"project": "string", // Project name
"path": "string", // Path to file relative to project workspace
"start_line": number, // Starting line number to read
"end_line": number // (Optional) Ending line number to read
}
Respuesta:
{
"success": true,
"timestamp": 1234567890,
"data": {
"content": "string" // Content of the specified lines
}
}
Manejo de errores
El servidor proporciona respuestas de error detalladas en el siguiente formato:
{
"success": false,
"timestamp": 1234567890,
"data": null,
"error": "Error message"
}
Los tipos de error incluyen:
CodeFileError : Errores de operación de archivo
CodeValidationError : Errores de validación de código
CodeExecutionError : Errores de ejecución de código
Soporte de idiomas
Idiomas actualmente admitidos para la ejecución de código:
Cada ejecución de lenguaje crea un archivo temporal en el directorio del espacio de trabajo y lo ejecuta con el intérprete apropiado.
Contribuyendo
Bifurcar el repositorio
Crea tu rama de funciones
Confirme sus cambios
Empujar hacia la rama
Crear una nueva solicitud de extracción
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
Autor
Todd Wolven - ( https://github.com/twolven )
Expresiones de gratitud