项目简介

本项目是一个基于 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 用户和仓库信息。
    • 分支和提交操作: 创建和更新分支,查询提交历史。

安装步骤

  1. 前置条件:

    • 确保已安装 Node.js 20+
    • 已配置 AWS CLI 并且具有部署 Lambda 函数的权限
    • 已安装 OSS-Serverless CLI ('npm install -g osls')
  2. 克隆仓库:

    git clone https://gitlab.aws.dev/wsuam/sample-serverless-mcp-server.git
    cd sample-serverless-mcp-server/src/github/
  3. 安装依赖:

    npm install
  4. 配置 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>
  5. 部署到 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。

信息

分类

开发者工具