Forgejo仓库管理插件

Forgejo MCP Server是一个连接Forgejo与AI助手的集成插件,支持通过自然语言管理仓库、问题、拉取请求等操作。

  • by JazenaYLA
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 JazenaYLA/forgejo-mcp

使用说明

Forgejo MCP服务器

将您的AI助手连接到Forgejo存储库。通过自然语言管理问题、拉取请求、文件等。

它的作用

Forgejo MCP Server是一个集成插件,它将Forgejo与 模型上下文协议(MCP) 系统。配置后,您可以通过任何与MCP兼容的AI助手(如Claude、Cursor或VS Code扩展)与Forgejo存储库进行交互。

您可以使用的示例命令:

  • “列出我的所有存储库”
  • “创建一个标题为“登录页面中的Bug”的问题”
  • “在我的组织/我的仓库中显示打开的拉取请求”
  • “从主分支获取README.md的内容”
  • “显示goern/forgejo mcp中运行的最新操作工作流”

快速开始

1.安装

选项A:使用Go(推荐)

git clone https://codeberg.org/goern/forgejo-mcp.git
cd forgejo-mcp
go install .

确保 $GOPATH/bin (通常 ~/go/bin)在你的路径。

注: go install codeberg.org/goern/forgejo-mcp/v2@latest 目前不工作。看 已知问题.

选项B:下载二进制文件

从下载最新版本 发布页面.

对于Arch Linux,使用您最喜欢的AUR助手:

yay -S forgejo-mcp      # builds from source
yay -S forgejo-mcp-bin  # uses pre-built binary

2.获取您的访问令牌

  1. 登录您的Forgejo实例
  2. 首选 设置 → 应用程序 → 访问令牌
  3. 创建具有所需权限的新令牌(repo、issue等)

3.配置您的AI助手

将以下内容添加到MCP配置文件中:

用于stdio模式 (最常见):

{
  "mcpServers": {
    "forgejo": {
      "command": "forgejo-mcp",
      "args": [
        "--transport", "stdio",
        "--url", "https://your-forgejo-instance.org"
      ],
      "env": {
        "FORGEJO_ACCESS_TOKEN": "<your personal access token>",
        "FORGEJO_USER_AGENT": "forgejo-mcp/1.0.0"
      }
    }
  }
}

对于SSE模式 (基于HTTP):

{
  "mcpServers": {
    "forgejo": {
      "url": "http://localhost:8080/sse"
    }
  }
}

使用SSE模式时,请先启动服务器:

forgejo-mcp --transport sse --url https://your-forgejo-instance.org --token <your-token>

4.开始使用它

打开兼容MCP的AI助手,尝试:

List all my repositories

可用工具

工具 说明
用户
get_my_user_info 获取已验证用户的信息
check_notifications 检查并列出用户通知
get_notification_thread 获取单个通知线程的详细信息
mark_notification_read 将单个通知线程标记为已读
mark_all_notifications_read 确认所有通知
list_repo_notifications 筛选仅限于单个存储库的通知
mark_repo_notifications_read 将特定仓库中的所有通知标记为已读
search_users 搜索用户
仓库
list_my_repos 列出您拥有的所有存储库
create_repo 创建新存储库
fork_repo 分叉存储库
search_repos 搜索存储库
分支
list_branches 列出存储库中的所有分支
create_branch 创建新分支
delete_branch 删除分支
文件
get_file_content 获取文件内容
create_file 创建新文件
update_file 更新现有文件
delete_file 删除文件
提交
list_repo_commits 列出存储库中的提交
问题
list_repo_issues 在存储库中列出问题
get_issue_by_index 获取特定问题
create_issue 创建新问题
add_issue_labels 为问题添加标签(需要数字标签ID)
update_issue 更新现有问题(需要数字里程碑ID)
issue_state_change 打开或关闭问题
list_repo_milestones 列出里程碑及其ID(与 update_issue)
list_repo_labels 列出标签及其ID(与 add_issue_labels)
评论
list_issue_comments 列出对问题或PR的评论
get_issue_comment 获取具体评论
create_issue_comment 为问题或PR添加评论
edit_issue_comment 编辑评论
delete_issue_comment 删除评论
拉取请求
list_repo_pull_requests 在存储库中列出拉取请求
get_pull_request_by_index 获取特定的拉取请求
create_pull_request 创建新的pull请求
update_pull_request 更新现有的pull请求
list_pull_reviews 列出拉取请求的评论
get_pull_review 获取特定的拉取请求审核
list_pull_review_comments 列出对拉取请求审核的评论
行动
dispatch_workflow 通过触发工作流运行 workflow_dispatch 事件
list_workflow_runs 列表工作流运行时,可选择按状态、事件或SHA进行筛选
get_workflow_run 获取按ID运行的特定工作流的详细信息
组织
search_org_teams 搜索组织中的团队
服务器
get_forgejo_mcp_server_version 获取MCP服务器版本

命令行接口命令模式

您可以直接从命令行调用任何工具,而无需运行MCP服务器。这对于shell脚本、CI/CD管道和Claude代码技能非常有用。

# List all available tools (grouped by domain)
forgejo-mcp --cli list

# Invoke a tool with JSON arguments
forgejo-mcp --cli get_issue_by_index --args '{"owner":"goern","repo":"forgejo-mcp","index":1}'

