MCP for GitHub PR、问题、标签和发布
这 模型上下文协议 (MCP)是一个开放标准,可实现大型语言模型(LLM)和外部工具之间的无缝集成。虽然它可以在任何人工智能系统中实现,包括自定义LLM设置,但集成和优化的程度因模型的架构和功能而异。
此MCP应用程序充当LLM和GitHub存储库管理功能之间的桥梁,提供拉取请求的自动分析和全面的问题管理。它提供了一套强大的工具,可以直接从桌面LLM获取PR详细信息、创建问题和更新问题。该应用程序的设计考虑了模块化,通过MCP工具界面支持可扩展性,并与现有工作流无缝集成。
该工具集通过标准化的MCP界面实现了自动PR分析、问题跟踪、标记和发布管理,使其成为寻求简化GitHub工作流程自动化的团队的理想选择。
特性
| 功能 | 说明 |
|---|---|
| 分析GitHub Pull请求并获取差异 | 检索存储库中任何PR的差异/补丁。 |
| 获取特定PR的内容和元数据 | 获取PR标题、描述、作者、时间戳和状态。 |
| 创建Pull Requests | 打开带有标题、正文、头部/基础分支和草稿选项的新PR。 |
| 更新PR标题和描述 | 更改任何PR的标题和正文 |
| 合并拉取请求 | 使用合并、挤压或重基方法合并PR。 |
| 向PR添加评论 | 向PR帖子发布一般评论。 |
| 在PR中添加内联审查注释 | 对PR文件中的特定行进行注释以进行代码审查。 |
| 提交PR审核 | 批准、请求更改或评论PR审核。 |
| 更新PR受让人 | 在PR或问题上分配或更新用户。 |
| 创建和更新GitHub Issues | 打开新问题或使用标题、正文、标签和状态更新现有问题。 |
| 列出所有打开的问题或拉取请求 | 查看任何用户或组织的所有打开的PR或问题。 |
| 创建标签和发布 | 标签存储库提交并发布带有变更日志的发布。 |
| 搜索GitHub用户 | 通过GraphQL检索用户配置文件信息。 |
| 获取用户活动 | 使用org/repo/date过滤获取提交、PR、发布和审核贡献 |
| 检索IPv4和IPv6信息 | 获取IPv4和IPv6的公共IP地址详细信息。 |
需求
- Python 3.12+
- GitHub个人访问令牌(含
repo范围) 或 GitHub OAuth应用程序(客户端ID、机密和公共基础URL)
认证
支持两种身份验证模式。主动模式是从环境变量中自动选择的。
| 模式 | 活动时 | 用于API调用的令牌 |
|---|---|---|
| 静态令牌 (默认) | GITHUB_TOKEN 集合;不 GITHUB_OAUTH_* vars | 服务器的 GITHUB_TOKEN 对于所有通话 |
| GitHub OAuth2 | GITHUB_TOKEN +全部三个 GITHUB_OAUTH_* vars set | 每个用户自己的 gho_* 代币 |
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GITHUB_TOKEN | 是 | GitHub PAT与 repo 范围;在静态令牌HTTP模式下用作承载令牌 |
MCP_ENABLE_REMOTE | 否 | 任何非空值都可以启用HTTP模式(OAuth2需要) |
GITHUB_OAUTH_CLIENT_ID | 仅限OAuth2 | GitHub OAuth应用程序客户端ID |
GITHUB_OAUTH_CLIENT_SECRET | 仅限OAuth2 | GitHub OAuth应用程序客户端机密 |
GITHUB_OAUTH_BASE_URL | 仅限OAuth2 | MCP服务器的公共基URL(用于OAuth2重定向) |
REDIS_HOST_PORT | 否 | Redis连接字符串。接受 host:port 或完整URI: redis://[:password@]host:port[/db] (明文)或 rediss://[:password@]host:port[/db] (TLS)。设置后,OAuth令牌状态存储在Redis中,而不是进程内内存中。 |
REDIS_PASSWORD | 否 | Redis AUTH密码回退——当密码未嵌入URI时使用 |
PORT | 否(默认 8081) | HTTP服务器端口 |
HOST | 否(默认 localhost) | HTTP服务器主机 |
GITHUB_API_TIMEOUT | 否(默认 5) | GitHub API请求超时(秒) |
要创建GitHub OAuth应用程序,请转到 设置→ 开发人员设置→ OAuth应用程序→ 新建OAuth应用程序 并将授权回调URL设置为/auth/callback(例如。https://mcp.example.com/auth/callback).
架构图
+------------------------+
| |
| MCP Client/User |
| |
+------------------------+
|
| (stdio/http)
v
+------------------------+
| Auth Layer +-->+------------------------+
| (auth.py) | | OAuth Token Store |
| | | MemoryStore (default) |
| stdio : no auth | | RedisStore |
| http : APIKeyVerifier | | (REDIS_HOST_PORT set)|
| oauth : GitHub OAuth2 | | redis:// / rediss:// |
| (DCR + token proxy) | +------------------------+
+------------------------+ |
| v
| +----------+
| | Redis |
| +----------+
v
+--------------------+ +------------------------+
| | | PRIssueAnalyser |
| IP Integration | "
uvx ./或者,在中启动MCP http 模式。
export GITHUB_TOKEN=""
export MCP_ENABLE_REMOTE=true
uvx ./您可以通过以下方式访问它http也就是http(s)://localhost:8081/mcp在HTTP模式下,客户端必须通过以下方式进行身份验证Authorization: Bearer.
或者,在中启动MCP http 使用GitHub OAuth2身份验证的模式。
export GITHUB_TOKEN=""
export MCP_ENABLE_REMOTE=true
export GITHUB_OAUTH_CLIENT_ID=""
export GITHUB_OAUTH_CLIENT_SECRET=""
export GITHUB_OAUTH_BASE_URL="https://"
uvx ./在OAuth2模式下,用户通过GitHub的OAuth流进行身份验证。每个用户自己的GitHub令牌用于API调用。
或者,使用已发布的镜像通过Docker运行。
docker run -e GITHUB_TOKEN="" \
-p 8081:8081 \
ghcr.io/saidsef/mcp-github-pr-issue-analyser:latest与IDE和LLM的本地集成
要将MCP服务器添加到IDE或LLM中,您需要将此部分添加到配置文件中。基本结构包括定义服务器名称,并提供运行服务器的命令和任何必要的参数。
Claude / Cursor / Windsurf
{
"mcpServers": {
"github_prs_issues": {
"command": "uvx",
"env": {
"GITHUB_TOKEN": ""
},
"args": [
"https://github.com/saidsef/mcp-github-pr-issue-analyser.git",
]
}
}
}VS Code
{
"inputs": [
{
"type": "promptString",
"id": "github-token",
"description": "Enter your GitHub token",
"password": true
}
],
"servers": {
"github-prs-issues": {
"type": "stdio",
"command": "uvx",
"args": [
"https://github.com/saidsef/mcp-github-pr-issue-analyser.git",
],
"env": {
"GITHUB_TOKEN": "${input:github-token}"
}
}
}
}来源
我们最新和最大的来源 *mcp github公关问题分析器* 可以在\[GitHub\]上找到。 叉我们!
贡献
我们将:心:你通过做出贡献 拉取请求.
请阅读官方 贡献指南 了解更多关于如何做出贡献的信息。
