关于 SwapChan
SwapChan 是面向 AI Agent 的 MCP 服务,可提供 EVM 同链与跨链兑换报价及未签名交易。它还提供路线比较、代币和链信息及交易状态查询,不会签名或广播交易。
主要功能
- 01列出支持的链和代币
- 02获取最优路线兑换报价
- 03比较同链与跨链路线
- 04构建未签名兑换交易
- 05查询路线状态
适用场景
- 01在 EVM 代币兑换前比较路线
- 02准备交易以供另行审核和签名
- 03查看路线进度及目标链交易哈希
MCP 相关
SwapChan 通过 Streamable HTTP 或 stdio 向 MCP 客户端提供六种兑换与路线工具。远程 HTTP 支持 API 密钥认证和速率限制;服务不会签名或广播交易。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.swapchan.com/mcpclaude mcp add --transport http tsavo-swapchan https://mcp.swapchan.com/mcp{"mcpServers":{"tsavo-swapchan":{"type":"http","url":"https://mcp.swapchan.com/mcp"}}}在 Cursor 中打开{"servers":{"tsavo-swapchan":{"type":"http","url":"https://mcp.swapchan.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"tsavo-swapchan":{"type":"http","url":"https://mcp.swapchan.com/mcp"}}}{"mcpServers":{"tsavo-swapchan":{"serverUrl":"https://mcp.swapchan.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@swapchan/mcp — SwapChan MCP 服务
面向 AI Agent 的 Swap-chan:通过 Model Context Protocol 获取同链和跨链 EVM 兑换的最优价格报价、路由比较结果和未签名的兑换交易。
- 官方 MCP TypeScript SDK v2(
@modelcontextprotocol/server2.3.1,规范版本为 2026-07-28;无状态,也支持 2025 年的客户端)。 - 传输方式:位于
/mcp的 Streamable HTTP(远程服务,通过 API 密钥进行身份验证,并针对每个密钥实施速率限制)和 stdio(--stdio,本地)。 - 通过 HTTP 调用
apps/api,使用packages/shared/README.md中冻结的契约。始终不使用链密钥、不签名、不广播。
工具
| 工具 | 功能 |
|---|---|
get_supported_chains | 链及其 chain-chan 吉祥物 |
get_supported_tokens | 代币列表,可选 chainId / search |
get_quote | 单条最优路由(扣除 Gas 和费用后的净 USD) |
compare_routes | 所有路由按排名排列;alsoToChainIds 可比较同链与跨链目的地 |
build_swap_tx | 最优或指定路由的未签名交易 + 需要时的精确金额 ERC-20 授权交易 + eth_call 模拟(设置 RPC_URL_<chainId> 时) |
get_route_status | pending / done / failed / not_found + 目的地交易哈希 |
金额:将 amount 作为十进制字符串(例如 "1.5",会按代币精度转换)或 amountBaseUnits(wei)传入。滑点以 bps 为单位,默认值为 50,且受 MCP_MAX_SLIPPAGE_BPS 限制(默认值为 300)。所有失败都会以带有易读原因的 isError 工具结果返回。
permit2 目前始终为 null:API 契约 v1 尚不支持 Permit2 类型化数据。待 apps/api 添加后,数据将透传。
运行
pnpm --filter @swapchan/mcp build
SWAPCHAN_API_URL=http://localhost:8787 MCP_API_KEYS=key1,key2 pnpm --filter @swapchan/mcp start # http://127.0.0.1:8788/mcp
SWAPCHAN_API_URL=http://localhost:8787 node apps/mcp/dist/index.js --stdio # stdio
node apps/mcp/dist/mockApi.js # fake API on :8787 for local play
| 环境 | 默认值 | |
|---|---|---|
SWAPCHAN_API_URL | http://localhost:8787 | apps/api 基础 URL(回退至 NEXT_PUBLIC_API_URL) |
SWAPCHAN_API_KEY | – | 如果已设置,则作为 x-api-key 发送至上游 |
MCP_HOST / MCP_PORT | 127.0.0.1 / 8788 | 在生产环境中使用 TLS 代理时,设置 MCP_HOST=0.0.0.0 |
MCP_API_KEYS | – | 以逗号分隔的密钥;客户端发送 x-api-key: <key> 或 Authorization: Bearer <key> |
MCP_ALLOW_ANONYMOUS | 关闭 | 允许无密钥 HTTP 请求(按 IP 限速) |
MCP_RATE_LIMIT_PER_MIN | 60 | 每个密钥的令牌桶;429 + Retry-After |
MCP_MAX_SLIPPAGE_BPS / MCP_DEFAULT_SLIPPAGE_BPS | 300 / 50 | |
RPC_URL_<chainId> | – | 启用 build_swap_tx 中的授权额度检查和模拟 |
客户端配置
Claude Code
claude mcp add --transport http swapchan https://mcp.swapchan.com/mcp --header "x-api-key: YOUR_KEY"
Claude Desktop(claude_desktop_config.json,本地 stdio)
{
"mcpServers": {
"swapchan": {
"command": "node",
"args": ["/path/to/SwapChan/apps/mcp/dist/index.js", "--stdio"],
"env": { "SWAPCHAN_API_URL": "https://api.swapchan.com" }
}
}
}
Cursor(~/.cursor/mcp.json 或 .cursor/mcp.json)
{
"mcpServers": {
"swapchan": { "url": "https://mcp.swapchan.com/mcp", "headers": { "x-api-key": "YOUR_KEY" } }
}
}
MCP Inspector
npx @modelcontextprotocol/inspector --cli http://127.0.0.1:8788/mcp --transport http --header "x-api-key: key1" --method tools/list
注册表
server.json(schema 2025-12-11,已验证)通过 mcp-publisher publish 将远程服务发布为 io.github.TSavo/swapchan。
托管于 https://mcp.swapchan.com/mcp。
测试
pnpm --filter @swapchan/mcp test 会启动 API 合约的模拟实现(src/mockApi.ts),并通过 SDK
Client 使用 Streamable HTTP 驱动真实 HTTP 服务:列出工具、测试每个工具、验证身份验证 401、429 限速、滑点上限、输入验证和上游错误。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。