代码仓库代理工具

RepoAgent是一个MCP服务器,它将多个本地代码仓库暴露为工具,供LLM驱动的助手(如Amazon Q Developer)使用,支持代码搜索、文件管理和上下文获取。

  • by RomanGolovko
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 RomanGolovko/local-repo-mcp

使用说明

代理人

MCP服务器,它公开了多个本地代码存储库,作为Amazon Q Developer等LLM助手的工具。

搜索结果和文件内容都标有存储库名称,这样助手就知道每个结果来自哪个存储库。

先决条件

  • .NET 10 SDK

配置

编辑 appsettings.json:

{
  "Agent": {
    "AgentName": "RepoAgent",
    "FileExtensions": [".cs", ".csproj", ".json", ".xml", ".md"],
    "MaxFileSizeKb": 100,
    "Repositories": {
      "backend": "C:\\projects\\backend-api",
      "frontend": "C:\\projects\\frontend-app",
      "shared-lib": "C:\\projects\\shared-library"
    }
  }
}
设置 说明
AgentName 向客户端显示MCP服务器名称
FileExtensions 默认文件类型(每个仓库都可以覆盖)
MaxFileSizeKb 跳过大于此值的文件
Repositories 命名存储库——key是显示名称,value是路径

构建

cd RepoAgent
dotnet publish -c Release -o bin/publish

这将在以下位置生成一个独立的可执行文件 bin/publish/RepoAgent.exe.

MCP工具

工具 参数 说明
ListRepositories -- 列出所有已配置的存储库及其路径
ListFiles repoName? 列出文件,可选择按仓库筛选
GetCodeContext repoName? 返回标记为的完整文件内容 [repoName]
GetFile repoName, relativePath 从命名仓库返回特定文件
SearchCode query, repoName? 在存储库中搜索文本,结果标记为 [repoName]
CreateOrUpdateFile repoName, relativePath, content, confirmed 创建或更新文件(首先要求用户确认)
DeleteFile repoName, relativePath, confirmed 删除文件(首先要求用户确认)

所有跨仓库工具都用仓库名称标记结果:

--- [backend] Controllers/UserController.cs ---
  L15: public async Task<IActionResult> GetUser(int id)

--- [shared-lib] Models/User.cs ---
  L3: public class User

连接到亚马逊Q开发者

1.添加MCP配置

创建或编辑 ~/.aws/amazonq/mcp.json:

{
  "mcpServers": {
    "repo-agent": {
      "command": "C:\\path\\to\\RepoAgent\\bin\\publish\\RepoAgent.exe",
      "args": []
    }
  }
}

注: 直接指向已发布的exe。使用 dotnet run 可能会导致MCP协议错误,因为构建/还原输出会污染stdout。

2.在亚马逊Q聊天中使用

  • “列出所有存储库”
  • “在所有存储库中搜索身份验证逻辑”
  • “从后端仓库获取代码上下文”
  • “查找在所有存储库中定义用户模型的位置”
  • “显示后端仓库中的src/Program.cs”
  • “在后端仓库中创建一个新文件Utils/Helper.cs”
  • “从共享库中删除旧配置文件”