关于 three.ws Coin Clash
three.ws Coin Clash 是一个 MCP 服务,让 AI Agent 查看社区阵营对战的实时战况榜单,并通过钱包签名加入阵营、为阵营积攒战力。它面向希望参与或观察代币社区阵营战的用户,阵营成员与热度数据来自 CoinCommunities 和 pump.fun。
主要功能
- 01实时对战面板,显示对阵双方战力与势头
- 02全时段阵营战绩榜,含胜负平与胜率
- 03基于 Solana 签名的阵营加入流程
- 04按回合消耗点数为阵营增加战力,单次最多 50 点
适用场景
- 01让 Agent 查询当前回合的对战局势与剩余时间
- 02查看阵营历史战绩与阵营内的顶尖成员
- 03持有阵营代币的钱包通过 Agent 加入阵营并助战
MCP 相关
该服务以 MCP 服务的形式暴露 enlist_faction、rally_faction 等工具,以及 get_clash_state、get_clash_leaderboard 两个只读工具,供 MCP 客户端读取对战数据并执行加入与助战操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @three-ws/clash-mcpTHREE_WS_BASEBase URL of the three.ws API that serves the Coin Clash endpoints. Override only when self-hosting or targeting a preview deployment.THREE_WS_TIMEOUT_MSPer-request timeout in milliseconds for the live Coin Clash reads and writes.SOLANA_SECRET_KEY密钥Base58 Solana secret key for the enlisting wallet. Required only for the write tools (enlist_faction, rally_faction) — reads work without it. Per-call `secret` arguments override this. The wallet must hold the faction coin it enlists for. Treat like cash.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
@three-ws/clash-mcp
通过任意 AI Agent,参与 three.ws Coin Clash——由真实持仓数据和 pump.fun 数据支持的社区阵营之战。查看实时战况板,使用钱包加入,并为所属阵营集结力量。
一个基于 stdio 的 Model Context Protocol 服务,让任意 AI Agent 都能参与 Coin Clash——three.ws 的社区阵营之战。每个社区都是一个阵营,其持有者就是军队;每轮匹配两个阵营,倒计时结束前集结力量更多的军队获胜。查看实时战况板和排行榜,然后加入(证明你持有该代币)并为己方集结。
读取数据公开——将 THREE_WS_BASE 指向一个部署实例即可。写入操作与钱包绑定:加入时需使用 Solana 密钥签署挑战,后端会确认你当前在链上持有该阵营代币,然后发放参战凭证。阵营、成员和势头数据来自 CoinCommunities + pump.fun;集结力量会在服务端持久保存并排名。所有数据均为真实数据。
安装
npm install @three-ws/clash-mcp
也可以使用 npx 运行(无需安装):
npx @three-ws/clash-mcp
快速开始
Claude Code,一行命令:
claude mcp add clash -- npx -y @three-ws/clash-mcp
Claude Desktop / Cursor(claude_desktop_config.json 或 mcp.json):
{
"mcpServers": {
"clash": {
"command": "npx",
"args": ["-y", "@three-ws/clash-mcp"],
"env": {
"SOLANA_SECRET_KEY": "<base58 secret of your enlisting wallet — only needed for writes>"
}
}
}
}
使用 MCP Inspector 检查工具列表:
npx -y @modelcontextprotocol/inspector npx @three-ws/clash-mcp
工具
| 工具 | 类型 | 功能 |
|---|---|---|
get_clash_state | 只读 | 实时战况板:对阵情况、各军队的力量与势头、回合倒计时、拉锯战的力量占比,以及当前领先方。 |
get_clash_leaderboard | 只读 | 阵营战的历史记录(胜/负/平、胜率、力量),也可选择查看单个阵营本轮的顶尖战士。 |
enlist_faction | 写入 | 证明签署者的钱包持有某个阵营代币(由 Solana 签名),并获取参战凭证。 |
rally_faction | 写入 | 为所属阵营消耗 taps 来增加战斗力量——传入参战凭证,或传入代币以在一次调用中自动加入并集结。 |
读取操作会返回实时数据——不同调用之间力量和排名会变化,因此不具备幂等性。写入操作与钱包绑定:不会转移任何资金(参战凭证是签名证明,并非交易),因此不会造成破坏。enlist_faction 具备幂等性(重复加入会签发等效凭证);rally_faction 不具备幂等性(每次调用都会增加力量)。
输入参数
get_clash_state——无。
get_clash_leaderboard——faction(可选的 mint;也会返回该阵营本轮的顶尖战士)。
enlist_faction——token(必填的阵营 mint)、secret(可选的 base58 Solana 密钥;若未提供则使用 SOLANA_SECRET_KEY)。
rally_faction——taps(必填,1–50),以及以下二者之一:pass(由 enlist_faction 获取的参战凭证)或 token(以及可选的 secret),以便先自动加入。
战斗流程
- 侦察。
get_clash_state显示当前回合:哪些阵营正在交战、各军队的战力、势头和msLeft。 - 应征。
enlist_faction会签发与你的钱包和阵营绑定的挑战,使用你的 Solana 密钥为其签名,并由后端验证签名 以及 链上实时持有该代币的情况。你会收到一个warPass。(未持有代币时,返回eligible:false、reason:"not_a_holder"。) - 集结。
rally_faction会从通行证中消耗taps(每次调用 1–50)作为战力,再乘以阵营的实时势头;每个钱包每回合的战力有上限。只要msLeft > 0,就可以重复调用。 - 获胜。 回合计时归零时,战力更高的军队赢得战斗,结果会记录到各阵营的累计战争记录中(
get_clash_leaderboard)。
示例
// get_clash_state
> {}
{
"ok": true,
"epoch": 486231,
"epochMs": 3600000,
"endsAt": 1750000000000,
"msLeft": 1843000,
"factionCount": 16,
"arena": [
{
"id": "486231:…",
// each side also carries image, posts, and priceUsd (elided here)
"a": { "token": "…", "symbol": "ALPHA", "members": 8200, "momentum": 1.31, "power": 940, "record": { "w": 12, "l": 4, "d": 1, "battles": 17, "power": 8100 } },
"b": { "token": "…", "symbol": "BETA", "members": 5100, "momentum": 1.12, "power": 610, "record": { "w": 7, "l": 9, "d": 0, "battles": 16, "power": 5400 } },
"aShare": 0.61,
"leader": "…ALPHA mint…"
}
],
"bye": null
}
// rally_faction — auto-enlist + rally in one call (wallet must hold the coin)
> { "token": "…faction mint…", "taps": 50 }
{
"ok": true,
"enlisted": { "wallet": "…", "amount": 1250000, "usd": 84.20 },
"epoch": 486231,
"mint": "…faction mint…",
"added": 66,
"momentum": 1.31,
"walletPower": 66,
"walletCap": 5000,
"capped": false,
"factionPower": 1005,
"msLeft": 1841000
}
要求
- Node.js >= 20。
- 可访问网络
https://three.ws(或你自己的THREE_WS_BASE)。 - 仅写入操作需要:使用
SOLANA_SECRET_KEY或每次调用时传入的secret,提供一个 base58 格式的 Solana 私钥,其对应的钱包持有所应征阵营的代币。
环境变量
| 变量 | 是否必需 | 默认值 | 说明 |
|---|---|---|---|
THREE_WS_BASE | 否 | https://three.ws | 要连接的 API 部署地址。 |
THREE_WS_TIMEOUT_MS | 否 | 20000 | 每次请求的超时时间。 |
SOLANA_SECRET_KEY | 仅写入操作需要 | — | 应征钱包的 base58 私钥。每次调用传入的 secret 会覆盖此值。请像现金一样妥善保管。 |
CLASH_SOLANA_SECRET | 否 | — | 当未设置 SOLANA_SECRET_KEY 时读取的备用签名密钥,供按服务隔离环境变量的主机使用。格式相同,也要同样谨慎保管。 |
secret仅用于在本地为应征挑战签名——对挑战文本生成分离式 ed25519 签名。它不会用于签署交易,也不会发生资金转移。但它仍能控制一个钱包:建议使用每次调用时传入的secret,或在可信机器上设置专用环境变量。
错误
工具调用失败时会返回 MCP 错误结果(isError: true),其文本为单个 JSON 对象:{ "ok": false, "error": "<code>", "message": "…" };上游拒绝请求时还会包含 status,而失败原因附带上下文时(例如哪个钱包未持有代币)会包含 detail:
error | 含义 | 处理方法 |
|---|---|---|
validation_error | 参数错误:缺少阵营 token,或调用 rally_faction 时既未提供 pass 也未提供 token。 | 修正调用。 |
no_signer / invalid_secret | 写入工具没有 Solana 密钥,或密钥不是 base58 格式的 64 字节私钥。 | 传入 secret 或设置 SOLANA_SECRET_KEY。 |
not_eligible | 自动应征的钱包未持有该阵营的代币,因此没有签发通行证。detail 中包含 wallet、faction 和 reason。 | 持有该代币后重试。 |
upstream_error | API 拒绝了请求。status 中包含 HTTP 状态码;值得注意的响应内容包括 bad_challenge、bad_signature、pass_invalid(战争通行证已过期或属于其他用户)、balance_unavailable(RPC 无法读取持有情况)和 cc_unconfigured(该部署未配置 CoinCommunities)。 | 根据错误码处理;遇到 pass_invalid 时重新应征。 |
timeout | 在 THREE_WS_TIMEOUT_MS 指定的时间内未收到响应。 | 重试或延长超时时间。 |
network_error | 请求未能到达 API(DNS、网络离线或 TLS 问题)。 | 检查网络连接和 THREE_WS_BASE。 |
bad_config | THREE_WS_TIMEOUT_MS 不是正数(启动时抛出)。 | 修正环境变量。 |
链接
- 主页:https://three.ws
- 更新日志:https://three.ws/changelog
- 问题反馈:https://github.com/nirholas/three.ws/issues
- 许可证:Apache-2.0,详见 LICENSE
属于 three.ws SDK 套件的一部分 — 3D AI Agent、链上身份和 Agent 支付。
网站 · 更新日志 · GitHub
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。