GitHub MCP服务器

一个基于FastAPI的轻量级GitHub MCP服务器,为VS Code Copilot或任何MCP兼容客户端提供GitHub仓库操作功能。

  • by amitsingh7668
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 amitsingh7668/github-mcpserver

使用说明

🧩 FastAPI GitHub MCP服务器

轻量级 基于FastAPI的MCP(模型上下文协议)服务器 它将GitHub存储库操作暴露给 VS代码副本 或任何MCP兼容客户端。

此服务器允许您:

  • 🔍 列出回购中的所有分支
  • 🌿 创建新分支
  • 🔀 打开新的拉取请求(PR)
  • 🧾 查看和审查现有PR
  • ✅ 合并PR
  • 📂 查看存储库文件内容

所有这些都通过本地REST API,您可以注册为 MCP端点 VS代码内部。


🚀 特性

操作 端点 方法
健康检查 /health 得到
MCP清单 /mcp 得到
列出分支 /repos/{owner}/{repo}/branches 得到
创建分支 /repos/{owner}/{repo}/branches 职位
列出PR /repos/{owner}/{repo}/prs 得到
公开公关 /repos/{owner}/{repo}/prs 职位
获取PR /repos/{owner}/{repo}/prs/{pr_number} 得到
审查公关 /repos/{owner}/{repo}/prs/{pr_number}/reviews 职位
合并PR /repos/{owner}/{repo}/prs/{pr_number}/merge 职位

⚙️ 安装

1.️⃣ 克隆或复制此文件

git clone <your-repo-url>
cd fastapi-github-mcp-server

2.️⃣ 安装依赖项

pip install fastapi uvicorn pydantic requests python-multipart

(可选,但建议使用 .env):

pip install python-dotenv

🔐 认证

该应用程序需要 GitHub个人访问令牌(PAT).

选项A——通过环境变量

export GITHUB_TOKEN=ghp_yourtokenhere   # macOS / Linux
set GITHUB_TOKEN=ghp_yourtokenhere      # Windows CMD
$env:GITHUB_TOKEN="ghp_yourtokenhere"   # PowerShell

选项B——从代码中设置(用于本地调试)

os.environ["GITHUB_TOKEN"] = "ghp_yourtokenhere"

选项C——使用 .env 文件

创建一个 .env 根目录中的文件:

GITHUB_TOKEN=ghp_yourtokenhere

然后将以下内容添加到Python文件的顶部:

from dotenv import load_dotenv
load_dotenv()

▶️ 运行服务器

调试/自动重新加载模式

uvicorn fastapi_github_mcp_server:app --reload --port 8000 --host 0.0.0.0

使用详细日志记录

uvicorn fastapi_github_mcp_server:app --reload --log-level debug

或者直接运行

python fastapi_github_mcp_server.py

🧭 MCP注册(VS代码副本)

创建一个 .vscode/mcp.json 工作区中的文件:

{
  "name": "local-github-mcp",
  "version": "0.1.0",
  "description": "Local GitHub MCP providing repo operations",
  "modes": ["chat", "completion"],
  "schemaVersion": "1.0.0",
  "url": "http://localhost:8000/mcp"
}

重新启动VS代码——副驾驶将检测并注册MCP。

现在,您可以使用以下提示:

“列出仓库中所有打开的拉取请求 octocat/Hello-World" “创建新分支 feature/test 从 main" “打开PR feature/test 到 main"


🧪 cURL命令示例

列出分支

curl -H "Authorization: Bearer ghp_yourtoken" \
  http://localhost:8000/repos/octocat/Hello-World/branches

创建分支

curl -X POST -H "Authorization: Bearer ghp_yourtoken" \
  -H "Content-Type: application/json" \
  -d '{"new_branch": "feature/test", "base_branch": "main"}' \
  http://localhost:8000/repos/octocat/Hello-World/branches

打开PR

curl -X POST -H "Authorization: Bearer ghp_yourtoken" \
  -H "Content-Type: application/json" \
  -d '{"title": "Add feature", "head": "feature/test", "base": "main"}' \
  http://localhost:8000/repos/octocat/Hello-World/prs

审查PR

curl -X POST -H "Authorization: Bearer ghp_yourtoken" \
  -H "Content-Type: application/json" \
  -d '{"body": "Looks good!", "event": "APPROVE"}' \
  http://localhost:8000/repos/octocat/Hello-World/prs/123/reviews

合并PR

curl -X POST -H "Authorization: Bearer ghp_yourtoken" \
  -H "Content-Type: application/json" \
  -d '{"commit_title": "Merging PR 123", "merge_method": "squash"}' \
  http://localhost:8000/repos/octocat/Hello-World/prs/123/merge

🧰 VS代码调试配置

在 .vscode/launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug FastAPI MCP Server",
      "type": "python",
      "request": "launch",
      "program": "uvicorn",
      "args": [
        "fastapi_github_mcp_server:app",
        "--reload",
        "--port", "8000",
        "--log-level", "debug"
      ],
      "env": {
        "GITHUB_TOKEN": "ghp_yourtokenhere"
      }
    }
  ]
}

然后按 F5 运行和调试。


🧩 备注

  • 确保您的GitHub令牌具有 repo 范围。
  • 不要承诺你的代币或 .env 文件到公共存储库。
  • 对于生产使用,请集成安全密钥管理器(例如AWS密钥管理器、Azure密钥库)。

🧑‍💻 作者

艾米特·辛格
FastAPI+GitHub MCP自动化演示——2025