Git仓库内容访问服务

一个将Git仓库内容暴露给大型语言模型的服务器,支持搜索和获取文件内容,兼容OpenAI的ChatGPT深度研究功能。

  • by erik777
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 erik777/code-mcp-server

使用说明

MCP服务器代码

一个模型上下文协议(MCP)服务器,将Git存储库内容暴露给大型语言模型,使用官方 @modelcontextprotocol/sdk.

特性

  • 搜索:搜索资源并返回包含文本片段的结构化结果
  • 获取:使用元数据检索特定资源(文件)的详细结构化内容
  • OpenAI兼容:使用标准化 search 和 fetch ChatGPT深度研究兼容性的工具名称
  • 安全:路径遍历保护,以保持对存储库的访问
  • 演出:跳过常用构建目录(node_modules、.git、target、build、dist)

安装

npm install

配置

服务器按照以下优先级顺序加载环境变量:

  1. .env.local (最高优先级,优先考虑当地发展)
  2. .env (默认设置,可以提交到git)
  3. 内置默认值 (代码中的回退值)

设置

  1. 复制 env.example 向 .env 对于默认设置:

    cp env.example .env
    
  2. 为了地方发展,创造 .env.local 要覆盖默认值,请执行以下操作:

    # .env.local (not committed to git)
    PORT=3131
    REPO_PATH=repo
    

此模式允许您:

  • 保留默认设置 .env (致力于git)
  • 在本地覆盖 .env.local (被git忽略)
  • 共享一致的默认值,同时允许个人覆盖

用法

开发模式(本地存储库)

要针对本地oc-sc存储库运行服务器,请执行以下操作:

npm run dev

这将启动MCP服务器 REPO_PATH=repo.

测试

要测试服务器功能,请执行以下操作:

npm test

这将创建一个测试存储库,并验证所有工具是否正常工作。

自定义存储库

要与其他存储库一起使用:

REPO_PATH=/path/to/your/repo node index.js

OpenAI集成

此服务器旨在与OpenAI的自定义MCP连接器配合使用。以下是如何连接它:

1.启动服务器

npm run dev

服务器将输出:

🚀 Starting MCP Git Gateway Server
📂 Repository path: /home/user/dev/myrepo
🌐 Port: 3131
🎉 MCP Git Gateway Server started successfully
📡 Server is listening on http://localhost:3131
🔗 MCP endpoint: http://localhost:3131/mcp
💊 Health check: http://localhost:3131/health

2.通过OpenAI ChatGPT连接

  1. 转到ChatGPT并查找MCP连接选项
  2. 使用以下设置添加新的MCP服务器:
    • 服务器URL: http://localhost:3131/mcp
    • 方法:HTTP POST
    • 内容类型: application/json

3.可用工具

OpenAI ChatGPT兼容性

此MCP服务器使用标准化的工具名称(search 和 fetch)这是OpenAI的ChatGPT深度研究功能特别认可的。这些工具名称是与ChatGPT的MCP连接器正确集成所必需的。

一旦连接,ChatGPT将可以访问这些工具:

search

使用提供的查询字符串搜索资源,并返回匹配的结果。

{
  "query": "function name"
}

返回一个结构化对象:

  • results:匹配资源数组
    • id:资源ID(文件路径)
    • title:根据文件名生成标题
    • text:显示匹配行的文本片段
    • url:null(用于本地文件)

fetch

检索由给定ID(文件路径)标识的特定资源的详细内容。

{
  "id": "relative/path/to/file.js"
}

返回一个结构化对象:

  • id:资源ID(文件路径)
  • title:根据文件名生成标题
  • text:完整的文件内容
  • url:null(用于本地文件)
  • metadata:文件信息(大小、修改日期、扩展名)

技术细节

  • 协议:使用官方MCP SDK完全符合规范
  • 运输:使用Express.js服务器的HTTP POST/GET
  • 端口:可通过配置 PORT 环境变量(默认值:3131)
  • 端点:
    • /mcp -主MCP协议端点
    • /health -健康检查端点
  • 支持的MCP方法:
    • initialize -协议握手和能力协商
    • notifications/initialized -客户准备就绪通知
    • tools/list -列出可用工具
    • tools/call -执行工具(搜索、获取)
  • 安全:路径遍历保护确保访问保持在存储库范围内
  • 演出:智能目录筛选,避免大型构建目录
  • 错误处理:使用描述性消息进行全面的错误处理

故障排除

服务器无法启动

  • 确保 REPO_PATH 指向有效的Git存储库
  • 检查Node.js版本是否支持MCP SDK

OpenAI连接问题

  • 验证服务器启动时没有错误
  • 检查OpenAI设置中的命令路径和参数是否正确
  • 确保环境变量设置正确

找不到文件

  • 验证 REPO_PATH 是正确的
  • 检查存储库权限
  • 确保目录不为空

发展

服务器包括全面的日志记录,以帮助调试任何问题:

# Enable verbose logging
DEBUG=* npm run dev

依赖项

  • @modelcontextprotocol/sdk:官方MCP SDK
  • simple-git:Git存储库操作
  • dotenv:环境变量加载
  • fs:文件系统操作
  • path:路径操作实用程序