Aider MCP WebSocket Server
A production-ready MCP server that exposes Aider's code editing capabilities via WebSocket, enabling natural language commands to create and edit files with isolated workspaces.
README
Aider MCP WebSocket Server
Quick Start
This is a real MCP (Model Context Protocol) server that lets you control Aider programmatically via WebSocket. It's like having Aider as an API.
# 1. Install
npm install
cp .env.example .env
# Add your OPENAI_API_KEY=sk-... to .env
# 2. Run the MCP server (recommended)
npm run mcp
# 3. Test it
python3 test-debug.py
What you get: Send natural language commands to Aider, get back created/edited files and full responses. Each client gets isolated workspaces. Works with any MCP-compatible client (Claude Desktop, custom apps, etc.).
Overview
A production-ready MCP (Model Context Protocol) wrapper that exposes Aider's functionality over WebSocket, enabling editor plugins and services to interact with Aider programmatically. This project provides two server implementations:
-
src/mcp-server.ts- Real MCP Protocol Server (Recommended)- Implements standard JSON-RPC 2.0 MCP protocol
- Proper MCP methods:
initialize,tools/list,tools/call - Smart completion detection (waits for Aider to finish)
- Compatible with Claude Desktop and other MCP clients
-
src/index.ts- Custom WebSocket Wrapper- Custom protocol with hello/welcome handshake
- Direct stdio pipe to Aider process
- Token-based authentication
Architecture
┌─────────────────┐ JSON-RPC 2.0 ┌─────────────────┐
│ MCP Client │ ◄─────────────────────────► │ MCP Server │
│ (Any MCP app) │ WebSocket │ (mcp-server.ts)│
└─────────────────┘ └────────┬────────┘
│
│ spawn()
▼
┌─────────────────┐
│ Aider Process │
│ (CLI instance) │
└─────────────────┘
Features
- Full MCP Protocol Support: Standard MCP methods and JSON-RPC 2.0
- Multi-tenant Isolation: One Aider child process per client
- Automatic Completion Detection: Waits for Aider to complete tasks
- Isolated Workspaces: Each session gets its own workspace directory
- OpenAI API Integration: Works with your existing OpenAI API key
- Real-time Communication: WebSocket-based bidirectional communication
- Flexible Configuration: Environment variables and CLI arguments
- Structured Logging: JSON logging with Pino
Installation
# Clone and install
git clone <repo-url>
cd aider_mcp
npm install
# Configure environment
cp .env.example .env
# Edit .env and add your OpenAI API key:
# OPENAI_API_KEY=sk-...
Prerequisites
- Node.js 18+
- Aider installed and available in PATH
- OpenAI API key
Usage
Running the Servers
# Run MCP protocol server (recommended)
npm run mcp
# Run custom WebSocket wrapper
npm run dev
# Production build
npm run build && npm start
Testing
# Quick test of MCP server
python3 test-debug.py
# Full test with waiting
python3 test-mcp-wait.py
# JavaScript test client
node test-mcp-client.js
MCP Protocol Communication
Available Tools
The MCP server exposes these tools to clients:
-
aider_command- Execute natural language commands{ "name": "aider_command", "arguments": { "command": "create a REST API with Flask" } } -
aider_add_file- Add files to Aider's context{ "name": "aider_add_file", "arguments": { "filename": "app.py" } } -
aider_run_command- Run shell commands through Aider{ "name": "aider_run_command", "arguments": { "command": "npm test" } }
Connection Flow
// 1. Connect via WebSocket
const ws = new WebSocket('ws://localhost:8080');
// 2. Initialize MCP session
ws.send(JSON.stringify({
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "0.1.0",
"capabilities": {},
"clientInfo": {
"name": "your-client",
"version": "1.0.0"
}
},
"id": 1
}));
// 3. Call tools after initialization
ws.send(JSON.stringify({
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "aider_command",
"arguments": {
"command": "create a Python hello world script"
}
},
"id": 2
}));
Configuration
Environment Variables
# Required
OPENAI_API_KEY=sk-... # Your OpenAI API key
# Optional
PORT=8080 # WebSocket server port (MCP server default)
PORT=7011 # WebSocket server port (custom wrapper default)
AIDER_MODEL=gpt-4o-mini # Default model
WORKSPACES_DIR=./workspaces # Where to create project directories
LOG_LEVEL=info # Logging verbosity (debug|info|warn|error)
VALID_TOKENS=token1,token2 # Auth tokens for custom wrapper (empty = no auth)
CLI Arguments
Override configuration at runtime:
# Custom port and workspace
npm run mcp -- --port 9000
npm run dev -- --port 8080 --workspaces ./custom-workspaces
# Override environment variables (custom wrapper only)
npm run dev -- --set AIDER_MODEL=gpt-4 --set LOG_LEVEL=debug
Integration Examples
Claude Desktop App
Add to Claude Desktop config:
{
"mcpServers": {
"aider": {
"command": "node",
"args": ["/path/to/aider_mcp/dist/mcp-server.js"],
"env": {
"OPENAI_API_KEY": "your-key",
"AIDER_MODEL": "gpt-4o-mini"
}
}
}
}
Custom MCP Client
import { WebSocket } from 'ws';
class AiderMCPClient {
constructor(url = 'ws://localhost:8080') {
this.ws = new WebSocket(url);
this.requestId = 1;
this.setup();
}
async callTool(toolName, args) {
return this.sendRequest('tools/call', {
name: toolName,
arguments: args
});
}
sendRequest(method, params) {
const id = this.requestId++;
this.ws.send(JSON.stringify({
jsonrpc: '2.0',
method,
params,
id
}));
}
}
Project Structure
aider_mcp/
├── src/
│ ├── index.ts # Custom WebSocket wrapper
│ └── mcp-server.ts # Real MCP protocol server
├── workspaces/ # Auto-generated client workspaces
├── test-*.py/js # Various test clients
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
├── .env # Environment configuration
└── README.md # This file
Scripts
npm run mcp- Start MCP protocol server (recommended)npm run dev- Start custom WebSocket wrapper with hot reloadnpm run build- Compile TypeScript to JavaScriptnpm start- Start production servernpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checking
Troubleshooting
Common Issues
-
"ConnectionRefusedError" or "Connect call failed"
- Server isn't running. Start it with
npm run mcp - Wrong port. Check
.envfile (MCP default: 8080, Custom default: 7011)
- Server isn't running. Start it with
-
"Aider not found"
# Install Aider pip install aider-chat # Verify installation which aider -
"No API key" or Aider errors
- Add your OpenAI API key to
.env:
OPENAI_API_KEY=sk-proj-... - Add your OpenAI API key to
-
Server returns too quickly / incomplete responses
- Fixed in MCP server - waits for Aider to complete (3-second silence detection)
-
"Tool execution timeout"
- Normal for complex tasks
- The MCP server waits as long as needed
Debug Mode
# Run with debug logging
LOG_LEVEL=debug npm run mcp
Checking Results
Files created by Aider are stored in workspace directories:
# List all workspaces
ls -la workspaces/
# Check latest workspace
ls -la workspaces/mcp-*/
# View created files
cat workspaces/mcp-*/your-file.py
Security Considerations
- Isolated Workspaces: Each client session gets its own directory
- Authentication: Custom wrapper supports token-based auth via
VALID_TOKENS - Git Disabled: Runs with
--no-gitby default for safety - API Key Security: Never commit
.envfile - Production: Consider running in Docker for additional isolation
Performance Notes
- First request to Aider may take longer (model loading)
- Subsequent requests are faster
- The server maintains one Aider process per session
- Workspace cleanup is manual (delete old directories as needed)
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。