Aider MCP Server

Un servidor MCP para delegar tareas de codificación de IA a Aider, mejorando la eficiencia y flexibilidad del desarrollo.

Documentación

Aider MCP Server - Experimental

Servidor de protocolo de contexto de modelo para delegar trabajo de codificación de IA a Aider, mejorando la eficiencia y flexibilidad del desarrollo.

Descripción general

Este servidor permite que Claude Code delegue tareas de codificación de IA a Aider, el mejor asistente de codificación de IA de código abierto. Al delegar ciertas tareas de codificación a Aider, podemos reducir costos, obtener control sobre nuestro modelo de codificación y operar Claude Code de una manera más orquestadora para revisar y modificar código.

Configuración

  1. Clona el repositorio:
git clone https://github.com/disler/aider-mcp-server.git
  1. Instala las dependencias:
uv sync
  1. Crea tu archivo de entorno:
cp .env.sample .env
  1. Configura tus claves de API en el archivo .env (o usa la sección "env" de mcpServers) para tener la clave de API necesaria para el modelo que quieras usar en aider:
GEMINI_API_KEY=your_gemini_api_key_here
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
...see .env.sample for more
  1. Copia y completa el .mcp.json en la raíz de tu proyecto y actualiza el --directory para que apunte al directorio raíz de este proyecto y el --current-working-dir para que apunte a la raíz de tu proyecto.
{
  "mcpServers": {
    "aider-mcp-server": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "<path to this project>",
        "run",
        "aider-mcp-server",
        "--editor-model",
        "gpt-4o",
        "--current-working-dir",
        "<path to your project>"
      ],
      "env": {
        "GEMINI_API_KEY": "<your gemini api key>",
        "OPENAI_API_KEY": "<your openai api key>",
        "ANTHROPIC_API_KEY": "<your anthropic api key>",
        ...see .env.sample for more
      }
    }
  }
}

Pruebas

Las pruebas se ejecutan con gemini-2.5-pro-exp-03-25

Para ejecutar todas las pruebas:

uv run pytest

Para ejecutar pruebas específicas:

# Test listing models
uv run pytest src/aider_mcp_server/tests/atoms/tools/test_aider_list_models.py

# Test AI coding
uv run pytest src/aider_mcp_server/tests/atoms/tools/test_aider_ai_code.py

Nota: Las pruebas de codificación de IA requieren una clave de API válida para el modelo Gemini. Asegúrate de configurarla en tu archivo .env antes de ejecutar las pruebas.

Agregar este servidor MCP a Claude Code

Agregar con gemini-2.5-pro-exp-03-25

claude mcp add aider-mcp-server -s local \
  -- \
  uv --directory "<path to the aider mcp server project>" \
  run aider-mcp-server \
  --editor-model "gemini/gemini-2.5-pro-exp-03-25" \
  --current-working-dir "<path to your project>"

Agregar con gemini-2.5-pro-preview-03-25

claude mcp add aider-mcp-server -s local \
  -- \
  uv --directory "<path to the aider mcp server project>" \
  run aider-mcp-server \
  --editor-model "gemini/gemini-2.5-pro-preview-03-25" \
  --current-working-dir "<path to your project>"

Agregar con quasar-alpha

claude mcp add aider-mcp-server -s local \
  -- \
  uv --directory "<path to the aider mcp server project>" \
  run aider-mcp-server \
  --editor-model "openrouter/openrouter/quasar-alpha" \
  --current-working-dir "<path to your project>"

Agregar con llama4-maverick-instruct-basic

claude mcp add aider-mcp-server -s local \
  -- \
  uv --directory "<path to the aider mcp server project>" \
  run aider-mcp-server \
  --editor-model "fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic" \
  --current-working-dir "<path to your project>"

Uso

Este servidor MCP proporciona las siguientes funcionalidades:

  1. Delegar tareas de codificación de IA a Aider:

    • Toma un prompt y rutas de archivos
    • Usa Aider para implementar los cambios solicitados
    • Devuelve éxito o fracaso
  2. Listar modelos disponibles:

    • Proporciona una lista de modelos que coinciden con una subcadena
    • Útil para descubrir modelos compatibles

Herramientas disponibles

Este servidor MCP expone las siguientes herramientas:

1. aider_ai_code

Esta herramienta te permite ejecutar Aider para realizar tareas de codificación de IA basadas en un prompt proporcionado y archivos especificados.

Parámetros:

  • ai_coding_prompt (cadena, obligatorio): La instrucción en lenguaje natural para la tarea de codificación de IA.
  • relative_editable_files (lista de cadenas, obligatorio): Una lista de rutas de archivos (relativas al current_working_dir) que Aider puede modificar. Si un archivo no existe, se creará.
  • relative_readonly_files (lista de cadenas, opcional): Una lista de rutas de archivos (relativas al current_working_dir) que Aider puede leer para contexto pero no puede modificar. El valor predeterminado es una lista vacía [].
  • model (cadena, opcional): El modelo de IA principal que Aider debe usar para generar código. El valor predeterminado es "gemini/gemini-2.5-pro-exp-03-25". Puedes usar la herramienta list_models para encontrar otros modelos disponibles.
  • editor_model (cadena, opcional): El modelo de IA que Aider debe usar para editar/refinar código, particularmente cuando se usa el modo arquitecto. Si no se proporciona, el model principal podría usarse dependiendo de la lógica interna de Aider. El valor predeterminado es None.

