mcpField
M
Molpha MCP

Molpha MCP

本地服务
docs.molpha.io金融数据23 周前更新

关于 Molpha MCP

Molpha MCP 为 AI Agent 提供预言机数据工作流:获取经签名的 API 数据、在 Solana 发布证明,并构建 EVM 或 Starknet 验证器 calldata。它支持远程钱包签名或本地签名配置,也可在无签名器时只读使用。

主要功能

  1. 01查看能力、提供方和数据源
  2. 02获取阈值签名的预言机数据
  3. 03构建 EVM 和 Starknet 验证器 calldata
  4. 04向 Solana 提交已签名证明
  5. 05使用远程或本地钱包签名
  6. 06通过 dry-run 安全预览写入

适用场景

  1. 01检查数据源及其订阅访问权限
  2. 02执行订阅或 x402 数据轮次
  3. 03为 EVM 或 Starknet 准备验证参数
  4. 04预览或提交 Solana 签名证明

MCP 相关

向 MCP 客户端提供读取、执行数据轮次、构建验证器 calldata 和提交 Solana 证明的工具。可通过 stdio 本地运行或经 HTTP 远程运行;签名与写入流程因部署方式而异。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"molpha": {
"command": "npx",
"args": [
"-y",
"@molpha/mcp"
],
"env": {
"SIGNER_BACKEND": "<SIGNER_BACKEND>",
"OWNER_KEYPAIR": "<OWNER_KEYPAIR>",
"KEYCHAIN_BACKEND": "<KEYCHAIN_BACKEND>",
"PRIVY_APP_ID": "<PRIVY_APP_ID>",
"PRIVY_APP_SECRET": "<PRIVY_APP_SECRET>",
"PRIVY_WALLET_ID": "<PRIVY_WALLET_ID>",
"PRIVY_WALLET_ADDRESS": "<PRIVY_WALLET_ADDRESS>",
"TURNKEY_API_PUBLIC_KEY": "<TURNKEY_API_PUBLIC_KEY>",
"TURNKEY_API_PRIVATE_KEY": "<TURNKEY_API_PRIVATE_KEY>",
"TURNKEY_ORGANIZATION_ID": "<TURNKEY_ORGANIZATION_ID>",
"TURNKEY_WALLET_ADDRESS": "<TURNKEY_WALLET_ADDRESS>",
"SOLANA_RPC": "<SOLANA_RPC>",
"GATEWAY_ENDPOINTS": "<GATEWAY_ENDPOINTS>",
"MOLPHA_EVM_NETWORKS": "<MOLPHA_EVM_NETWORKS>",
"MOLPHA_STARKNET_NETWORKS": "<MOLPHA_STARKNET_NETWORKS>",
"MOLPHA_DRY_RUN": "<MOLPHA_DRY_RUN>",
"MOLPHA_MAX_EXECUTES_PER_DAY": "<MOLPHA_MAX_EXECUTES_PER_DAY>",
"MOLPHA_X402_MAX_PRICE_USDC": "<MOLPHA_X402_MAX_PRICE_USDC>",
"MOLPHA_X402_MAX_SPEND_PER_DAY_USDC": "<MOLPHA_X402_MAX_SPEND_PER_DAY_USDC>",
"MOLPHA_X402_GATEWAY_PDA": "<MOLPHA_X402_GATEWAY_PDA>"
}
}
}
}
启动命令npx -y @molpha/mcp
需要配置的环境变量
SIGNER_BACKENDSigning backend: memory (local keypair) or keychain (Privy / Turnkey).
OWNER_KEYPAIR密钥Path to a Solana JSON keypair file. Required when SIGNER_BACKEND=memory.
KEYCHAIN_BACKEND密钥Keychain provider: privy or turnkey. Required when SIGNER_BACKEND=keychain.
PRIVY_APP_ID密钥Privy app ID. Required for KEYCHAIN_BACKEND=privy.
PRIVY_APP_SECRET密钥Privy app secret. Required for KEYCHAIN_BACKEND=privy.
PRIVY_WALLET_ID密钥Privy wallet ID. Required for KEYCHAIN_BACKEND=privy.
PRIVY_WALLET_ADDRESSSolana address for the Privy wallet.
TURNKEY_API_PUBLIC_KEY密钥Turnkey API public key. Required for KEYCHAIN_BACKEND=turnkey.
TURNKEY_API_PRIVATE_KEY密钥Turnkey API private key. Required for KEYCHAIN_BACKEND=turnkey.
TURNKEY_ORGANIZATION_ID密钥Turnkey organization ID. Required for KEYCHAIN_BACKEND=turnkey.
TURNKEY_WALLET_ADDRESS密钥Solana address for the Turnkey wallet.
SOLANA_RPCSolana RPC endpoint.
GATEWAY_ENDPOINTSComma-separated Molpha gateway URLs. Leave empty to use the SDK default.
MOLPHA_EVM_NETWORKSComma-separated EVM verifier networks.
MOLPHA_STARKNET_NETWORKSComma-separated Starknet verifier networks.
MOLPHA_DRY_RUNPreview all write and spend operations without submitting them.
MOLPHA_MAX_EXECUTES_PER_DAYProcess-local daily Solana submit cap.
MOLPHA_X402_MAX_PRICE_USDCRefuse to fund an x402 round priced above this amount (decimal USDC).
MOLPHA_X402_MAX_SPEND_PER_DAY_USDCProcess-local daily x402 spend cap (decimal USDC).
MOLPHA_X402_GATEWAY_PDAOptional settling gateway PDA (base58) to skip discovery when the escrow is already funded.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@molpha/mcp0.1.2

