项目简介

Claude Code GitHub Action 是一款强大的GitHub自动化工具,它将Anthropic Claude大模型集成到GitHub工作流中,使其能够理解和响应开发者在Issues、Pull Requests及评论中的请求,例如回答代码问题、执行代码审查、甚至实现简单的代码修改。

本项目仓库包含了实现这一功能的GitHub Action代码,以及一个专门的Model Context Protocol (MCP) 服务器实现。这个MCP服务器组件负责为LLM客户端(即Claude)提供在GitHub Actions运行环境中执行文件系统操作(如读取、写入、删除文件)以及Git操作(如提交更改)的能力。

主要功能点 (MCP服务器部分)

  • 文件系统工具: 提供标准MCP工具,允许LLM客户端读取 ('Read')、写入 ('Write')、查找 ('Glob')、搜索 ('Grep') 文件内容。
  • Git操作工具: 提供 'mcp__github_file_ops__commit_files' 和 'mcp__github_file_ops__delete_files' 工具,允许LLM客户端通过GitHub API原子性地提交本地文件的更改或删除文件到指定分支。
  • MCP协议支持: 作为MCP服务器,它通过Stdio(标准输入/输出)通道接收LLM客户端发送的JSON-RPC请求,执行相应的工具功能,并返回JSON-RPC响应。

安装步骤

这个MCP服务器不是一个独立安装的应用,它是 Claude Code GitHub Action 的一个内置组件。用户通过在GitHub仓库中配置一个GitHub Actions工作流来安装和使用整个Action。

基本的安装步骤如下:

  1. 在你的GitHub仓库中创建一个GitHub Actions工作流文件(例如 '.github/workflows/claude.yml')。
  2. 在工作流文件中,使用 'anthropics/claude-code-action@beta' 这个Action。
  3. 根据你的AI提供商(Anthropic API, AWS Bedrock, Google Vertex AI)配置相应的认证信息,通常通过GitHub Secrets管理API密钥或配置OIDC权限。
  4. 配置触发条件(例如 'issue_comment' 或 'pull_request' 事件)。

当你配置的工作流运行时,GitHub Action会自动下载并执行本仓库中的代码,其中就包括根据需要启动和配置这个文件操作MCP服务器。

服务器配置 (为MCP客户端提供)

这个MCP服务器是为MCP客户端(例如运行在Actions环境中的Claude LLM)提供服务的。用户无需手动配置服务器进程本身,但理解Action如何配置LLM客户端连接到它是重要的。

GitHub Action会自动生成一个MCP配置(JSON格式),传递给LLM客户端。这个配置告诉客户端如何连接到不同的MCP服务器。对于本仓库提供的文件操作服务器,其配置大致如下:

  • 服务器名称: 'github_file_ops'
  • 启动命令 (command): 'bun' (前提是Actions环境中已安装Bun)
  • 命令参数 (args): '["run", "<实际的Action代码路径>/src/mcp/github-file-ops-server.ts"]' (指向MCP服务器脚本的路径)
  • 环境变量 (env): 包含服务器运行所需的GitHub Token ('GITHUB_TOKEN')、仓库信息 ('REPO_OWNER', 'REPO_NAME', 'BRANCH_NAME') 以及工作目录 ('REPO_DIR')。

LLM客户端通过读取这份配置,知道如何启动这个进程,并通过Stdio通道与之进行基于JSON-RPC的MCP通信。

基本使用方法

使用这个MCP服务器的功能是通过与 Claude Code GitHub Action 交互来隐式完成的。当你在GitHub Issues 或 Pull Requests 中通过 '@claude' 提及Claude(或者配置了其他触发方式),并提出需要文件操作或代码修改的请求时,GitHub Action会被触发。

Action会准备好上下文,然后启动Claude(LLM客户端),并提供连接到包括文件操作MCP服务器在内的配置。Claude作为LLM客户端,会根据你的请求和提供的上下文,自主决定是否需要调用文件操作MCP服务器提供的工具(例如 'Read' 或 'mcp__github_file_ops__commit_files'),并通过MCP协议向服务器发送请求来执行这些操作。

用户的使用体验是自然的GitHub交互,而MCP服务器的调用是底层自动化的一部分。

示例:

  • 在PR评论中 '@claude please fix the typo in README.md' - Claude可能会调用 'Read' 读取README,然后调用 'Write' 或 'mcp__github_file_ops__commit_files' 修改并提交。
  • 在Issue中分配给Claude或在Issue body中提及 '@claude' 并请求添加一个新功能 - Claude可能会调用 'Write' 创建新文件,然后调用 'mcp__github_file_ops__commit_files' 提交,并生成一个PR链接。

信息

分类

开发者工具