Aider MCP Server

Um servidor MCP para delegar tarefas de codificação de IA ao Aider, aumentando a eficiência e flexibilidade do desenvolvimento.

Documentação

Aider MCP Server - Experimental

Servidor de protocolo de contexto de modelo para descarregar trabalho de codificação de IA para o Aider, melhorando a eficiência e flexibilidade do desenvolvimento.

Visão Geral

Este servidor permite que o Claude Code descarregue tarefas de codificação de IA para o Aider, o melhor assistente de codificação de IA de código aberto. Ao delegar certas tarefas de codificação para o Aider, podemos reduzir custos, ganhar controle sobre nosso modelo de codificação e operar o Claude Code de uma forma mais orquestrada para revisar e revisar código.

Configuração

  1. Clone o repositório:
git clone https://github.com/disler/aider-mcp-server.git
  1. Instale as dependências:
uv sync
  1. Crie seu arquivo de ambiente:
cp .env.sample .env
  1. Configure suas chaves de API no arquivo .env (ou use a seção "env" do mcpServers) para ter a chave de API necessária para o modelo que você deseja usar no 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. Copie e preencha o .mcp.json para a raiz do seu projeto e atualize o --directory para apontar para o diretório raiz deste projeto e o --current-working-dir para apontar para a raiz do seu projeto.
{
  "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
      }
    }
  }
}

Testes

Testes executados com gemini-2.5-pro-exp-03-25

Para executar todos os testes:

uv run pytest

Para executar testes específicos:

# 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: Os testes de codificação de IA requerem uma chave de API válida para o modelo Gemini. Certifique-se de defini-la no seu arquivo .env antes de executar os testes.

Adicionar este servidor MCP ao Claude Code

Adicionar com 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>"

Adicionar com 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>"

Adicionar com 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>"

Adicionar com 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 fornece as seguintes funcionalidades:

  1. Descarregar tarefas de codificação de IA para o Aider:

    • Recebe um prompt e caminhos de arquivos
    • Usa o Aider para implementar as alterações solicitadas
    • Retorna sucesso ou falha
  2. Listar modelos disponíveis:

    • Fornece uma lista de modelos que correspondem a uma substring
    • Útil para descobrir modelos suportados

Ferramentas Disponíveis

Este servidor MCP expõe as seguintes ferramentas:

1. aider_ai_code

Esta ferramenta permite executar o Aider para realizar tarefas de codificação de IA com base em um prompt fornecido e arquivos especificados.

Parâmetros:

  • ai_coding_prompt (string, obrigatório): A instrução em linguagem natural para a tarefa de codificação de IA.
  • relative_editable_files (lista de strings, obrigatório): Uma lista de caminhos de arquivos (relativos ao current_working_dir) que o Aider pode modificar. Se um arquivo não existir, ele será criado.
  • relative_readonly_files (lista de strings, opcional): Uma lista de caminhos de arquivos (relativos ao current_working_dir) que o Aider pode ler para contexto, mas não pode modificar. O padrão é uma lista vazia [].
  • model (string, opcional): O modelo de IA principal que o Aider deve usar para gerar código. O padrão é "gemini/gemini-2.5-pro-exp-03-25". Você pode usar a ferramenta list_models para encontrar outros modelos disponíveis.
  • editor_model (string, opcional): O modelo de IA que o Aider deve usar para editar/refinar código, particularmente ao usar o modo arquiteto. Se não for fornecido, o model principal pode ser usado dependendo da lógica interna do Aider. O padrão é None.

Exemplo de Uso (dentro de uma solicitação MCP):

Prompt do 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"
  }
}

Retorna:

  • Um dict simples: {success, diff}
    • success: booleano - Se a operação foi bem-sucedida.
    • diff: string - O diff das alterações feitas no arquivo.

2. list_models

Esta ferramenta lista modelos de IA disponíveis suportados pelo Aider que correspondem a uma determinada substring.

Parâmetros:

  • substring (string, obrigatório): A substring para pesquisar dentro dos nomes dos modelos disponíveis.

Exemplo de Uso (dentro de uma solicitação MCP):

Prompt do Claude Code:

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

Resultado:

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

Retorna:

  • Uma lista de strings de nomes de modelos que correspondem à substring fornecida. Exemplo: ["gemini/gemini-1.5-flash", "gemini/gemini-1.5-pro", "gemini/gemini-pro"]

Arquitetura

O servidor está estruturado da seguinte forma:

  • Camada de servidor: Lida com a comunicação do protocolo MCP
  • Camada de átomos: Componentes funcionais individuais e puros
    • Ferramentas: Capacidades específicas (codificação de IA, listagem de modelos)
    • Utilitários: Constantes e funções auxiliares
    • Tipos de dados: Definições de tipos usando Pydantic

Todos os componentes são minuciosamente testados para garantir confiabilidade.

Estrutura do Código

O projeto está organizado nos seguintes diretórios e arquivos principais:

.
├── 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: Contém o código principal da aplicação.
    • atoms: Contém os blocos de construção fundamentais. Eles são projetados para serem funções puras ou classes simples com dependências mínimas.
      • tools: Cada arquivo aqui implementa a lógica central para uma ferramenta MCP específica (aider_ai_code, list_models).
      • utils.py: Contém constantes compartilhadas como nomes de modelos padrão.
      • data_types.py: Define modelos Pydantic para estruturas de solicitação/resposta, garantindo validação de dados.
      • logging.py: Configura um formato de registro consistente para saída em console e arquivo.
    • server.py: Orquestra o servidor MCP. Ele inicializa o servidor, registra as ferramentas definidas no diretório atoms/tools, lida com solicitações recebidas, roteia-as para a lógica de ferramenta apropriada e envia respostas de acordo com o protocolo MCP.
    • __main__.py: Fornece o ponto de entrada da interface de linha de comando (aider-mcp-server), analisando argumentos como --editor-model e iniciando o servidor definido em server.py.
    • tests: Contém testes que espelham a estrutura do diretório src, garantindo que cada componente (especialmente átomos) funcione como esperado.