工具

8

收录的工具列表 · 更新于 2 周前

参数类型必填说明
includeAbiboolean否在响应中包含 EVM 验证器 ABI。

详细介绍

Molpha MCP

CI License: MIT Node.js

一个 Model Context Protocol (MCP) 服务,让 AI Agent 能获取已签名的 Molpha 预言机数据、将其发布到 Solana,并为 EVM 和 Starknet 构建验证器调用数据。

Molpha 会将 HTTP API 响应转换为阈值签名载荷,可在 Solana、EVM 和 Starknet 上进行验证。此服务将这一工作流作为 MCP 工具提供,签名由本地、Privy 或 Turnkey 钱包处理;在 mcp.molpha.io 上则由你自己的钱包处理。

警告

此版本面向 Solana Devnet 和 Sepolia 验证器网络。请将其视为测试网软件,而非生产环境的安全边界。写入工具会消耗 SOL;除非启用试运行模式,否则轮次工具可能会消耗订阅配额,或为 x402 轮次支付 USDC。

快速开始

有两种推荐的连接方式:

mcp.molpha.io本地(stdio)
安装无需安装:将 URL 添加到客户端npx、Node.js 24 或更高版本
签名者你自己的钱包。服务不持有密钥。由服务持有的本地密钥对、Privy 或 Turnkey
订阅轮次使用 SIWX 登录,然后调用 execute_subscription_round调用 execute_subscription_round
支出限额钱包自身的策略服务中的试运行锁和每日限额
最适合快速上手、使用自带钱包的 Agent无人值守的 Agent、私有 API 数据源
mcp.molpha.io

无需安装,也无需交出密钥。将 URL 添加到客户端即可。

Claude Code:

claude mcp add --transport http molpha https://mcp.molpha.io/mcp

Cursor(.cursor/mcp.json):

{ "mcpServers": { "molpha": { "url": "https://mcp.molpha.io/mcp" } } }

读取工具可直接使用。此服务没有自己的钱包,因此请指定所用的钱包:describe_feed 和 get_latest_value 使用 submitter,get_x402_status 使用 payer。

任何需要签名的操作都会返回待你自己的钱包签名的内容,因此每项此类操作都需要在一次签名的前后调用两三个工具:

