GitHub项目MCP服务器
](https://smithery.ai/server/taylor-lindores-reeves/mcp-github-projects)
MCP(模型上下文协议)服务器,使AI代理能够使用GitHub projects创建和管理基于敏捷Sprint的项目。
特性
- GitHub项目v2 API:完全支持GitHub的GraphQL Projects v2 API
- GitHub问题:创建、阅读和更新GitHub问题
- GitHub存储库:获取存储库详细信息
- 类型安全:使用TypeScript构建,以实现最大的类型安全性
项目结构
此MCP服务器采用分层架构构建,可分离关注点并提高可维护性。代码库提供对GitHub的GraphQL API的类型化访问,并具有全面的错误处理和安全功能。
目录概述
├── src/ # Source code directory
│ ├── index.ts # MCP server entry point & tool registration
│ ├── operations/ # Business logic layer
│ │ ├── github-client.ts # GitHub API client wrapper
│ │ ├── issues.ts # Issue operations & schemas
│ │ ├── projects.ts # Project v2 operations & schemas
│ │ ├── repositories.ts # Repository operations & schemas
│ │ └── index.ts # Operations barrel exports
│ ├── graphql/ # GraphQL queries & mutations
│ │ ├── issues/ # Issue-related GraphQL files
│ │ ├── projects/ # Project-related GraphQL files
│ │ └── repositories/ # Repository-related GraphQL files
│ ├── types/ # TypeScript type definitions
│ │ ├── github-api-types.ts # Auto-generated GitHub API types
│ │ └── graphql.d.ts # GraphQL type declarations
│ ├── utils/ # Utility functions
│ │ └── graphql-loader.ts # GraphQL file loader utility
│ └── common/ # Shared utilities
│ ├── errors.ts # Error handling utilities
│ └── utils.ts # Common helper functions
├── build/ # Compiled output directory
├── package.json # Project configuration & dependencies
├── tsconfig.json # TypeScript compiler configuration
├── codegen.ts # GraphQL code generation configuration
├── build.ts # Custom build script with GraphQL plugin
├── smithery.yaml # Smithery package configuration
├── schema.docs.graphql # GitHub GraphQL schema for code generation
├── .env.example # Environment variable template
└── .gitignore # Git ignore patterns关键组件
MCP服务器层(src/index.ts)
配置和启动MCP服务器的主要入口点。使用模式和处理程序注册所有可用工具,为敏捷工作流定义可重用的提示,并管理与MCP客户端的通信。
业务逻辑层(src/operations/)
包含将MCP服务器接口与GitHub API连接起来的核心业务逻辑。每个文件都专注于一个特定的GitHub域,通过存储库分配提供全面的错误处理和安全性。
github-client.ts:使用Octokit的集中式GitHub API客户端,支持GraphQL和RESTissues.ts:具有CRUD功能的问题管理操作projects.ts:全面的GitHub Projects v2操作,具有完整的生命周期管理repositories.ts:存储库信息检索操作
GraphQL层(src/graphql/)
按照GitHub的GraphQL API结构,按功能域组织GraphQL查询和突变。每 .graphql 文件对应于特定的操作,索引文件提供干净的导入。
类型系统(src/types/)
使用混合方法确保整个应用程序的类型安全:
- 自动生成的类型:使用GraphQL代码生成器从GitHub的GraphQL模式创建
- 手动申报:启用导入
.graphql文件作为TypeScript模块
配置文件
控制构建过程和项目设置的基本配置文件:
package.json:项目元数据、依赖关系和生成脚本tsconfig.json:带有NodeNext模块的ES2022目标的TypeScript编译器设置codegen.ts:用于从GitHub模式自动生成类型的GraphQL代码生成器配置build.ts:使用GraphQL文件处理插件自定义esbuild配置smithery.yaml:Smithery MCP服务器注册表的包配置schema.docs.graphql:GitHub的GraphQL模式用于类型生成.env.example:显示所需环境变量的模板
建筑流程
MCP Client Request → MCP Server → Operations Layer → GitHub Client → GitHub API
↓
Type Validation (Zod Schemas)
↓
GraphQL Queries/Mutations该系统遵循清晰的请求响应模式,每层都有验证门,确保从MCP接口到GitHub API的类型安全,同时通过存储库允许列表和全面的错误处理来维护安全。
安装
通过Smithery安装
通过以下方式自动安装GitHub Projects MCP Server for Claude Desktop 史密瑟里:
npx -y @smithery/cli install taylor-lindores-reeves/mcp-github-projects --client claude用法
手动安装
- 克隆此存储库:
git clone https://github.com/taylor-lindores-reeves/mcp-github-projects.git
cd mcp-github-projects- 安装依赖项:
bun install- 创建一个
.env使用您的GitHub令牌的文件:
GITHUB_TOKEN=your_github_personal_access_token
GITHUB_OWNER=your_github_username
GITHUB_OWNER_TYPE=org
ALLOWED_REPOS=owner/repo,another/repo- 构建服务器:
bun run build- 使用以下设置配置MCP客户端:
{
"mcpServers": {
"GitHubProjects": {
"command": "bun",
"args": [
"/path/to/your/directory/mcp-github-projects-main/build/index.js"
],
"env": {
"GITHUB_TOKEN": "your_github_personal_access_token",
"GITHUB_OWNER": "your_github_username_or_org",
"GITHUB_OWNER_TYPE": "org",
"ALLOWED_REPOS": "owner/repo,another/repo"
}
}
}
}环境变量
GITHUB_TOKEN:具有适当权限的GitHub个人访问令牌GITHUB_OWNER:GitHub用户名或组织名称GITHUB_OWNER_TYPE:(可选)设置为user(默认)或org。控制是为用户还是为组织完成项目列表和管理。吃起来org如果你的项目位于GitHub组织中。ALLOWED_REPOS:(可选)逗号分隔的允许存储库块列表(例如。owner/repo,another/repo).所有写入操作(创建/更新问题、向项目添加项目等)都仅限于这些存储库。如果未设置或为空,则默认情况下允许所有存储库。
例子:
GITHUB_TOKEN=your_github_personal_access_token
GITHUB_OWNER=the-troops
GITHUB_OWNER_TYPE=org
ALLOWED_REPOS=the-troops/sms-troopers,manuelbiermann/convo-run如果您尝试对不在此列表中的存储库执行写入操作,服务器将抛出错误并阻止该操作。
GitHub令牌权限
此MCP服务器需要具有以下权限的GitHub个人访问令牌(经典):
project-完全控制项目read:project-项目的读取权限repo-完全控制私有存储库repo:status-访问提交状态repo_deployment-访问部署状态public_repo-访问公共存储库repo:invite-访问存储库邀请security_events-读写安全事件
发展
命令
- 构建:
bun run build - 生成GraphQL类型:
bun run graphql-codegen
可用操作
项目
- 创建、读取、更新和删除GitHub项目
- 管理项目字段、项目和状态更新
- 将草稿问题转化为实际问题
- 归档和非归档项目项
问题
- 获取问题详细信息
- 向项目添加问题
仓库
- 获取存储库信息
