使用说明
[!注意] 这是一个示例项目,如果没有完整的安全审查,不应该在生产中使用。
MCP GitHub项目经理
O MCP GitHub项目经理 是一个服务器 模型上下文协议(MCP) 它允许您与私有的 GitHub 存储库进行交互,就像它是一个项目信息数据库一样。它被设计为人工智能和自动化代理使用,直接在 GitHub 上阅读、编写和管理项目的文档、配置和其他重要数据。
该服务器将您的存储库转换为结构化的真相来源,允许自动化系统以可编程和安全的方式访问和修改信息。
主要功能
- 读取和写入文件访问和修改存储库中的文件(Markdown,JSON,YAML等)。
- 配置管理读取并更新文件
config.json项目元数据中心。 - 内容搜索: 搜索仓库文件中的文本 。
- 目录结构: 是否递归列出文件夹内容。
- 安全认证使用 GitHub 个人访问令牌 (PAT) 进行身份验证,以确保访问受到限制。
- 原子操作所有写入操作都是作为 Git 中的提交进行的,提供完整的更改历史记录。
使用案例
- 文档自动化保持项目文档(指南,教程,架构)始终是最新的。
- 知识 管理集中架构决策(ADR),最佳实践指南和团队信息。
- 设置同步在中央位置管理环境和项目设置。
- 自动报告: 从存储在仓库中的数据生成项目状态报告。
- 与 AI 代理集成允许 AI 代理访问项目上下文以回答问题或执行任务。
多项目架构
此 MCP 现在支持使用集中式内存存储库和单个安装管理多个项目。 命名空间.
如何运作
- 全局设置您可以设置一个单一的中央存储库,以存储所有文档。
- 本地设置在您的每个工作项目中,您创建一个文件
.mcp-config.json请定义umnamespace这个项目的文件夹。 - 操作所有操作(读取、写入等)都会自动重定向到中央存储库中的正确文件夹。
📚 阅读更多: docs/NAMESPACE_ARCHITECTURE.md 新架构的完整指南。
结构示例
内存存储库(memoria-central):
memoria-central/
├── meu-app-react/
│ └── docs/
└── meu-servico-node/
└── docs/
您的项目(meu-app-react):
meu-app-react/
├── .mcp-config.json // -> { "namespace": "meu-app-react" }
└── src/
CLI: mcp-github
添加了一个新的命令行工具,以方便配置:
mcp-github init设置全局内存仓库。mcp-github init-project: 在您的工程中创建本地配置文件 。mcp-github config: 显示当前配置 。
开始
先决条件
- Node.js版本 18 或更高
- GitHub 仓库: 用作后端的私有仓库 。
- **个人访问令牌(PAT)**GitHub 代币,拥有 GitHub 权限
repo进入仓库。
🔑 立即创建您的令牌: 点击此处生成具有正确范围的令牌
📚 有关代币的更多详细信息,请参阅 docs/TOKEN_GENERATION.md
配置
-
克隆 MCP 服务器仓库( 此工程) :
git clone <URL_DESTE_REPOSITORIO> cd mcp-github-project-manager -
安装依赖关系 :
npm install -
设置环境变量 :
创建文件
.env在项目的根目录中,复制示例.env.example:cp .env.example .env编辑文件
.env您的信息:# GitHub Configuration GITHUB_TOKEN=ghp_SEU_TOKEN_DE_ACESSO_PESSOAL GITHUB_OWNER=seu_nome_de_usuario_ou_organizacao GITHUB_REPO=nome_do_seu_repositorio_de_projeto # MCP Server Configuration (opcional) MCP_PORT=3000 MCP_HOST=localhost -
编译o código TypeScript:
npm run build -
启动或MCP服务器:
npm start服务器现在正在运行,并准备通过接收 MCP 请求
stdio.
可用工具
服务器展示了一组工具来与 GitHub 仓库交互。
| 工具 | 描述 | 参数 |
|---|---|---|
read_file 读取特定文件的内容。 |
path: string |
|
write_file 写入或更新文件的内容。 |
path: string, content: string, message: string |
|
create_file 在仓库中创建一个新文件。 path: string, content: string, message: string |
||
delete_file 从仓库中删除一个文件。 path: string, message: string |
||
list_files 在目录中列出文件和文件夹。 path: string, recursive: boolean (可选) |
||
search_content 搜索文件中的文本字符串。 |
query: string, path: string (可选) |
|
get_project_info 返回文件的内容 config.json. |
Nenhum | |
update_config 更新文件中的密钥/值对 config.json. |
key: string, value: any |
|
init_project 通过分析一个存储库来初始化内存结构。 target_owner: string (可选), target_repo: string (可选) |
使用范例
读取文件
命令 :
{
"tool": "read_file",
"arguments": {
"path": "docs/ARCHITECTURE.md"
}
}
预期结果:
文件内容 docs/ARCHITECTURE.md 就像一个文本字符串。
创建新标签
命令 :
{
"tool": "create_file",
"arguments": {
"path": "guides/new-feature-workflow.md",
"content": "# Fluxo de Trabalho para Novas Features\n\n1. Crie uma branch a partir da `main`.\n2. Desenvolva a feature.\n3. Abra um Pull Request.",
"message": "docs: add new feature workflow guide"
}
}
预期结果: 包含文件创建提交链接的成功消息 。
更新工程版本
命令 :
{
"tool": "update_config",
"arguments": {
"key": "project.version",
"value": "1.1.0"
}
}
预期结果:
一条消息,确认设置已更新,并且 config.json 存储库将反映新版本。
使用启动工具(init_project)
要根据现有项目自动配置内存存储库,请使用 init_project.
命令 :
{
"tool": "init_project",
"arguments": {
"target_owner": "nome_do_usuario_do_projeto",
"target_repo": "nome_do_repositorio_do_projeto"
}
}
预期结果: JSON 报告详细说明检测到的项目类型、技术以及自动创建的所有文档和配置文件的列表。
列出所有架构文档
命令 :
{
"tool": "list_files",
"arguments": {
"path": "decisions/adr",
"recursive": true
}
}
预期结果:
目录内所有文件和文件夹的 JSON 列表 decisions/adr.
指南和资源
📚 完整文档
- PROMPTS_GUIDE.md - 完整的提示指南和使用AI工具的示例
- 集成_AI_TOOLS.md - 与Claude Desktop,GitHub Copilot,Cursor和其他工具集成的详细说明
- 集成_指南.md - 技术集成指南和高级用例
- example-repo-structure.md - 项目仓库的推荐结构
🎯 快速开始
- 初学者阅读 QUICKSTART.md 5分钟内设置
- 开发者: 查看 PROMPTS_GUIDE.md 学习如何使用您最喜爱的人工智能工具
- 积分师: 查看 集成_AI_TOOLS.md 使用 Claude Desktop、Copilot 或 Cursor 进行配置
项目仓库结构
为了充分利用此 MCP,我们建议以结构化的方式组织您的项目仓库。我们提供了一个示例指南 example-repo-structure.md 详细说明推荐的文件夹和文件结构。
安全
- 令牌范围: 创建所需最小范围的个人访问令牌 (
repo对于私人存储库来说就足够了)。 - 不要暴露令牌: 从不提交文件
.env或者展示你的GITHUB_TOKEN公众。 - 路径验证服务器没有阻止目录扫描的机制 (
../).在受控环境中小心使用。
贡献
欢迎捐款!随意打开 问题 e 拉取请求 为了改善这个项目。
许可证
这个项目是根据许可证 Licença MIT.