操作工具,按顺序排列钱包签署的内容
订阅轮次begin_session → complete_session → execute_subscription_round一条文本消息,每个会话签一次
x402 轮次prepare_x402_round → execute_x402_round一笔尚未广播的 USDC 转账
Solana 提交prepare_submit_attestation → send_signed_transaction提交交易

此处不提供 autoSubmit、dryRun 和 encryptSecrets。请在钱包自身的策略中设置支出限额;处理私有 API 数据时,请使用本地服务。

使用钱包登录(SIWX)

在 mcp.molpha.io 上进行订阅轮次时,需要通过登录会话授权:钱包会签署一条 Sign-In-With-X 文本消息(x402 的 sign-in-with-x 扩展的 Solana 形式),网关随后会签发一个短时有效的 bearer token。该消息不是交易,也不会转移资金。

步骤调用结果
1describe_access({ address, owner? })钱包是订阅的 owner 还是 delegate,以及相应限额
2begin_session({ address, owner? })待签署的 message 和不透明的 challenge
3钱包签署 message对其精确 UTF-8 字节进行 Ed25519 签名
4complete_session({ challenge, signature })sessionToken 及其 expiresAt
5execute_subscription_round({ sessionToken, apiConfig, signaturesRequired, chains })已签名的证明和验证器参数
  • 谁可以登录。 订阅所有者,或所有者通过 add_delegate 添加的委托人。委托人需将所有者的地址作为 owner 传入。
  • 如何签名。 按照原样签署返回的消息:原始 UTF-8,不加前缀或封装,也不加尾随换行符。签名可以是 base58、base64 或 hex。solana sign-offchain-message 会封装文本,因此会被拒绝并返回 invalid_signature。
  • Token 的用途。 它是一个凭证,只对应一个钱包和一个网关,默认有效期为 30 分钟,且绝不会超过订阅期限。它只用于识别调用方:网关每次执行轮次时都会从链上重新读取订阅和委托人信息,因此无论已有多少个 Token,remove_delegate 都会立即终止访问。Token 只会经过此服务,不会被存储或记录。
  • 所需条件。 GET /v1/info 中 sessionAuth: true 的网关。否则,begin_session 会返回 sessions_unavailable,但 x402 轮次仍可使用。

完整操作指南(含签名示例、委托人设置、网关路由和错误代码)请参阅 docs/integration.md。

本地(stdio)

服务在你的计算机上运行并持有签名者,因此一次工具调用即可执行一轮或提交到 Solana;MOLPHA_DRY_RUN 会让所有写入操作保持为预览,直到你将其关闭。

需要 Node.js 24 或更高版本。无需克隆或构建。

1. 先了解情况,无需钱包。 只读:功能、提供方、sourceId、价格、馈送值。

claude mcp add molpha -- npx -y @molpha/[email protected] --read-only

2. 使用测试网钱包进行构建。 将签名者设置写入 .env 文件(参见设置),然后检查配置。doctor 会打印一份可直接粘贴到客户端的配置,密钥会保留为占位符:

npx -y @molpha/[email protected] doctor

类似这样的配置会让所有写入操作都保持为预览(MOLPHA_DRY_RUN=true):

claude mcp add molpha -e SIGNER_BACKEND=keychain -e KEYCHAIN_BACKEND=privy -e PRIVY_APP_ID='<privy-app-id>' -e PRIVY_APP_SECRET='<privy-app-secret>' -e PRIVY_WALLET_ID='<privy-wallet-id>' -e PRIVY_WALLET_ADDRESS='<base58-solana-address>' -e MOLPHA_DRY_RUN=true -- npx -y @molpha/[email protected]

3. 仅在确有需要时才支出。 为钱包注资,然后在服务配置中设置 MOLPHA_DRY_RUN=false。完整指南(含 Cursor、VS Code、Codex 和 Claude Desktop)请参阅 docs/integration.md。

