项目简介

AmphiPod 是一个基于 HTTP 协议实现的 Model Context Protocol (MCP) 服务器,它使用 Go 语言开发,并允许通过 WebAssembly 插件执行工具。AmphiPod 的目标是简化 AI 工具与大型语言模型 (LLM) 应用的集成过程,使得任何支持 HTTP 请求的编程语言都能方便地接入 MCP 服务器,扩展 LLM 的能力。

主要功能点

  • HTTP-Based MCP 服务器: 使用 HTTP 协议实现 MCP 规范,使得各种编程语言都能通过 HTTP 接口与服务器交互。
  • WebAssembly 工具执行: 利用 Extism 框架加载和执行 WebAssembly 插件作为工具,提高安全性和可移植性。
  • 语言无关性: 任何支持发送 HTTP 请求的语言都可以作为 MCP 客户端与 AmphiPod 服务器通信。
  • 轻量快速: 使用 Go 语言开发,保证了服务器的性能和效率。
  • 易于集成: 提供简单的 HTTP API,方便工具注册和调用。

安装步骤

方式一:直接从源代码运行

  1. 安装 Go 语言环境: 确保你的系统已安装 Go 语言(版本需兼容项目要求)。
  2. 克隆仓库: 使用 Git 克隆 AmphiPod 仓库到本地:
    git clone https://github.com/sea-monkeys/amphipod.git
    cd amphipod
  3. 运行服务器: 在仓库根目录下,执行以下命令启动服务器:
    go run main.go

方式二:使用 Docker Compose

  1. 安装 Docker 和 Docker Compose: 确保你的系统已安装 Docker 和 Docker Compose。
  2. 克隆仓库: 使用 Git 克隆 AmphiPod 仓库到本地:
    git clone https://github.com/sea-monkeys/amphipod.git
    cd amphipod
  3. 启动服务器: 在仓库根目录下,执行以下命令使用 Docker Compose 启动服务器:
    docker compose up

服务器配置

AmphiPod 服务器通过环境变量进行配置。以下是常用的配置项,你可以根据需要设置这些环境变量来启动服务器。

{
  "server name": "amphipod-server",
  "command": "go run main.go",
  "args": [],
  "env": {
    "HTTP_PORT": "8080", // (可选) 服务器监听的 HTTP 端口,默认为 8080
    "USE_HTTPS": "false", // (可选) 是否启用 HTTPS,设置为 "true" 启用,默认为 "false"
    "CERT_FILE": "mcp.amphipod.local.crt", // (可选) HTTPS 证书文件路径,启用 HTTPS 时需要配置
    "KEY_FILE": "mcp.amphipod.local.key",  // (可选) HTTPS 私钥文件路径,启用 HTTPS 时需要配置
    "AUTH_TOKEN": "your_auth_token",      // (可选) 身份验证令牌,用于保护服务器接口
    "REQUIRE_AUTH": "false"              // (可选) 是否启用身份验证,设置为 "true" 启用,默认为 "false"
  }
}

配置说明:

  • 'HTTP_PORT': 指定服务器监听的端口号,默认为 '8080'。你可以根据需要修改端口。
  • 'USE_HTTPS': 设置为 'true' 以启用 HTTPS。启用 HTTPS 需要同时配置 'CERT_FILE' 和 'KEY_FILE'。
  • 'CERT_FILE': HTTPS 证书文件的路径。你需要提供有效的 SSL 证书文件。
  • 'KEY_FILE': HTTPS 私钥文件的路径。你需要提供与证书匹配的私钥文件。
  • 'AUTH_TOKEN': 用于身份验证的令牌。如果设置了此项,客户端需要在请求头中包含 'Authorization: Bearer <AUTH_TOKEN>' 才能访问服务器接口。
  • 'REQUIRE_AUTH': 设置为 'true' 以启用身份验证。启用后,所有请求都需要有效的身份验证令牌。

配置 HTTPS 和身份验证 (可选):

如果你需要启用 HTTPS 和身份验证,可以设置以下环境变量,例如在启动服务器前执行:

export HTTP_PORT=8080
export USE_HTTPS=true
export CERT_FILE=mcp.amphipod.local.crt
export KEY_FILE=mcp.amphipod.local.key
export AUTH_TOKEN=shrimpsarebeautiful
export REQUIRE_AUTH=true
go run main.go

你需要替换 'mcp.amphipod.local.crt' 和 'mcp.amphipod.local.key' 为你实际的证书和私钥文件路径,并设置你自己的 'AUTH_TOKEN'。

基本使用方法

AmphiPod 服务器提供两个主要接口:

  1. 获取工具列表 ('GET /tools/list'): 用于获取服务器上注册的工具列表。

    使用 'curl' 命令示例:

    SERVICE_URL="http://localhost:8080"
    curl ${SERVICE_URL}/tools/list

    如果启用了身份验证,需要在请求头中添加 'Authorization':

    SERVICE_URL="https://mcp.amphipod.local:8080"
    curl -H "Authorization: Bearer shrimpsarebeautiful" ${SERVICE_URL}/tools/list
  2. 调用工具 ('POST /tools/call'): 用于调用指定的工具并传递参数。

    使用 'curl' 命令示例 (调用 'say_hello' 工具):

    SERVICE_URL="http://localhost:8080"
    DATA='{"name":"say_hello","arguments":{"name":"John Doe"}}'
    curl -X POST -H "Content-Type: application/json" -d "${DATA}" ${SERVICE_URL}/tools/call

    如果启用了身份验证,同样需要在请求头中添加 'Authorization':

    SERVICE_URL="https://mcp.amphipod.local:8080"
    DATA='{"name":"say_hello","arguments":{"name":"John Doe"}}'
    curl -X POST -H "Authorization: Bearer shrimpsarebeautiful" -H "Content-Type: application/json" -d "${DATA}" ${SERVICE_URL}/tools/call

    工具开发: AmphiPod 的工具以 WebAssembly 插件形式存在,你可以参考仓库中的 'functions' 目录下的示例来开发自己的工具。

    MCP 客户端开发: 你可以使用任何支持 HTTP 请求的编程语言开发 MCP 客户端,参考仓库中的 'samples/simple-mcp-host' 目录下的示例,了解如何与 AmphiPod 服务器交互。

信息

分类

开发者工具