返回市场
MCP-代码库浏览器

MCP-代码库浏览器

作者:Tomobobo7102 星标更新:2025-11-01

项目介绍

MCP 代码库浏览器

基于Python的模型上下文协议(MCP)服务器,允许Claude完全访问您的代码库,使其能够读取、写入、创建、删除、编辑和管理文件及目录。

该服务器是在Claude 3.7 Sonnet的帮助下创建的。

我试用了其他一些MCP工具,发现它们依赖过多或过于复杂,不是我想要或需要的。所以我尝试创建一个简单易设置的MCP工具,让Claude(也许有一天还有其他AI)可以随意操作我的电脑上的文件。

目前它并不非常先进,但计划就是保持其简单性。我已经与Claude进行了大量的交流,感觉自己了解了他的行为模式,这个工具的设计方式不会违背Claude的行为习惯。

MCP 服务器

要求

  • Windows
  • Python 3.8 或更高版本
  • 带有Pro订阅的Claude桌面应用

安装

快速安装

运行setup.bat以自动执行以下操作:

  • 创建Python虚拟环境
  • 安装所需依赖项
  • 创建项目目录
  • 显示Claude桌面配置说明

手动安装

创建Python虚拟环境:

python -m venv mcp_env
mcp_env\Scripts\activate

安装依赖项:

pip install mcp pathlib glob2 diff_match_patch

创建名为Project的目录

配置Claude桌面: 打开claude_desktop_config.json 添加配置(根据需要调整路径):

{
  "mcpServers": {
    "MCP_Codebase_Browser": {
      "command": "C:\\path\\to\\your\\mcp_env\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\your\\codebase_server.py"]
    }
  }
}

使用方法

完成设置,确保在Claude桌面的claude_desktop_config.json中添加自定义配置 将整个代码库放入Project目录 重启Claude桌面 在聊天输入框右下角查找锤子图标 当您请求时,Claude可以执行各种代码库任务 当Claude尝试使用工具时,他会先询问许可

考虑以下示例:

  • "列出项目中的所有文件"
  • "读取src/main.py的内容"
  • "创建一个名为utils.js的新文件并将我们的实用程序移至此处"
  • "搜索代码库中所有使用'import'的地方"
  • "编辑第53行并增加字体大小"
  • "显示所有包含'dogs'的代码块"
  • "将文件X重命名为Y"
  • "创建一个名为'models'的新目录"
  • "在代码中搜索'function'"
  • "备份我的代码库,命名为'my_project_backup'"
  • "列出我们已备份的项目"
  • "恢复'my_project_backup'"

安全特性

  • 文件大小限制为1MB,防止加载大文件
  • 通过抽象实际文件路径,Claude应被限制在代码库路径内
  • 除非他知道完整的文件路径,否则Claude无法删除备份

警告

此工具将允许Claude更改您的文件。他可能会破坏某些东西。

哦不

此项目正在进行中,我不对因使用此工具而丢失的数据负责。建议经常让Claude进行备份。

故障排除

  • 如果Claude没有显示锤子图标,请检查是否已重启Claude桌面
  • 检查Claude桌面日志:%AppData%\Claude\logs\mcp*.log
  • 确保配置中的路径使用双反斜杠(\)
  • 仅在Claude和Windows上进行了测试

使用注意事项

  • 我选择将所有内容放入一个工具中,因此您不必每次都点击“允许工具”,但这会立即赋予他完全自由,这可能是好事也可能是坏事。
  • 由于几乎没有限制,Claude可以非常放纵地使用此工具。他会全力以赴,并且只关注手头的任务。请注意,他不可避免地会改变你不希望他改变的东西。
  • 主要而言,该工具到目前为止在JavaScript和Java项目中表现良好,但它应该很容易扩展到其他语言。
  • 有时会出现语法错误,例如多了一个括号之类的简单问题,检查您的代码,这种情况并不常见。
  • 在许多情况下,返回给Claude的内容没有限制,这意味着在大型文件上有高上下文使用,尽管我试图将搜索结果限制为5个结果。

设计思路

我尽量拥抱并利用Claude的行为。我使用过的其他工具可能试图通过错误消息来“教导”Claude。例如,我见过一个文本编辑器工具试图设计一种机制来阻止Claude对文件进行后续编辑。在我的经验中,Claude在计算行号方面很糟糕。如果是行编辑,他会插入到他没有计算出最近编辑更改的行中,所以他很容易破坏文件。显然,文本编辑器工具的开发者得出了与我相同的结论。文本编辑工具的解决方案是制作一个基于校验和的谜题,Claude必须解决。在我的经验中,Claude通常会在工具报告“成功”或“失败”后停止关注。谜题的设计试图纠正Claude的行为,但如果你经常与Claude打交道,你会发现虽然有时你可以通过足够的上下文学习来打破他的坏习惯,但很多时候成功的道路非常艰难。

我的意思是,与其试图对抗Claude的一贯不良行为,不如利用他的良好行为。他只是不能通过这些工具学习,所以我不试图教他或训练他以任何特殊的方式使用工具。对于文本编辑的例子,我发现Claude有一种不可思议的能力,能够保持对代码的准确心理构建。这种无形构建中的代码由Claude很好地维护。为了利用这一优势,我试图设计工具,只需让Claude写出他认为需要修补的内容,然后工具将匹配并替换为他的替代代码,大多数时候这都能无误地工作,因为Claude很好地跟踪了他正在处理的代码的当前状态,所以匹配几乎总是存在,而无需Claude多次阅读文件。我们不讨论行号,因为我们知道Claude在计算准确行号方面很差。没有故意为Claude设置陷阱。这为我们提供了极小的工具使用失败。

许可证

MIT许可证