GitHub API和文件系统访问控制协议

一个基于GitHub API和文件系统的模型上下文协议实现,提供基于角色的任务访问模式和权限控制。

  • by vanivamshi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vanivamshi/LLM-agent-mcp

使用说明

MCP实现-真实的GitHub API和文件系统

模型上下文协议(MCP)的实现 真实 GitHub API和文件系统支持,具有基于任务的访问模式模型和基于角色的权限。

人物角色

  1. 陈(eng01) -工程学

    • GitHub:读写
    • 文件系统:工程文件夹
  2. 普里亚·奈尔(it01) -它

    • GitHub:只读
    • 文件系统:IT文件夹
  3. 马可·迪亚兹(sales01) -销售

    • GitHub:无访问权限
    • 文件系统:销售文件夹

任务映射

系统将提示映射到任务:

  • 功能开发 → 工程学(eng01)
  • 生产支持 → 工程学(eng01)
  • 事件/票务解决方案 → IT(it01)
  • 基础设施维护 → IT(it01)
  • 潜在客户开发 → 销售额(sales01)
  • 提案开发 → 销售额(sales01)

设置

先决条件

  1. 码头工人:确保Docker已安装并正在运行

    docker --version
    
  2. 拉取GitHub MCP服务器Docker镜像:

    docker pull ghcr.io/github/github-mcp-server
    

安装

  1. 安装依赖项:
pip install -r requirements.txt
  1. 创建一个 .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 文件
  1. 运行应用程序:
python3 main.py

基于Docker的GitHub MCP服务器

应用程序现在使用 基于Docker的GitHub MCP服务器 默认情况下。这提供了:

  • GitHub MCP服务器官方实现
  • 更好的工具覆盖率和可靠性
  • IT角色的自动只读模式(it01)

MCP服务器在Docker容器中运行,并使用MCP(模型上下文协议)JSON-RPC协议通过stdio进行通信。

备注:启动应用程序之前,请确保Docker正在运行。第一次运行将拉取Docker映像(如果还不可用)。

用法

交互式CLI

  1. 出现提示时选择角色
  2. 输入提示进行处理
  3. 该系统将:
    • 将提示映射到任务
    • 确定所需角色
    • 检查权限
    • 执行工具调用(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解决的问题

建筑

基于任务的访问模式模型

  1. 提示→ Task:使用关键字匹配将用户提示映射到任务
  2. Task → 角色:将任务映射到所需的角色
  3. 角色→ 权限:根据角色确定访问权限
  4. 工具调用:执行GitHub和/或文件系统操作
  5. 结果:返回操作结果或数据检索

权限模型

  • 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 环境变量。

文件系统

  • 列出文件:列出角色特定文件夹中的文件
  • 读取文件:从角色文件夹读取文件内容
  • 写入文件:在角色文件夹中创建/更新文件