项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,它被设计为在 Amazon Lambda 上以 Serverless 的方式运行。该服务器的核心功能是作为 MCP 应用的后端,为 LLM 客户端提供访问和操作 GitHub 代码仓库的能力。通过 Streamable HTTP 协议,它能够高效地处理客户端请求,并返回结构化的上下文信息。
主要功能点
- Streamable HTTP MCP 协议支持: 使用高效的 Streamable HTTP 协议与客户端通信,优化数据传输性能。
- Serverless 弹性部署: 基于 Amazon Lambda 部署,具备自动伸缩和按需付费的特性,降低运维成本。
- 丰富的 GitHub 工具集: 提供一系列工具,允许 LLM 客户端操作 GitHub 仓库,包括:
- 文件操作: 创建、读取、更新仓库中的文件。
- Issue 管理: 创建、查询、更新 Issue 和 Issue 评论。
- Pull Request 管理: 创建、查询、合并 Pull Request,以及进行代码评审。
- 代码搜索: 在仓库中搜索代码。
- 用户和仓库搜索: 搜索 GitHub 用户和仓库信息。
- 分支和提交操作: 创建和更新分支,查询提交历史。
安装步骤
-
前置条件:
- 确保已安装 Node.js 20+
- 已配置 AWS CLI 并且具有部署 Lambda 函数的权限
- 已安装 OSS-Serverless CLI ('npm install -g osls')
-
克隆仓库:
git clone https://gitlab.aws.dev/wsuam/sample-serverless-mcp-server.git cd sample-serverless-mcp-server/src/github/ -
安装依赖:
npm install -
配置 GitHub Personal Access Token: 复制 'serverless.example.yml' 为 'serverless.yml',并编辑 'serverless.yml' 文件,将 '<Your GitHub Personal Access Token>' 替换为你的 GitHub Personal Access Token。 请务必妥善保管 'serverless.yml' 文件,避免泄露 Token。
cp serverless.example.yml serverless.yml # 编辑 serverless.yml, GITHUB_PERSONAL_ACCESS_TOKEN: <Your GitHub Personal Access Token> -
部署到 AWS Lambda:
npm sls deploy部署完成后,你将获得 API Gateway 的终端 URL,这个 URL 将用于 MCP 客户端与服务器进行通信。
服务器配置
MCP 客户端需要以下配置信息才能连接到此 MCP 服务器。请将以下 JSON 配置填入你的 MCP 客户端配置中,并将 'YOUR_API_GATEWAY_ENDPOINT' 替换为部署步骤中获得的 API Gateway 终端 URL。
{ "serverName": "github-mcp-server", "command": "node", "args": ["/path/to/your/sample-serverless-mcp-server/src/github/index.js"], "transport": "http-stream", "baseURL": "YOUR_API_GATEWAY_ENDPOINT" }
- 'serverName': 服务器名称,用于在客户端中标识该服务器连接。
- 'command': 启动服务器的命令,由于是 Lambda 环境,实际执行的是 'index.handler' 函数,这里为了符合配置格式填写 'node' 即可。
- 'args': 命令参数,同样因为是 Lambda 环境,实际参数会被忽略,这里为了符合配置格式,填写服务器入口文件路径即可,'/path/to/your/sample-serverless-mcp-server/src/github/index.js' 仅为示例,实际路径在 Lambda 环境中不重要。
- 'transport': 传输协议,本项目使用 'http-stream' 表示基于 Streamable HTTP 的协议。
- 'baseURL': API Gateway endpoint URL,这是部署到 AWS Lambda 后生成的 API 网关终端地址。 请务必替换 'YOUR_API_GATEWAY_ENDPOINT' 为你实际部署后获得的 URL。MCP 客户端通过此 URL 发送请求与服务器通信。
基本使用方法
部署并配置 MCP 客户端后,客户端可以通过 JSON-RPC 协议调用服务器提供的各种工具。例如,可以使用 'create_issue' 工具在指定的 GitHub 仓库中创建一个新的 Issue。具体的工具列表和参数定义请参考仓库代码中的 'index.ts' 文件,该文件详细注册了所有可用的工具及其参数 Schema。
信息
分类
开发者工具