Easy MCP GitHub Tools Application
一套强大的工具,旨在通过 MCP 与 GitHub 无缝集成。
ground-creative
README
Easy MCP GitHub 工具应用
这是一组用于 github 的工具,可与 easy mcp 服务器一起使用。<br> https://github.com/ground-creative/easy-mcp-python
主要特性
- 分支管理: 轻松创建和删除 GitHub 仓库中的分支。
- 问题跟踪: 创建、更新和删除问题,以及管理问题上的评论。
- 提交历史: 获取任何仓库分支的详细提交信息和提交历史。
- 文件管理: 在 GitHub 仓库中创建、更新和删除文件,包括获取文件内容和差异。
- 拉取请求: 创建和管理拉取请求,包括将它们合并到目标分支。
- 全局搜索: 在 GitHub 上执行全局搜索,查找仓库、问题和代码。
- 发布管理: 检索和管理 GitHub 仓库中的发布。
- OAuth 身份验证: 使用 GitHub 的 OAuth 服务安全地验证用户身份。
身份验证
此应用程序使用 GitHub oAuth 服务来验证用户身份。<br> 要使用此应用程序,您必须在 GitHub 上创建一个 OAuth 应用程序。
如何进行身份验证:
-
转到 auth/login 并进行身份验证
-
在向服务器发出请求时,使用带有请求标头的参数 X-ACCESS-TOKEN。
创建 GitHub 应用程序说明
要使用此应用程序,您必须首先在 GitHub 上创建一个 OAuth 应用程序。 请按照以下步骤操作:
- 转到您的 GitHub 帐户设置。
- 导航到开发者设置 > OAuth Apps。
- 点击New OAuth App。
- 填写必填字段:
- Application Name: 为您的应用程序选择一个名称。
- Homepage URL: 输入您的应用程序的主 URL(例如:
https://mcp.yourdomain.com
)。 - Authorization callback URL: 将此设置为
http://{Your Host}:{Your Port}/auth/callback
。
- 创建应用程序后,您将收到一个 Client ID 和 Client Secret。 请妥善保管这些凭据,因为您需要将它们添加到
client_credentials.json
文件中。
安装
- 从 easy mcp 安装的根文件夹克隆存储库:
git clone https://github.com/ground-creative/easy-mcp-github-tools-python.git app
- 安装依赖项:
pip install -r app/requirements.txt
- 生成加密密钥:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
- 将参数添加到 env 文件:
APP_HOST=应用程序主机 例如:`https://mcp.yourdomain.com`
DB_PATH=storage/sqlite_credentials.db
CYPHER=您的加密密钥
# 可选
SITE_URL=主应用程序站点 URL
SITE_NAME=主应用程序站点名称
- 在 storage 文件夹中创建带有 GitHub oauth 凭据的 json 文件
client_credentials.json
:
# 按照“创建 GitHub 应用程序说明”部分中的说明创建凭据
{
"client_id": "XXXXX",
"client_secret": "XXXXXXX"
}
- 运行服务器:
# 通过 fastapi 包装器运行
python3 run.py -s fastapi
可用的 MCP 工具
此 MCP 服务器提供以下工具:
工具名称 | 描述 | 需要的参数 |
---|---|---|
创建分支 | 在指定的 GitHub 仓库中,基于现有分支创建一个新分支。 | new_branch (str), base_branch (Optional[str]), repo (Optional[str]) |
删除分支 | 删除 GitHub 仓库中指定的的分支。 | branch (str), repo (Optional[str]), confirmation_token (Optional[str]) |
删除 Issue 评论 | 删除 GitHub 仓库中 issue 的指定评论。 | comment_id (int), repo (Optional[str]), confirmation_token (Optional[str]) |
获取提交详情 | 从 GitHub 仓库中获取特定提交的详细信息。 | sha (str), repo (Optional[str]) |
获取提交 | 从 GitHub 仓库中获取提交历史。 | branch (Optional[str]), repo (Optional[str]), path (Optional[str]), per_page (Optional[int]), since (Optional[str]), until (Optional[str]) |
创建文件 | 将新文件添加到 GitHub 仓库的指定分支。 | file_path (str), content (str), repo (Optional[str]), commit_message (Optional[str]), branch (Optional[str]) |
删除文件 | 从 GitHub 仓库的指定分支中删除指定的文件。 | file_paths (List[str]), repo (Optional[str]), branch (Optional[str]), confirmation_token (Optional[str]) |
获取文件差异 | 从 GitHub 仓库中获取特定提交的文件差异。 | sha (str), files (List[str]), repo (Optional[str]) |
获取提交前的文件 | 检索给定提交 SHA 之前多个文件的多个内容。 | sha (str), files (List[str]), repo (Optional[str]) |
获取文件内容 | 从 GitHub 仓库中获取多个文件的内容。 | file_paths (List[str]), repo (Optional[str]), branch (Optional[str]) |
获取文件详情 | 从 GitHub 仓库中获取多个文件的详细信息,但不包含内容。 | files (List[str]), repo (Optional[str]), branch (Optional[str]) |
列出文件 | 使用 git tree API 从 GitHub 仓库中获取文件路径列表。 | folders (Optional[List[str]]), repo (Optional[str]), branch (Optional[str]) |
搜索文件 | 在 GitHub 仓库的文件中搜索特定字符串。 | search_string (str), repo (Optional[str]), folders (Optional[List[str]]), sort (Optional[str]), order (Optional[str]), page (Optional[int]), per_page (Optional[int]) |
全局搜索 | 基于指定的搜索类型和查询字符串在 GitHub 上执行全局搜索。 | search_type (str), query (str), page (int), per_page (int) |
更新文件 | 更新 GitHub 仓库的指定分支中的现有文件。 | file_path (str), new_content (str), repo (Optional[str]), commit_message (Optional[str]), branch (Optional[str]) |
创建 Issue 评论 | 向 GitHub 仓库中的指定 issue 添加评论。 | issue_number (int), comment (str), repo (Optional[str]) |
创建 Issue | 在 GitHub 仓库中创建一个新 issue。 | title (str), body (Optional[str]), repo (Optional[str]), labels (Optional[list]) |
获取 Issue 评论 | 检索 GitHub 仓库中特定 issue 的所有消息(详细信息和评论)。 | issue_number (int), repo (Optional[str]), page (Optional[int]), per_page (Optional[int]), sort (Optional[str]), order (Optional[str]) |
获取 Issue 详情 | 检索 GitHub 仓库中特定 issue 的详细信息。 | issue_number (int), repo (Optional[str]) |
获取 Issues | 从指定的 GitHub 仓库中获取 issue,允许可选过滤器。 | repo (Optional[str]), state (Optional[str]), labels (Optional[str]), assignee (Optional[str]), milestone (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]) |
搜索 Issues | 在指定的 GitHub 仓库中搜索 issue,带有可选过滤器。 | repo (Optional[str]), state (Optional[str]), labels (Optional[str]), assignee (Optional[str]), milestone (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]), search_comments (Optional[bool]), query (Optional[str]) |
更新 Issue 评论 | 更新 GitHub 仓库中指定 issue 的现有评论。 | comment_id (int), new_comment (str), repo (Optional[str]) |
更新 Issue | 更新 GitHub 仓库中的现有 issue。 | issue_number (int), title (Optional[str]), body (Optional[str]), state (Optional[str]), labels (Optional[list]), repo (Optional[str]) |
创建 Pull Request | 在指定的 GitHub 仓库中创建一个 pull request。 | target_branch (str), base_branch (Optional[str]), repo (Optional[str]), title (Optional[str]), body (Optional[str]) |
获取 Pull Request 详情 | 从 GitHub 仓库中获取特定 pull request 的详细信息。 | pull_number (int), repo (Optional[str]) |
获取 Pull Requests | 从指定的 GitHub 仓库中获取 pull request。 | repo (Optional[str]), state (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]) |
合并 Pull Request | 合并 GitHub 仓库中的特定 pull request。 | pull_number (int), repo (Optional[str]), commit_message (Optional[str]) |
创建仓库 | 在 GitHub 上创建一个新的仓库。 | name (str), description (Optional[str]), private (Optional[bool]), auto_init (Optional[bool]) |
删除仓库 | 删除指定的 GitHub 仓库。 | repo (Optional[str]), confirmation_token (Optional[str]) |
按名称查找仓库 | 搜索特定用户拥有的包含给定查询字符串的仓库。 | query (str), username (Optional[str]) |
获取发布 | 检索 GitHub 仓库中的发布。 | per_page (Optional[int]), page (Optional[int]), repo (Optional[str]), sort (Optional[str]), order (Optional[str]) |
获取仓库 | 获取特定 GitHub 用户的所有仓库。 | username (Optional[str]), type (Optional[str]), sort (Optional[str]), direction (Optional[str]), page (Optional[int]), per_page (Optional[int]) |
获取仓库详情 | 从 GitHub 获取单个仓库的详细信息。 | repo (Optional[str]) |
获取标签或分支 | 列出 GitHub 仓库中的标签或分支。 | type (str), repo (Optional[str]), per_page (Optional[int]), page (Optional[int]) |
* repo
参数是可选的,可以直接包含在请求标头中:
# 确保指示 llm 在发出请求时忽略 repo 参数。
X-REPO: owner/repo
服务器信息页面
带有工具规范 URL 的服务器信息页面是 .env 文件中配置的 {APP_HOST} 参数。
截图
服务器信息页面:
GitHub 应用程序 oAuth 页面
用户身份验证页面
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。