RepoPilot MCP Server
Enables interaction with indexed Python repositories through MCP tools for repository map, symbol search, file reading, and reference lookup.
README
RepoPilot
RepoPilot is a verifiable code agent for Python repositories. It turns an issue into an evidence-backed plan, optionally asks an OpenAI-compatible model for a unified diff, and runs the reviewed patch in an isolated workspace. Every retrieval, tool call, patch, and test result is retained as a compact audit trace.
Why this is not another chat-with-your-code demo
- AST-aware indexing: extracts classes, functions, methods, signatures, imports, and call edges instead of splitting source into arbitrary chunks.
- Hybrid retrieval: combines issue-token relevance with symbol names, file paths, and call-graph evidence.
- Bounded workflow: retrieval, planning, human review, patch validation, isolated execution, and test verification have explicit states.
- Standard tools: repository map, symbol search, file reads, and reference lookup are exposed through the official MCP Python SDK.
- Guarded execution: patch size, paths, file types, and number of changed files are validated before a copy of the repository is modified.
- Objective evaluation: a JSONL benchmark runner reports Recall@K and mean reciprocal rank for related-file retrieval.
Architecture
flowchart LR
UI[Web console] --> API[FastAPI]
API --> IDX[Python AST indexer]
IDX --> STORE[Persistent JSON indexes]
API --> RET[Hybrid retriever]
RET --> PLAN[Bounded planner]
PLAN --> LLM[OpenAI-compatible LLM]
PLAN --> MCP[MCP code tools]
LLM --> REVIEW[Human patch review]
REVIEW --> POLICY[Patch policy]
POLICY --> WS[Isolated workspace]
WS --> TEST[Fixed pytest runner]
TEST --> TRACE[Auditable task trace]
The implementation deliberately separates read-only code tools from patch execution. An MCP client can inspect code without receiving a general-purpose shell tool.
Quick start
cd D:\ai-projects\repopilot
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
Copy-Item .env.example .env
.\.venv\Scripts\python.exe -m repopilot
Open http://127.0.0.1:8765.
The repository includes a deliberately broken demo at
examples/buggy_calculator. Index that directory, then use this issue:
divide should raise a clear ValueError when right is zero
If no model is running, create the plan and paste this reviewed patch into the execution panel:
diff --git a/calculator.py b/calculator.py
--- a/calculator.py
+++ b/calculator.py
@@ -1,2 +1,4 @@
def divide(left: float, right: float) -> float:
+ if right == 0:
+ raise ValueError("right must not be zero")
return left / right
The patch is applied only to workspaces/<task-id>; the indexed source
repository is not modified.
Model configuration
RepoPilot uses the OpenAI-compatible /chat/completions API. The defaults target
an Ollama installation:
REPOPILOT_LLM_BASE_URL=http://127.0.0.1:11434/v1
REPOPILOT_LLM_MODEL=qwen2.5-coder:7b
REPOPILOT_LLM_API_KEY=ollama
Planning has a deterministic fallback when the model is offline. Patch generation requires a configured model because silently inventing a patch would make the demo impossible to trust.
MCP server
Start the stdio MCP server:
.\.venv\Scripts\repopilot-mcp.exe
Tools:
repository_mapsearch_symbolread_filefind_references
Each tool requires the ID of a previously indexed repository.
Evaluation
After indexing the demo repository, copy its ID from the UI or
GET /api/repositories and run:
.\.venv\Scripts\repopilot-eval.exe <repository-id> examples\benchmark.jsonl --k 5
Benchmark cases use one JSON object per line:
{"id":"case-1","issue":"describe the failure","expected_files":["module.py"]}
The report includes per-case retrieved files, Recall@K, reciprocal rank, mean Recall@K, and MRR. This makes retrieval changes measurable and suitable for ablation experiments.
API overview
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/api/health |
Service health |
POST |
/api/repositories |
Index a local Python repository |
GET |
/api/repositories |
List indexed repositories |
POST |
/api/repositories/{id}/search |
Search symbols |
POST |
/api/repositories/{id}/tasks |
Analyze an issue and create a plan |
POST |
/api/tasks/{id}/generate-patch |
Generate a policy-checked diff |
POST |
/api/tasks/{id}/execute |
Execute a reviewed patch and tests |
GET |
/api/tasks/{id} |
Read the plan, trace, diff, and test result |
Interactive API documentation is available at http://127.0.0.1:8765/docs.
Safety model
The local executor is intentionally constrained:
- source repositories are copied before modification;
- patch paths must remain inside the workspace;
- at most five text/source files and 100 KB may be changed;
- test execution is fixed to
python -m pytest -q; - subprocesses have a timeout and capped captured output;
- network proxy variables and unrelated environment variables are not passed;
- task events store concise action summaries, not private chain-of-thought.
The local executor is a development safety boundary, not a hostile-code sandbox. Run untrusted repositories only inside a disposable VM or container. See SECURITY.md.
Development
.\.venv\Scripts\python.exe -m pytest --cov=repopilot --cov-report=term-missing
The Git history is organized as reviewable implementation milestones:
- service scaffold;
- AST indexing and retrieval;
- bounded planning and MCP tools;
- guarded patch execution;
- evaluation, UI, deployment, and documentation.
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。