未配置签名者时,服务会以只读模式启动,仅提供读取工具(get_capabilities 中的 runLevel: "read-only")。--read-only 或 SIGNER_BACKEND=none 可强制启用此模式。

工具

工具访问权限描述
get_capabilities读取运行级别、程序 ID、注册表版本、节点、网关、链、验证器地址、x402 限额和来源付款策略。
derive_source_id读取、本地推导 apiConfig 的 sourceId(方法)。不发起交易,也不需要钱包。
describe_feed读取读取 Solana Feed 中 (sourceId, signaturesRequired, submitter) 对应的内容,以及签名者的订阅状态。
get_latest_value读取读取 Solana Feed 账户中存储的最新认证值。
describe_access读取查询钱包是否为订阅所有者或委托人,以及套餐和委托人的限额。
get_x402_status读取估算下一轮 x402 的费用,显示付款去向,并读取付款方的 USDC 余额和剩余每日预算。
list_providers读取网关集成的数据提供方及其支持的流程(提供方)。
get_provider读取单个提供方的流程、披露信息和现成 Feed,每项均包含完整的 apiConfig 和 sourceId。
quote_source_payment读取通过一次未付款请求,为设有付费墙的数据源估价,包含最高总费用。
execute_subscription_round消耗配额执行一轮由 USDC 订阅付款的请求;返回已签名的证明及验证器参数。autoSubmit: true 会在同一次调用中结算 Solana。
execute_x402_round消耗 USDC通过 x402 按请求付费,执行一轮请求;输出相同。
build_verifier_calldata读取、本地构建 EVM/Starknet 验证器地址和 verify() 调用参数。仅生成 Calldata,不会验证任何内容。
submit_attestation写入向 Solana 提交已签名的证明。可直接接收轮次工具的原始输出。

在 mcp.molpha.io 上,单次调用的轮次和提交工具会变为 prepare/sign/execute 组合(见上文)。每个工具都会返回 structuredContent 并附带 MCP 注解;请参阅结构化输出和注解。有关容差模式聚合和完整配置表,请参阅 docs/reference.md。

轮次时间。 轮次按固定的 100 ms 时钟周期运行。同一时钟周期内对同一个 Feed(相同来源和法定人数)的请求会共用一轮,因此每个 Feed 每秒最多运行 10 轮;对于某个 Feed,每个钱包每个时钟周期最多运行一轮:同一时钟周期内的第二次请求会收到 HTTP 409,轮次工具会在下一个时钟周期重试,之后才会失败并返回 round_conflict。请参阅轮次时间。

设置

适用于本地服务。

签名者。 将设置写入 .env 文件,并使用 doctor 检查。它会输出可直接粘贴到客户端的配置,机密信息保留为占位符。请使用专用的测试网钱包。

SIGNER_BACKEND=memory
OWNER_KEYPAIR=/absolute/path/to/owner-keypair.json
SOLANA_RPC=https://api.devnet.solana.com
MOLPHA_DRY_RUN=true

Privy 和 Turnkey 的设置请参阅 docs/reference.md 和 .env.example。

npx -y @molpha/[email protected] doctor

试运行锁定。 MOLPHA_DRY_RUN=true 会将 execute_subscription_round、execute_x402_round 和 submit_attestation 锁定为仅预览模式。带有 dryRun: false 的调用会被拒绝,并返回 dry_run_locked,因此启用正式运行需要更改服务配置,不能通过单次工具调用实现。

订阅。 订阅会扣除 USDC,因此该功能不会放在 MCP 工具中,而是作为 CLI 命令运行,并使用相同的签名者配置。--max-price-usdc 是以 USDC 最小单位(6 位小数)为单位的上限;移除 --dry-run 即可订阅,也可以使用 extend 延长订阅。

npx -y @molpha/[email protected] provision subscribe --plan Basic --max-price-usdc 20000000 --dry-run

