关于 MCP Server for GitHub Tools
这是一个用 TypeScript 和 MCP SDK 构建的 GitHub 工具 MCP 服务,面向需要通过 Agent 管理仓库的用户。它涵盖安全状态与问题处理,也支持分支和拉取请求操作。
主要功能
- 01查询 GitHub 用户信息
- 02创建和列出安全问题
- 03查看 Dependabot、代码和密钥扫描警报
- 04列出并创建分支
- 05创建和查看拉取请求及差异
适用场景
- 01检查仓库的安全警报
- 02为漏洞创建安全问题
- 03查看分支保护和最新提交
- 04创建拉取请求并检查差异
MCP 相关
该 MCP 服务向 MCP 客户端提供 GitHub 用户、仓库安全、分支和拉取请求工具。使用 GitHub CLI 的认证令牌访问 GitHub。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| username | string | 是 |
详细介绍
GitHub 工具 MCP 服务
概述
此仓库包含一个模型上下文协议(MCP)服务实现,提供用于与 GitHub 交互的工具。该服务使用 TypeScript 和 MCP SDK 构建,可与 Visual Studio Code 中的 GitHub Copilot 等 MCP 客户端集成。
功能
该服务目前提供以下工具:
- GitHub 用户信息:通过用户名获取 GitHub 用户的详细信息
- 创建安全问题:在 GitHub 仓库中创建格式规范且带有适当标签的安全问题
- 列出安全问题:列出 GitHub 仓库中所有与安全相关的问题
- 安全状态报告:获取全面的安全警报,包括 Dependabot、代码扫描和机密扫描
- 分支管理:列出 GitHub 仓库中的分支并创建新分支
- 拉取请求管理:
- 在分支之间创建拉取请求
- 列出指定仓库的拉取请求,并包含 PR 编号、标题和说明等基本信息。
- 获取指定拉取请求的详细信息,包括差异和评论
前提条件
- Node.js
- npm(随 Node.js 一起安装)
- 已安装并完成身份验证的 GitHub CLI (gh)
身份验证
此 MCP 服务使用 GitHub CLI 获取当前已通过身份验证的用户的令牌,并将其用于身份验证。
本地运行
启动服务
npm start
如需在文件更改时自动重新构建以进行开发:
npm run dev
如需调试和检查服务:
npm run inspect
VS Code 集成
运行最新发布版本
如需使用最新发布版本,可以选择添加新工具,选择 Command (stdio),并使用命令 npx @rickardhf/github-security-mcp-server。
如果只想修改 mcp.json 配置文件,可以使用以下配置
{
"servers": {
"my-local-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"@rickardhf/github-security-mcp-server"
]
}
},
...
}
运行本地版本
如需在编辑器中使用本地版本的 MCP 服务,可以按照下方示例的方式运行项目构建后的文件。只需将此服务配置添加到 mcp.json 文件中,可以是全局配置,也可以仅针对特定工作区配置。
{
"servers": {
"my-local-mcp-server": {
"type": "stdio",
"command": "node",
"args": [
"c:\\repos\\private\\mcptest\\dist\\index.js"
]
}
}
}
如果先运行命令 npm run local-install,就会在本地计算机上全局安装该服务。之后可以使用以下配置运行
{
"servers": {
"my-local-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"github-security-mcp-server"
]
}
}
}
用法
可用工具
获取 GitHub 用户
获取 GitHub 用户的信息。
示例:
Get information about the GitHub user "octocat"
创建安全问题
在 GitHub 仓库中创建格式规范且带有安全相关标签的安全问题。
示例:
Create a security issue for XSS vulnerability in the login form
列出安全问题
列出 GitHub 仓库中同时带有 "bug" 和 "security" 标签的所有安全问题。
示例:
List security issues in the repository "owner/repo-name"
获取安全状态
获取 GitHub 仓库的安全状态,包括:
- Dependabot 警报
- 代码扫描警报
- 机密扫描警报
示例:
Get security status for the repository "owner/repo-name"
列出分支
列出 GitHub 仓库中的所有分支,并提供最新提交、保护状态以及是否为默认分支等信息。
示例:
List branches in the repository "owner/repo-name"
创建新分支
基于现有分支在 GitHub 仓库中创建新分支。
示例:
Create a new branch called "feature-branch" based on "main" in "owner/repo-name"
创建拉取请求
在 GitHub 仓库的两个分支之间创建新的拉取请求。
示例:
Create a pull request from "feature-branch" to "main" in "owner/repo-name" titled "New Feature Implementation"
获取拉取请求
获取指定拉取请求的详细信息,包括差异和评论。
示例:
Get pull request #42 from the repository "owner/repo-name"
AI Agent 未能识别工具
有时我们会遇到 AI Agent 未能识别工具的情况,如下例所示。指定应使用工具似乎会奏效。
项目结构
- src/index.ts:主入口和服务配置
- src/common/:共享实用工具和类型定义
- utils.ts:共享实用函数(获取 GitHub 令牌)
- types.ts:TypeScript 类型定义
- src/operations/:工具实现
- process.ts:工具注册和映射
- security.ts:安全状态报告功能
- api/:GitHub API 操作
- branch.ts:分支管理操作
- issues.ts:安全问题操作
- pull-requests.ts:拉取请求操作
- repo.ts:仓库操作
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。