用于将AI编码工作卸载到Aider的模型上下文协议服务器,以提高开发效率和灵活性。
此服务器允许Claude Code将AI编码任务卸载到Aider,即最佳开源AI编码助手。通过将某些编码任务委托给Aider,我们可以降低成本,控制我们的编码模型,并以更协调的方式操作Claude Code来审查和修订代码。
git clone https://github.com/disler/aider-mcp-server.git
uv sync
cp .env.sample .env
.env文件中配置你的API密钥(或使用mcpServers的"env"部分),以便在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
...参见.env.sample获取更多信息
.mcp.json复制并填充到项目根目录,并更新--directory指向此项目的根目录,以及--current-working-dir指向你的项目根目录。{
"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>",
...参见.env.sample获取更多信息
}
}
}
}
使用gemini-2.5-pro-exp-03-25进行测试
运行所有测试:
uv run pytest
运行特定测试:
# 列出模型测试
uv run pytest src/aider_mcp_server/tests/atoms/tools/test_aider_list_models.py
# AI编码测试
uv run pytest src/aider_mcp_server/tests/atoms/tools/test_aider_ai_code.py
注意:AI编码测试需要Gemini模型的有效API密钥。确保在运行测试之前将其设置在你的.env文件中。
gemini-2.5-pro-exp-03-25claude 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>"
gemini-2.5-pro-preview-0-03-25claude 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>"
quasar-alphaclaude 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>"
llama4-maverick-instruct-basicclaude 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>"
此MCP服务器提供以下功能:
将AI编码任务卸载到Aider:
列出可用模型:
此MCP服务器公开了以下工具:
aider_ai_code此工具允许您基于提供的提示和指定的文件运行Aider执行AI编码任务。
参数:
ai_coding_prompt(字符串,必需):AI编码任务的自然语言指令。relative_editable_files(字符串列表,必需):Aider被允许修改的文件路径列表(相对于current_working_dir)。如果文件不存在,将会创建。relative_readonly_files(字符串列表,可选):Aider可以读取但不能修改的文件路径列表(相对于current_working_dir)。默认为空列表[]。model(字符串,可选):Aider应使用的生成代码的主要AI模型。默认为"gemini/gemini-2.5-pro-exp-03-25"。您可以使用list_models工具查找其他可用模型。editor_model(字符串,可选):Aider应使用的编辑/细化代码的AI模型,特别是在使用架构师模式时。如果没有提供,主要model可能会根据Aider的内部逻辑使用。默认为None。示例用法(在MCP请求内):
Claude Code提示:
使用Aider AI Code工具:重构calculator.py中的calculate_sum函数以处理潜在的TypeError异常。
结果:
{
"name": "aider_ai_code",
"parameters": {
"ai_coding_prompt": "重构calculator.py中的calculate_sum函数以处理潜在的TypeError异常。",
"relative_editable_files": ["src/calculator.py"],
"relative_readonly_files": ["docs/requirements.txt"],
"model": "openai/gpt-4o"
}
}
返回值:
success:布尔值 - 操作是否成功。diff:字符串 - 对文件所做的更改的差异。list_models此工具列出由Aider支持且与给定子字符串匹配的AI模型。
参数:
substring(字符串,必需):要在可用模型名称中搜索的子字符串。示例用法(在MCP请求内):
Claude Code提示:
使用Aider List Models工具:列出包含子字符串“gemini”的模型。
结果:
{
"name": "list_models",
"parameters": {
"substring": "gemini"
}
}
返回值:
["gemini/gemini-1.5-flash", "gemini/gemini-1.5-pro", "gemini/gemini-pro"]服务器结构如下:
所有组件都经过彻底测试以确保可靠性。
项目组织成以下主要目录和文件:
.
├── ai_docs # 与AI模型和示例相关的文档
│ ├── just-prompt-example-mcp-server.xml
│ └── programmable-aider-documentation.md
├── pyproject.toml # 项目元数据和依赖项
├── README.md # 此文件
├── specs # 规范文档
│ └── init-aider-mcp-exp.md
├── src # 源代码目录
│ └── aider_mcp_server # 服务器的主要包
│ ├── __init__.py # 包初始化器
│ ├── __main__.py # 服务器可执行程序的主入口点
│ ├── atoms # 核心、可重用组件(纯函数)
│ │ ├── __init__.py
│ │ ├── data_types.py # 数据结构的Pydantic模型
│ │ ├── logging.py # 自定义日志设置
│ │ ├── tools # 单个工具的实现
│ │ │ ├── __init__.py
│ │ │ ├── aider_ai_code.py # aider_ai_code工具的逻辑
│ │ │ └── aider_list_models.py # list_models工具的逻辑
│ │ └── utils.py # 工具函数和常量(如默认模型)
│ ├── server.py # MCP服务器逻辑,工具注册,请求处理
│ └── tests # 单元和集成测试
│ ├── __init__.py
│ └── atoms # 原子层的测试
│ ├── __init__.py
│ ├── test_logging.py # 日志测试
│ └── tools # 工具的测试
│ ├── __init__.py
│ ├── test_aider_ai_code.py # AI编码工具的测试
│ └── test_aider_list_models.py # 模型列表工具的测试
src/aider_mcp_server:包含主要应用程序代码。
atoms:持有基本构建模块。这些设计为纯函数或具有最小依赖性的简单类。
tools:这里的每个文件实现了特定MCP工具的核心逻辑(aider_ai_code,list_models)。utils.py:包含共享常量,如默认模型名称。data_types.py:定义了用于请求/响应结构的Pydantic模型,确保数据验证。logging.py:设置了一致的日志格式,用于控制台和文件输出。server.py:编排MCP服务器。它初始化服务器,注册在atoms/tools目录中定义的工具,处理传入请求,将它们路由到适当的工具逻辑,并根据MCP协议发送回响应。__main__.py:提供了命令行界面入口点(aider-mcp-server),解析如--editor-model等参数,并启动在server.py中定义的服务器。tests:包含与src目录结构相映射的测试,确保每个组件(尤其是原子)按预期工作。