MCP.so
登录

GitCafe MCP Server

@GitCafe

基本信息

传输方式

streamable-http

认证方式

OAuth

分类

开发工具

作者

GitCafe

关于 GitCafe MCP Server

GitCafe 官方托管的 MCP 服务器让 AI 客户端访问 GitCafe 的 Git 托管服务。公开仓库无需登录即可读取;通过 OAuth 连接后,可访问私有仓库,并使用处理 issue、pull request、评审和合并的写入类工具,范围仅限你批准的仓库和权限。

连接信息

https://git.cafe/mcp

接入方式

claude mcp add gitcafe --transport http https://git.cafe/mcp

GitCafe MCP Server 工具

23

Read who this connection is signed in as and what it may reach: your actor identity and, for an OAuth connection, the repositories and permissions the user approved and when it expires. Returns null when the credential names no user. Call it first to learn which repositories the other tools can reach: every repository the user can access, or the ones they selected (adding one to a selection needs the user to connect again).

List the repositories this connection can read, oldest first, one page at a time, narrowed by owner, topic or name prefix (filters combine). Signed in, it lists the approved repositories; without sign-in it lists public repositories only, needs owner or topic, and q is not available. Pass an item's owner and name to the other tools.

Read one repository: its identity, description, topics, visibility, default branch, fork parent, version and timestamps. Use it to find the default branch before list_refs, list_tree or read_file, and the id before create_pull_request.

List a repository's branches or its tags, sorted by name, one page at a time, optionally narrowed by a name substring. Each ref carries the commit it points to and, for an annotated tag, its signature check. Pass a ref's name as ref to list_tree, read_file or search_code, or its target commit's oid as oid to pin later reads to one commit.

List the entries of one directory of a repository, not recursively, at a branch, tag or commit, one page at a time; later pages stay on the same commit. Each entry says whether it is a file, directory, submodule or symbolic link. Omit path for the root; pass a tree's path back to descend and a blob's path to read_file.

Read one file of a repository at a branch, tag or commit, a window of lines at a time. A text file comes with its line window and nextLine to continue; a binary file comes with null content. A window holds at most maxLines lines and 64 KiB; a file over 1 MiB cannot be read. Take path from list_tree or search_code.

Search the text files of a repository at a branch, tag or commit for a literal string, optionally within one file or directory. Matches come one per matching line, in file and line order, with context lines; truncated says when maxMatches or a size limit cut them short, so narrow by path or raise maxMatches. Pass a match's path and lineNumber to read_file.

List a repository's issues, newest first, one page at a time, optionally narrowed by workflow state or by words in the title or description; total counts every match. Pass an issue's number as issue to issue_read, update_issue and add_comment, and reuse the label, assignee and milestone IDs it shows when creating issues.

Read one issue, one facet per call. detail (the default): the issue, with its version and what you may do to it. comments: one page of its comments, oldest first, with the IDs and versions update_comment takes. Take the issue number from list_issues or a create_issue receipt.

List a repository's pull requests, oldest first, one page at a time, optionally narrowed by lifecycle state or by text in the title. Each item carries the number, head commit and version the other pull request tools take. For a pull request's description, merge readiness, reviews, commits, files or comments call pull_request_read.

Read one pull request, one facet per call. detail: the pull request, with its version, headOid, mergeRoute and what you may do to it. status: merge readiness and checks, with the version, headOid and baseOid merge_pull_request needs. reviews, commits, files, comments: one page each; files carries the version and paths get_pull_request_diff takes, comments the IDs and versions add_comment and update_comment take. merge_status: a merge operation's outcome; poll an accepted merge with backoff, as accepted is not completed. Take the number from list_pull_requests or a create_pull_request receipt.

Read the patch of chosen changed files of a pull request, pinned to the version the files were listed at. Each file comes with its hunks and line origins; a binary or too-large file has no hunks, and hunksOmitted marks a file whose hunks did not fit the response, so request fewer paths. Take paths and expectedVersion from pull_request_read facet files; the line numbers are what add_comment target pull_inline anchors to.

Create an issue in a repository with a title and, optionally, a description, priority, due date, workflow state, labels, assignees and a milestone. Returns the new issue's number and the version its next write takes. Take label, assignee and milestone IDs from the issues list_issues or issue_read return, and your own actorId from get_me. There is no idempotency key: on an unknown outcome, list_issues before trying again rather than retrying automatically.

