MCP实现-真实的GitHub API和文件系统
模型上下文协议(MCP)的实现 真实 GitHub API和文件系统支持,具有基于任务的访问模式模型和基于角色的权限。
人物角色
- 陈(eng01) -工程学
- GitHub:读写 - 文件系统:工程文件夹
- 普里亚·奈尔(it01) -它
- GitHub:只读 - 文件系统:IT文件夹
- 马可·迪亚兹(sales01) -销售
- GitHub:无访问权限 - 文件系统:销售文件夹
任务映射
系统将提示映射到任务:
- 功能开发 → 工程学(eng01)
- 生产支持 → 工程学(eng01)
- 事件/票务解决方案 → IT(it01)
- 基础设施维护 → IT(it01)
- 潜在客户开发 → 销售额(sales01)
- 提案开发 → 销售额(sales01)
设置
先决条件
- 码头工人:确保Docker已安装并正在运行
docker --version- 拉取GitHub MCP服务器Docker镜像:
docker pull ghcr.io/github/github-mcp-server安装
- 安装依赖项:
pip install -r requirements.txt- 创建一个
.env使用您的GitHub令牌的文件:
GITHUB_PERSONAL_ACCESS_TOKEN=your_github_personal_access_token
# Or use GITHUB_TOKEN for direct API calls (fallback)
GITHUB_TOKEN=your_github_token要创建GitHub个人访问令牌:
- 转到GitHub设置→ 开发者设置→ 个人访问令牌→ 代币(经典)
- 使用生成新令牌
repo完全访问范围 - 复制令牌并将其添加到您的
.env文件
- 运行应用程序:
python3 main.py基于Docker的GitHub MCP服务器
应用程序现在使用 基于Docker的GitHub MCP服务器 默认情况下。这提供了:
- GitHub MCP服务器官方实现
- 更好的工具覆盖率和可靠性
- IT角色的自动只读模式(it01)
MCP服务器在Docker容器中运行,并使用MCP(模型上下文协议)JSON-RPC协议通过stdio进行通信。
备注:启动应用程序之前,请确保Docker正在运行。第一次运行将拉取Docker映像(如果还不可用)。
用法
交互式CLI
- 出现提示时选择角色
- 输入提示进行处理
- 该系统将:
- 将提示映射到任务 - 确定所需角色 - 检查权限 - 执行工具调用(GitHub和/或文件系统)
示例提示
工程(eng01):
list_repositories-列出你的GitHub仓库read file-从GitHub读取文件(将提示输入owner/repo/path)create file-在存储库中创建新功能fix bug-修复代码中的错误raise ticket/file complaint-提出一个需要IT解决的问题
IT(it01):
list_repositories-列表存储库(只读)read file-从IT文件夹读取文件list files-列出IT文件夹中的文件read ticket-读取最近的工单并显示详细信息read ticket TKT-20250115143022-eng01-读取特定的票update ticket/modify ticket-读取并更新最新工单的内容close ticket/resolve ticket-更改票证状态以解决并关闭它list tickets-显示所有门票list open tickets-显示未解决的票证list resolved tickets-显示已解决的票证
销售额(sales01):
list files-列出Sales文件夹中的文件read file-从Sales文件夹读取文件create file-在Sales文件夹中创建文件raise ticket/file complaint-提出一个需要IT解决的问题
建筑
基于任务的访问模式模型
- 提示→ Task:使用关键字匹配将用户提示映射到任务
- Task → 角色:将任务映射到所需的角色
- 角色→ 权限:根据角色确定访问权限
- 工具调用:执行GitHub和/或文件系统操作
- 结果:返回操作结果或数据检索
权限模型
- GitHub:
- 工程:读写(需要GITHUB_TOKEN) - IT:只读(需要GITHUB_TOKEN) - 销售:无访问权限
- 文件系统:
- 每个角色只能访问其特定文件夹 - 工程: persona_data/Engineering/ - 它: persona_data/IT/ - 出售: persona_data/Sales/
GitHub API
- 列出存储库:
GET /user/repos-列出经过身份验证的用户的存储库 - 获取文件:
GET /repos/{owner}/{repo}/contents/{path}-读取文件内容 - 创建文件:
PUT /repos/{owner}/{repo}/contents/{path}-创建/更新文件
所有操作都需要 GITHUB_TOKEN 环境变量。
文件系统
- 列出文件:列出角色特定文件夹中的文件
- 读取文件:从角色文件夹读取文件内容
- 写入文件:在角色文件夹中创建/更新文件
