GitHub项目管理工具

一个通过GraphQL API与GitHub Projects交互的MCP服务器,提供项目管理和问题管理功能,适用于团队协作和软件开发项目管理。

  • by ProRanked
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ProRanked/github-projects-mcp

使用说明

GitHub项目MCP服务器

一个MCP(模型上下文协议)服务器,通过GraphQL API提供与GitHub项目交互的工具。此仓库由模型上下文协议(MCP)管理,旨在与Claude Desktop无缝协作。由ProRanked撰写。

特性

项目管理

  • 为存储库或组织创建新项目
  • 列出存储库和组织的项目
  • 获取包括字段在内的详细项目信息
  • 列出项目中的项目
  • 从问题/PR创建新项目项
  • 更新项目项字段值

问题管理

  • 使用自动类型检测和标签创建新问题
  • 智能检测问题类型:Epic、功能、Bug、任务、故事、文档
  • 在问题之间创建父子关系(Epic>功能>故事/任务)
  • 更新现有问题(标题、正文、状态、标签、受让人、里程碑)
  • 列出筛选选项(状态、标签、受让人)的问题
  • 获取详细的问题信息,包括评论和项目关联
  • 查看完整的问题层次结构(父级和子级)
  • 确保存储库中存在标准问题类型标签

设置

  1. 克隆此存储库

  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    
  4. 在Claude Desktop设置中配置您的GitHub令牌(请参阅下面的集成部分)

用法

运行服务器

该服务器设计为通过Claude Desktop的MCP集成运行。

对于当地发展而言 .env 文件:

npm run dev

注: 生产服务器(npm start)要求 GITHUB_TOKEN 外部设置的环境变量。

可用工具

项目工具

创建项目

创建一个新的GitHub项目。

参数:

  • owner (必填):存储库所有者或组织名称
  • title (必填):项目名称
  • repo (可选):存储库名称(组织项目省略)
list_项目

列出存储库或组织的GitHub项目。

参数:

  • owner (必填):存储库所有者或组织名称
  • repo (可选):存储库名称(对于组织项目省略)
  • projectsType (可选):“存储库”或“组织”(默认:“存储仓库”)
get_工程

获取特定项目的详细信息。

参数:

  • projectNumber (必填):项目编号
  • owner (必填):存储库所有者或组织名称
  • repo (可选):存储库名称(对于组织项目省略)
list_project_items

列出GitHub项目中的项目。

参数:

  • projectId (必填):项目节点ID
  • first (可选):要返回的项目数(默认值:20)
创建项目

将现有问题或拉取请求添加到项目中。

参数:

  • projectId (必填):项目节点ID
  • contentId (必填):问题或PR节点ID
update_project_item_field

更新项目项的字段值。

参数:

  • projectId (必填):项目节点ID
  • itemId (必填):项目项节点ID
  • fieldId (必填):字段节点ID
  • value (必填):字段的新值

问题工具

创建_发行

在具有自动类型检测功能的存储库中创建新问题。

参数:

  • owner (必填):存储库所有者(自动转换为小写)
  • repo (必填):存储库名称
  • title (必填):发行标题
  • body (可选):问题正文/描述
  • labels (可选):要分配的标签名称数组
  • assignees (可选):要分配的用户名数组
  • milestone (可选):要分配的里程碑编号
  • parentIssueNumber (可选):将此问题链接到的父问题编号

自动类型检测:该工具分析标题和正文,以自动添加适当的标签:

  • 史诗:大型计划、里程碑、上级任务
  • 特性:新功能、增强功能、实施
  • 程序错误:错误、修复、崩溃、功能损坏
  • 任务:一般任务、杂务、重构、更新
  • 故事:用户故事,“作为用户”场景
  • 文档:文档、自述文件、指南
update_issue

更新现有问题。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • issueNumber (必填):发行号
  • title (可选):新标题
  • body (可选):新车身
  • state (可选):“打开”或“关闭”
  • labels (可选):用此数组替换所有标签
  • assignees (可选):用此数组替换所有受让人
  • milestone (可选):新的里程碑编号(或空删除)
list_issues

在存储库中列出问题。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • state (可选):“打开”、“关闭”或“全部”(默认为“打开”)
  • labels (可选):要筛选的标签数组
  • assignee (可选):按受让人用户名筛选
  • first (可选):要返回的问题数量(默认值:20)
获取问题

获取有关特定问题的详细信息。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • issueNumber (必填):发行号
确保标签