Change one issue, one action per call: edit its title, description, priority, due date or open workflow state; close it as completed or canceled; or reopen it. Returns the version the next write takes. Take the number and current version from issue_read, list_issues or the last receipt; the write fails if the issue changed since. An edit overwrites the previous values, which are not kept; title, description and open/closed changes also reach a linked GitHub issue. Labels, assignees and milestones cannot be changed with these tools.

Post one comment, by target: on an issue; in a pull request's conversation; inline on a file or lines of a pull request's diff, anchored to an exact commit; or as a reply in an existing pull request thread, which inherits the thread's anchor. Returns the comment's id and version for update_comment, and for a pull request comment its threadId. For an inline comment take path and the commit (headOid for the right side and file comments, comparisonBaseOid for the left side) from pull_request_read facet files; for a reply take replyTo from facet comments. There is no idempotency key: on an unknown outcome, read the comments before trying again rather than retrying automatically.

Change one comment, one action per call: edit the body of an issue or pull request comment, or resolve or unresolve a pull request thread. Returns the version the next write takes. Take the comment ID and current version from issue_read or pull_request_read facet comments or the last receipt; the write fails if the comment changed since. To resolve or unresolve, pass the thread's root comment (its threadId) and that root's version. An edit overwrites the old text, which is not kept; resolution stays in GitCafe and is not written to GitHub. Comments cannot be hidden or deleted with these tools.

Merge a pull request into its target branch with an explicit strategy, at the exact head, base and version you reviewed. Returns a merge operation: accepted is admitted but not merged yet, completed is merged, failed is not merged. Take headOid, baseOid and expectedVersion from pull_request_read facet status, and which strategies are allowed from its merge verdict; follow an accepted operation with facet merge_status, with backoff. A merge cannot be undone with these tools. On an unknown outcome, retry with the same requestId and input, never with a new key; a different input under the same requestId is rejected.

Commit file edits to a branch on the server, without a clone or push: write files (full content), delete, rename or change their mode, in one commit on the branch's exact current commit. Returns the job: succeeded with the new commit, failed when nothing was committed, or another state when the outcome is not confirmed. Take expectedOid from list_refs and blob OIDs for expected from read_file; pin every path you read and rewrite with expected, so a concurrent change fails the commit instead of being overwritten. On failed, read again and rebuild the edits; on an unconfirmed outcome, retry with the same requestId and input, never with a new key. Push rules apply as for a git push; protected branches may refuse it. Content is limited by this endpoint's request size; push larger changes with git.

Read a repository's CI, one facet per call. runs: one page of Buildkite runs, newest first, narrowed by commit or state. run: one run by runId. checks: one page of the checks on a commit, with a summary over all of them. jobs: one page of a run's jobs. log: the end of a job's log. Runs, run and checks read what GitCafe recorded, including GitHub checks on a linked repository; jobs and log read Buildkite live and need the repository owner to have shared logs. Take the commit from pull_request_read (headOid) or list_refs, runId from a run or check, and jobId from facet jobs. Long text fields are cut to fit, and truncatedFields names them. CI cannot be started, rerun or cancelled with these tools.

Open a pull request that merges a source branch of this repository or a fork into a target branch, with a title and optional description. Returns the new pull request's number and the version its next write takes. Take sourceRepo from get_repository (the fork's id, or this repository's) and the branch names from list_refs; the source branch must already be pushed with git or the Cafe CLI, as these tools cannot push. With a stable submissionKey, retrying after an unknown outcome returns the original pull request instead of a duplicate; without one, list_pull_requests before trying again rather than retrying automatically.

Change one pull request, one action per call: edit its title, description or target branch; close it without merging (which also clears draft); reopen it; mark it as a draft; or mark it ready for review. Returns the version the next write takes. Take the number and current version from pull_request_read, list_pull_requests or the last receipt; the write fails if the pull request changed since. An edit overwrites the previous values, which are not kept; title, description and state changes also reach a linked GitHub pull request. Merging is merge_pull_request; reviewers, labels and assignees cannot be changed with these tools.