# Pipe JSON arguments via stdin
echo '{"owner":"goern","repo":"forgejo-mcp"}' | forgejo-mcp --cli list_repo_issues

# List recent workflow runs (text output)
forgejo-mcp --cli list_workflow_runs \
  --args '{"owner":"goern","repo":"forgejo-mcp"}' \
  --output=text

# List only failed runs
forgejo-mcp --cli list_workflow_runs \
  --args '{"owner":"goern","repo":"forgejo-mcp","status":"failure"}' \
  --output=text

# Show a tool's parameters
forgejo-mcp --cli create_issue --help

# Control output format (json or text)
forgejo-mcp --cli list --output=json
forgejo-mcp --cli get_my_user_info --args '{}' --output=text

CLI模式要求相同 FORGEJO_URL 和 FORGEJO_ACCESS_TOKEN 配置为MCP服务器模式。默认情况下,工具结果以JSON格式写入stdout;错误将以非零退出代码进入stderr。

配置选项

您可以使用命令行参数或环境变量配置服务器:

CLI参数 环境变量 描述
--url FORGEJO_URL 您的Forgejo实例URL
--token FORGEJO_ACCESS_TOKEN 您的个人访问令牌
--debug FORGEJO_DEBUG 启用调试模式
--transport - 运输方式: stdio 或 sse
--sse-port - SSE模式端口(默认值:8080)
--cli - 进入CLI模式以直接调用工具
--user-agent FORGEJO_USER_AGENT HTTP用户代理标头(默认值: forgejo-mcp/<version>)

命令行参数优先于环境变量。

故障排除

启用调试模式 查看详细日志:

forgejo-mcp --transport sse --url <url> --token <token> --debug

或者设置环境变量:

export FORGEJO_DEBUG=true

自定义用户代理:如果您的Forgejo实例或代理阻止了默认设置 go-http-client 用户代理,设置一个自定义代理:

# Via environment variable
export FORGEJO_USER_AGENT="forgejo-mcp/1.0.0"

# Or via CLI flag
forgejo-mcp --user-agent "forgejo-mcp/1.0.0" --transport sse --url <url> --token <token>

获取帮助

面向开发者

看 开发商.md 获取构建说明、架构概述和贡献指南。

已知问题

  • go install ...@latest 失败 --The go.mod 包含a replace 指令(用于分叉的Forgejo SDK),防止远程 go install。使用中所示的克隆和构建工作流 快速开始 相反。已追踪 #67.

贡献者

forgejo-mcp由每个提交问题、编写代码、审查PR和推进项目的人塑造。谢谢大家。 🙏

代码贡献者

贡献者 亮点
歌德 (Christoph Görn) 项目创建者和维护者
Ronmi Ren 联合创作者;SSE/HTTP传输、问题阻止、CI/CD改进、徽标、Glama规范
twstagg (Tristin Stagg) 用户代理配置支持(PR#89)
mattdm (Matthew Miller) 日志记录改进、FORGEJO_*迁移、README、URL重构
按口味 check_notifications +全面通知管理API(PR#84、#86);功能请求#80、#85
杰西地形。 请求审核和评论支持(PR#51)
苹果 自定义SSE端口支持,错误修复
支尔格74 mcp-go v0.44.0依赖更新(PR#90)
th (托米·哈帕涅米) update_pull_request 工具
希丰 早期错误修复和更新
肖伦妮 早期捐款
技术知识 早期捐款
yp05327 早期捐款
mw75 所有者/组织对回购创建的支持(PR#18)
达克斯·凯尔森 问题评论管理(PR#34)
古鲁普拉萨德·库尔卡尼 Arch Linux AUR安装文档(PR#69)
马里奥·沃尔夫 捐款
马西莫 Fraschetti 捐款

社区贡献者

塑造项目方向的问题记者和讨论参与者:

贡献者 贡献
按口味 提交#80(里程碑/标签发现)、#85(通知API提案);讨论中的积极审阅者
霍卡瓦尔 已提交#82(修复技能),#70(macOS arm64版本),#62(二进制版本和mise支持)
马尔科姆·米耶 已提交#59(PR审查工具——自实施以来)
红胡子 已提交#60(操作支持——自实施以来)
c6sepl6p 提交#72(base64编码),#54(合并拉取请求——自实现以来)
马利克 已提交#73(版本标志),#47(Nix构建修复)
a2800276 已提交#74(OpenAI兼容性)
西蒙纳德 提起#49(去安装支持)
BasdP 已提交#42(项目支持)
BoBeR182 已提交#32(维基支持)
fraschm98 早期问题报告

Cyborg贡献者

该项目还收到了人工智能编码代理的贡献——作为定期PR提交,由人类审查:

代理人 角色 贡献
布伦纳公理 (b4-dev,B4arena) 人工智能开发代理 list_repo_milestones, list_repo_labels 工具(PR#83);比赛条件修复(PR#78);贡献者文档(PR#87、#88);申请号76;代码审查
opencode AI开发代理 请求审核和评论支持(PR#51)
b4mad发布机器人 发布自动化 自动更新日志和发布标记
#B4mad Renovate机器人 依赖更新 自动依赖升级

想贡献吗?打开问题或拉取请求——欢迎所有人。

许可证

这个项目是开源的。有关许可证的详细信息,请参阅存储库。