客户端。 每个客户端都会通过 npx 启动本地服务。Claude Code、Cursor、VS Code、Codex 和 Claude Desktop 的代码片段位于 docs/integration.md,可直接编辑的副本位于 examples;Claude Desktop 用户可以安装附在每个版本中的 molpha-mcp.mcpb 软件包。

示例提示词

发现。 使用 Molpha 检查当前的预言机能力。总结注册表版本、节点数量、链、网关和验证器地址。不要执行任何写入操作。

推导。 使用 JSON 路径 $.price,为 https://api.example.com/v1/finalized/price 推导 Molpha sourceId。向我展示规范 JSON 和 sourceId。不要发送交易。

获取。 对该数据源运行一轮订阅,为 EVM 链使用 3 个签名。总结数值、时间戳、注册表版本和验证器调用。将签名证明视为信任锚,而不只是数值本身。

提供方。 列出集成的数据提供方,描述 TickerLayer 的 btcusd 数据流,并为 Solana 使用 3 个签名运行该数据流,严格按给定内容传递 apiConfig。

检查支出。 为 3 个签名调用 get_x402_status。告诉我价格、付款去向,以及在我授权 execute_x402_round 前我的 USDC 余额。

发布。 如果我提供了更新的签名证明,请使用 dryRun: true 预览 submit_attestation,说明具体写入内容,并在提交前等待我的确认。

请使用返回稳定且可独立复现数据的公共端点:实时行情端点在不同预言机节点上可能不同,无法达到法定人数。

工作原理

flowchart LR
    Client["MCP client"] <-->|"stdio / HTTP"| Server["Molpha MCP server"]
    Server --> Guardrails["Dry-run · daily caps · spend caps"]
    Server --> Signer["Signer adapter<br/>local · Privy · Turnkey"]
    Server --> SDK["Molpha SDK / x402 client"]
    SDK --> Gateway["Molpha gateway"]
    Gateway <--> Nodes["Oracle node quorum"]
    SDK <--> Solana["Solana program<br/>feeds · subscriptions"]
    Gateway --> Artifact["Threshold-signed attestation"]
    Artifact --> Server
    Server --> Args["EVM / Starknet verifier args,<br/>or submit_attestation on Solana"]

该服务是一个适配器和策略边界,而不是新的事实来源。预言机节点会独立获取已提交的 API 配置,并在达到法定人数后生成一个聚合签名;该服务会返回这个自包含的签名产物。使用方只有在根据其注册表版本验证签名负载后,才能信任其中的数值。

开发

git clone https://github.com/molpha/mcp.git
cd mcp
npm ci
cp .env.example .env
npm run build

使用 node /absolute/path/to/mcp/dist/src/server.js 将客户端指向构建后的服务。

npm run dev          # start from TypeScript
npm run typecheck && npm test && npm run build   # run before opening a pull request
npm run gen:install  # rewrite the generated install snippets in the docs and examples
npm run smoke:pack   # pack the tarball and run it with npx over stdio (needs network)
npm run pack:mcpb    # build the Claude Desktop bundle from an allowlist

@molpha/sdk 固定为确切版本,并从 npm 注册表解析;如需尝试本地检出版本,请运行 npm install ../sdk,且不要提交生成的结果。安装代码片段由 src/install-config.ts 生成:请编辑渲染器,而不是生成的文本,因为生成文件不是最新版本时,npm test 会失败。

版本管理和发布使用 Changesets:如果拉取请求更改了已发布行为,请运行 npx changeset。合并到 main 后,release.yml 会创建一个“Version Packages”拉取请求;该请求合并后,会将 @molpha/mcp 发布到 npm(可信发布,无令牌),并将 server.json 发布到 MCP 注册表。

欢迎提交错误报告和内容聚焦的拉取请求。对于安全问题,请使用 GitHub 的私密漏洞报告,不要公开提交问题。

文档

许可证

基于 MIT License 发布。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。