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 inspectVS代码集成
运行最新发布版本
要使用最新发布的版本,您可以选择添加新工具,选择 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”和“安全”标签的所有安全问题。
例子:
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存储库中的两个分支之间创建新的pull请求。
例子:
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代理无法识别工具
有时我们会发现,人工智能代理并没有对工具感兴趣,就像下面的例子一样。指定它应该使用工具似乎是有效的。
项目结构
- src/index.ts:主要入口点和服务器配置
- src/通用/:共享实用程序和类型定义
- utils.ts:共享实用函数(GitHub令牌检索) - types.ts:TypeScript类型定义
- src/操作/:工具实施
- process.ts:工具注册和映射 - security.ts:安全状态报告功能 - api/:GitHub API操作 - branch.ts:分行管理业务 - issues.ts:安全问题操作 - pull-requests.ts:拉取请求操作 - 报告ts:存储库操作