确保存储库中存在标准问题类型标签。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • labels (可选):标签定义数组,包含:
    • name (必填):标签名称
    • color (必填):十六进制颜色,无#
    • description (可选):标签描述

如果没有提供标签,则创建默认问题类型标签(史诗、功能、错误、任务、故事、文档)。

链接问题

在问题之间建立父子关系。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • parentIssueNumber (必填):父发行号(例如Epic或Feature)
  • childIssueNumber (必填):要链接的儿童问题编号
  • linkType (可选):关系类型-“轨迹”(默认)、“块”或“相关”
设置_租金

设置或更新问题的父级(比link_issues更简单的替代方案)。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • issueNumber (必填):要为其设置父项的问题编号
  • parentIssueNumber (必填):父发行号(例如Epic或Feature)
获取问题层次结构

获取一个问题的完整层次结构,显示所有家长和孩子。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • issueNumber (必填):用于获取层次结构的问题编号
add_sub_issue

使用GitHub beta API添加本机子问题关系(在GitHub的UI中创建可见的父子关系)。

参数:

  • owner (必填):存储库所有者
  • repo (必填):存储库名称
  • parentIssueNumber (必填):母公司发行号
  • childIssueNumber (必填):要添加为子问题的子问题编号

注意:这使用了GitHub的测试版API。如果不可用,则退回到任务列表方法。

与Claude Desktop集成

添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "github-projects": {
      "command": "node",
      "args": ["/path/to/github-projects-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_personal_access_token"
      }
    }
  }
}

所需的GitHub令牌权限:

  • repo -用于访问存储库项目
  • read:org -用于访问组织项目
  • project -用于完全项目访问(读/写)

在以下位置创建您的令牌:https://github.com/settings/tokens

示例用法

项目范例

  1. 创建新项目:

    Tool: create_project
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "title": "My New Project"
    }
    
  2. 列出存储库中的所有项目:

    Tool: list_projects
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world"
    }
    
  3. 获取项目详细信息:

    Tool: get_project
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "projectNumber": 1
    }
    

问题示例

  1. 确保存在问题类型标签:

    Tool: ensure_labels
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world"
    }
    
  2. 创建新问题(自动检测为错误):

    Tool: create_issue
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "title": "Bug: Application crashes on startup",
      "body": "When I try to start the application, it crashes with error XYZ.",
      "labels": ["high-priority"],
      "assignees": ["octocat"]
    }
    
  3. 创造史诗:

    Tool: create_issue
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "title": "Epic: Implement user authentication system",
      "body": "This epic covers the implementation of a complete authentication system including login, registration, and password recovery."
    }
    
  4. 在史诗下创建一个功能:

    Tool: create_issue
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "title": "Feature: Implement login functionality",
      "body": "Implement secure login with JWT tokens",
      "parentIssueNumber": 100
    }
    
  5. 链接现有问题:

    Tool: link_issues
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "parentIssueNumber": 100,
      "childIssueNumber": 101,
      "linkType": "tracks"
    }
    
  6. 为问题设置父项(语法更简单):

    Tool: set_parent
    Arguments: {
      "owner": "octocat",
      "repo": "hello-world",
      "issueNumber": 101,
      "parentIssueNumber": 100
    }
    
  7. 查看问题层次结构:

Tool: get_issue_hierarchy
Arguments: {
  "owner": "octocat",
  "repo": "hello-world",
  "issueNumber": 100
}
  1. 添加本地子问题关系(测试版):
Tool: add_sub_issue
Arguments: {
  "owner": "octocat",
  "repo": "hello-world",
  "parentIssueNumber": 100,
  "childIssueNumber": 101
}
  1. 更新问题:
Tool: update_issue
Arguments: {
  "owner": "octocat",
  "repo": "hello-world",
  "issueNumber": 42,
  "state": "closed",
  "labels": ["bug", "fixed"]
}
  1. 用特定标签列出未决问题:
Tool: list_issues
Arguments: {
  "owner": "octocat",
  "repo": "hello-world",
  "state": "open",
  "labels": ["bug"]
}
  1. 向项目添加问题:
Tool: create_project_item
Arguments: {
  "projectId": "PVT_kwDOBgKK184AAAAA",
  "contentId": "I_kwDOBgKK185BBBBB"
}

发展

服务器由以下组件构建:

  • TypeScript用于类型安全
  • @MCP服务器实现的modelcontextprotocol/sdk
  • @用于GitHub graphql API访问的octopkit/graphql
  • 用于环境配置的dotenv

作者

由...创建 已发布

许可证

MIT许可证-请参阅 许可证 详细信息文件