Submit a review of a pull request at an exact commit and version: approve, request changes, or comment without a decision, with an optional overall body. Returns the review with its id, verdict and commit. Take commitOid (headOid) and expectedVersion from pull_request_read facet detail or status; the review fails if the pull request changed since, so read again and resubmit at the new head. To publish a draft review you saved in the GitCafe web UI, with its inline comments, pass its id and version as draft with the same verdict, body and commit it was saved with; these tools cannot create or read drafts. Approving or requesting changes on your own pull request is refused, and a submitted review cannot be withdrawn with these tools. On an unknown outcome, retry with the same requestId and input, which returns the original review; a different input under the same requestId is rejected.

Send a report about GitCafe itself to the GitCafe team: a tool that failed or misbehaved, a confusing result, or a missing capability. Returns a reference to give the user for any follow-up; the report is not readable with these tools. Give a one-line summary, what you tried and what happened in body, and the tool name, request ID or problem code in context. A bug in the user's own repository is an issue for create_issue, not feedback. There is no idempotency key: on an unknown outcome, tell the user rather than retrying automatically, as a retry files a second report.

概览

什么是 GitCafe MCP Server?

GitCafe MCP Server 是 GitCafe 官方托管的端点(https://git.cafe/mcp),让 Claude、ChatGPT 等 AI 客户端读取代码仓库,并在你授权后处理 issue、pull request 和代码评审。

GitCafe 是一个 Git 托管与代码评审服务,支持堆叠式 pull request、可选的 GitHub 双向同步以及 cafe CLI。GitCafe MCP Server 由 GitCafe 自己运营。公开仓库无需登录即可读取;通过 OAuth 登录后可访问私有仓库并使用写入类工具,权限仅限于你批准的仓库和权限。

如何使用 GitCafe MCP Server?

该服务器使用 Streamable HTTP 传输,地址为:

https://git.cafe/mcp

读取类工具可以匿名用于公开仓库。写入类工具和 get_me 会触发登录:客户端打开浏览器,你用已验证的 GitCafe 账号登录,选择最多 50 个仓库,检查权限(读取默认开启,写入和管理默认关闭),然后点击 Approve connection。GitCafe 文档提醒:不要把 token 或密码粘贴到连接器设置中,登录由浏览器流程完成。

Claude Code

claude mcp add --transport http gitcafe https://git.cafe/mcp

需要访问私有仓库或写入权限时,在 Claude Code 中运行 /mcp 完成登录。

Claude Desktop / claude.ai

打开 Customize → Connectors → Add → Add custom connector,填写名称和 https://git.cafe/mcp,保留自动检测到的登录和自动注册选项,然后选择 Add → Connect 并批准连接。GitCafe 建议把工具保持为 Needs approval,以便逐次审核调用。

Cursor

将服务器添加到 ~/.cursor/mcp.json(或项目内的 .cursor/mcp.json):

{
  "mcpServers": {
    "gitcafe": {
      "url": "https://git.cafe/mcp"
    }
  }
}

VS Code

添加到 .vscode/mcp.json:

{
  "servers": {
    "gitcafe": {
      "type": "http",
      "url": "https://git.cafe/mcp"
    }
  }
}

GitCafe 也提供了 ChatGPT 的配置说明:开启开发者模式后,用该 URL 创建一个 MCP 应用,并保持 OAuth。

GitCafe MCP Server 的主要功能

  • 官方服务,由 GitCafe 托管,本地无需运行任何程序。
  • 匿名读取公开仓库:代码、分支和标签、issue、pull request、评审和 CI 结果。
  • OAuth 连接仅限你选择的仓库(最多 50 个)和授予的权限;写入和管理权限默认关闭。
  • 完整的 pull request 工作流:读取 diff、行内评论、提交评审、解决讨论线程以及合并(合并需要 pr:merge:write 权限)。
  • issue 管理:创建、编辑、关闭、重新打开和评论。
  • 通过 Buildkite 的运行、检查、任务和日志末尾查看 CI 状态。
  • 每个操作都受仓库规则约束,应用不能推送提交、创建分支、启动 CI 或删除仓库。
  • 连接有效期 30 天,可随时在 Settings → Authorized Apps 中撤销。

GitCafe MCP Server 工具

我们对该端点的探测返回了 21 个工具:

  • 身份与仓库:get_me 显示连接所代表的身份及可访问范围;list_repositories 和 get_repository 用于查找仓库及其默认分支。
  • 代码:list_refs、list_tree、read_file 和 search_code 浏览分支、标签、目录和文件,并可在任意 ref 上进行字面字符串搜索。
  • Issue:list_issues、issue_read、create_issue 和 update_issue。
  • Pull request:list_pull_requests、pull_request_read、get_pull_request_diff、create_pull_request、update_pull_request、submit_review 和 merge_pull_request。
  • 评论:add_comment 可在 issue、pull request 会话或 diff 行内发表评论;update_comment 用于编辑评论和解决讨论线程。
  • CI:ci_read 读取 Buildkite 的运行、检查、任务和日志。

写入类工具需要传入预期版本号,因此过期的写入会失败,而不会覆盖他人的修改。merge_pull_request 可能在合并完成前返回 accepted,智能体应持续检查直到状态变为 completed。

GitCafe MCP Server 的使用场景

  • 探索陌生的公开仓库:“找到这个仓库里的重试逻辑在哪里,并解释它。”
  • 评审 pull request:“读取 PR 42 的 diff,对有风险的改动留下行内评论,如果缺少测试就请求修改。”
  • 分拣 issue:“列出提到 login 的未关闭 issue,并给重复的打上标签。”
  • 检查 CI:“这个 pull request 最近一次运行为什么失败?显示失败任务日志的末尾。”
  • 合并堆叠 PR:“在当前 head 上批准 PR 18,检查通过后合并。”

GitCafe MCP Server 常见问题排查

  • 看不到私有仓库:匿名访问只覆盖公开仓库,连接也只覆盖你选择的仓库。连接之后新建的仓库不会自动包含,需要重新连接来添加。
  • 一个月后工具失效:连接有效期为 30 天,请在客户端中重新连接。
  • REST API token 被拒绝:REST API 和 MCP 的 token 相互独立、不能混用。请通过 MCP 登录流程连接 MCP 服务器。
  • 触发速率限制:已登录的 MCP 请求计入账号的 API 额度(每 60 秒 1,000 次,按套餐倍增);匿名请求每个地址每小时限 1,200 次。

常见问题

1

GitCafe MCP Server 是官方的吗?

是的。GitCafe 在 `https://git.cafe/mcp` 运行该服务,并在账号文档的“Connect an MCP app”中提供说明。

2

使用它需要账号吗?

读取公开仓库不需要:读取类工具无需登录即可使用。私有仓库、写入类工具和 `get_me` 需要通过 OAuth 连接一个已验证的 GitCafe 账号。

3

GitCafe 免费吗?

GitCafe 提供免费套餐,公开测试期间私有仓库也免费。付费套餐(Pro、Team 和 Enterprise)提供更多存储空间和更高的 API 速率限制。

4

智能体可以推送代码吗?

不可以。已连接的应用不能创建分支或提交、推送、启动或取消 CI,也不能管理或删除仓库。它可以基于已有分支创建 pull request、进行评审,并在获得权限后合并。

5

它支持 Claude Code、Cursor 和 VS Code 吗?

支持。它是标准的 Streamable HTTP 端点;在各客户端的远程 MCP 配置中添加该 URL,并在提示时于浏览器中登录即可。

6

如何撤销访问权限?

在 GitCafe 中打开 **Settings → Authorized Apps**,找到对应应用并选择 **Revoke access**,连接会立即终止。

7

GitCafe 远程 MCP 服务器是什么?

GitCafe 的远程 MCP 服务器是一个托管的 Model Context Protocol 端点,地址是 https://git.cafe/mcp,AI 助手无需在本地安装或运行任何东西即可连接。

8

怎么连接 GitCafe 的 MCP 服务器?

把端点 https://git.cafe/mcp 添加到任意支持 MCP 的客户端,比如 Claude Code、Cursor 或 VS Code。本页的接入代码块可以一步配置好每个客户端。

9

GitCafe 的 MCP 服务器需要认证吗?

需要。GitCafe 使用 OAuth——第一次连接时,你的 MCP 客户端会打开浏览器窗口登录并授权,之后会复用这个凭证。

10

GitCafe 的 MCP 服务器用的是哪种传输方式?

GitCafe 暴露的是 streamable-http 端点,这是远程 MCP 服务器普遍使用、主流客户端都支持的传输方式。

评论