项目简介
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,方便工具注册和调用。
安装步骤
方式一:直接从源代码运行
- 安装 Go 语言环境: 确保你的系统已安装 Go 语言(版本需兼容项目要求)。
- 克隆仓库: 使用 Git 克隆 AmphiPod 仓库到本地:
git clone https://github.com/sea-monkeys/amphipod.git cd amphipod - 运行服务器: 在仓库根目录下,执行以下命令启动服务器:
go run main.go
方式二:使用 Docker Compose
- 安装 Docker 和 Docker Compose: 确保你的系统已安装 Docker 和 Docker Compose。
- 克隆仓库: 使用 Git 克隆 AmphiPod 仓库到本地:
git clone https://github.com/sea-monkeys/amphipod.git cd amphipod - 启动服务器: 在仓库根目录下,执行以下命令使用 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 服务器提供两个主要接口:
-
获取工具列表 ('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 -
调用工具 ('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 服务器交互。
信息
分类
开发者工具