GitHub工具MCP服务器

一个基于TypeScript和MCP SDK的服务器,提供与GitHub交互的工具,包括用户信息检索、安全问题创建、分支管理和拉取请求管理等功能。

  • by RickardHF
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 rickardhf/github-security-mcp-server

使用说明

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代码集成

运行最新发布版本

要使用最新发布的版本,您可以选择添加新工具,选择 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:存储库操作