关于 GitHub MCP Server in Go
这是一个用 Go 实现的非官方 GitHub MCP 服务,供 AI 助手通过 GitHub API 操作仓库、分支、文件、问题和代码。它提供搜索、读取和写入等工具,并支持令牌环境变量或 HTTP 请求头认证。
主要功能
- 01搜索仓库、代码、问题和用户
- 02创建仓库、分叉仓库及分支
- 03读取文件并创建或更新文件
- 04推送多个文件并创建提交
- 05创建、查询和更新问题
适用场景
- 01搜索 GitHub 仓库与代码
- 02在仓库中创建分支并更新文件
- 03查看并维护问题及评论
MCP 相关
它将 GitHub API 操作作为 MCP 工具提供给 AI 助手。GitHub 令牌可通过环境变量或 HTTP 请求头传入。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 Go 编写的 GitHub MCP 服务
这是 GitHub 模型上下文协议(MCP)服务的 Go 实现。此实现允许 AI 助手与 GitHub API 交互,执行创建仓库、管理分支、操作文件等操作。
前置条件
- Go 1.21 或更高版本
- 具有相应权限的 GitHub 个人访问令牌
安装
go get github.com/metoro-io/github-mcp-server-go
身份验证
服务支持两种身份验证方式:
环境变量身份验证
将 GitHub 个人访问令牌设为环境变量:
export GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token
HTTP 标头身份验证
服务还可以从 HTTP 请求中提取身份验证令牌。你可以通过 Authorization 标头传递 GitHub 令牌:
Authorization: Bearer your_github_token
或直接使用:
Authorization: your_github_token
上下文透传
对于 HTTP 处理程序,服务支持以下两种方式:
- HTTP 请求使用标准的
http_request上下文值。 - 使用 Gin 框架时使用
ginContext值。
这样既能与不同的 Web 框架无缝集成,又能保持身份验证机制一致。
用法
-
设置 GitHub 个人访问令牌(如“身份验证”部分所述)。
-
运行服务:
go run main.go
可用工具
服务提供以下工具:
- search_repositories:搜索 GitHub 仓库
- create_repository:在你的账户中创建新的 GitHub 仓库
- fork_repository:将 GitHub 仓库复刻到你的账户或指定组织
- create_branch:在 GitHub 仓库中创建新分支
- get_file_contents:获取 GitHub 仓库中文件或目录的内容
- create_or_update_file:在 GitHub 仓库中创建或更新单个文件
- push_files:通过一次提交将多个文件推送到 GitHub 仓库
- create_issue:在 GitHub 仓库中创建新议题
- get_issue:获取 GitHub 仓库中特定议题的详细信息
- list_issues:列出 GitHub 仓库中的议题,并提供筛选选项
- update_issue:更新 GitHub 仓库中已有的议题
- add_issue_comment:为已有议题添加评论
- list_commits:获取 GitHub 仓库中某个分支的提交列表
- search_code:在 GitHub 仓库中搜索代码
- search_issues:在 GitHub 仓库中搜索议题和拉取请求
- search_users:在 GitHub 上搜索用户
开发
项目结构
main.go:应用程序入口common/:通用工具和错误处理operations/:GitHub API 操作实现tools/:MCP 工具定义和处理程序
从源代码构建
go build -o github-mcp-server
运行测试
go test ./...
许可证
本项目采用 MIT 许可证。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。