Ejemplo de uso (dentro de una solicitud MCP):

Prompt de Claude Code:

Use the Aider AI Code tool to: Refactor the calculate_sum function in calculator.py to handle potential TypeError exceptions.

Resultado:

{
  "name": "aider_ai_code",
  "parameters": {
    "ai_coding_prompt": "Refactor the calculate_sum function in calculator.py to handle potential TypeError exceptions.",
    "relative_editable_files": ["src/calculator.py"],
    "relative_readonly_files": ["docs/requirements.txt"],
    "model": "openai/gpt-4o"
  }
}

Devuelve:

  • Un dict simple: {success, diff}
    • success: booleano - Si la operación fue exitosa.
    • diff: cadena - El diff de los cambios realizados en el archivo.

2. list_models

Esta herramienta lista los modelos de IA disponibles compatibles con Aider que coinciden con una subcadena dada.

Parámetros:

  • substring (cadena, obligatorio): La subcadena para buscar dentro de los nombres de los modelos disponibles.

Ejemplo de uso (dentro de una solicitud MCP):

Prompt de Claude Code:

Use the Aider List Models tool to: List models that contain the substring "gemini".

Resultado:

{
  "name": "list_models",
  "parameters": {
    "substring": "gemini"
  }
}

Devuelve:

  • Una lista de cadenas de nombres de modelos que coinciden con la subcadena proporcionada. Ejemplo: ["gemini/gemini-1.5-flash", "gemini/gemini-1.5-pro", "gemini/gemini-pro"]

Arquitectura

El servidor está estructurado de la siguiente manera:

  • Capa de servidor: Maneja la comunicación del protocolo MCP
  • Capa de átomos: Componentes funcionales individuales y puros
    • Herramientas: Capacidades específicas (codificación de IA, listado de modelos)
    • Utilidades: Constantes y funciones auxiliares
    • Tipos de datos: Definiciones de tipos usando Pydantic

Todos los componentes están completamente probados para garantizar su confiabilidad.

Estructura del código

El proyecto está organizado en los siguientes directorios y archivos principales:

.
├── ai_docs                   # Documentation related to AI models and examples
│   ├── just-prompt-example-mcp-server.xml
│   └── programmable-aider-documentation.md
├── pyproject.toml            # Project metadata and dependencies
├── README.md                 # This file
├── specs                     # Specification documents
│   └── init-aider-mcp-exp.md
├── src                       # Source code directory
│   └── aider_mcp_server      # Main package for the server
│       ├── __init__.py       # Package initializer
│       ├── __main__.py       # Main entry point for the server executable
│       ├── atoms             # Core, reusable components (pure functions)
│       │   ├── __init__.py
│       │   ├── data_types.py # Pydantic models for data structures
│       │   ├── logging.py    # Custom logging setup
│       │   ├── tools         # Individual tool implementations
│       │   │   ├── __init__.py
│       │   │   ├── aider_ai_code.py # Logic for the aider_ai_code tool
│       │   │   └── aider_list_models.py # Logic for the list_models tool
│       │   └── utils.py      # Utility functions and constants (like default models)
│       ├── server.py         # MCP server logic, tool registration, request handling
│       └── tests             # Unit and integration tests
│           ├── __init__.py
│           └── atoms         # Tests for the atoms layer
│               ├── __init__.py
│               ├── test_logging.py # Tests for logging
│               └── tools     # Tests for the tools
│                   ├── __init__.py
│                   ├── test_aider_ai_code.py # Tests for AI coding tool
│                   └── test_aider_list_models.py # Tests for model listing tool
  • src/aider_mcp_server: Contiene el código principal de la aplicación.
    • atoms: Contiene los bloques fundamentales. Están diseñados para ser funciones puras o clases simples con dependencias mínimas.
      • tools: Cada archivo aquí implementa la lógica central para una herramienta MCP específica (aider_ai_code, list_models).
      • utils.py: Contiene constantes compartidas como nombres de modelos predeterminados.
      • data_types.py: Define modelos de Pydantic para estructuras de solicitud/respuesta, asegurando la validación de datos.
      • logging.py: Configura un formato de registro consistente para salida de consola y archivo.
    • server.py: Orquesta el servidor MCP. Inicializa el servidor, registra las herramientas definidas en el directorio atoms/tools, maneja las solicitudes entrantes, las enruta a la lógica de herramienta apropiada y envía respuestas según el protocolo MCP.
    • __main__.py: Proporciona el punto de entrada de la interfaz de línea de comandos (aider-mcp-server), analizando argumentos como --editor-model e iniciando el servidor definido en server.py.
    • tests: Contiene pruebas que reflejan la estructura del directorio src, asegurando que cada componente (especialmente los átomos) funcione como se espera.