Molpha MCP について
Molpha MCP は、署名済み API データの取得、Solana へのアテステーション公開、EVM や Starknet 向け検証 calldata の構築を AI エージェントに提供する MCP サーバーです。リモートウォレット署名とローカル署名に対応し、署名者なしでも読み取り専用で利用できます。
主な機能
- 01機能、プロバイダー、フィードの確認
- 02閾値署名付きオラクルデータの取得
- 03EVM と Starknet の検証 calldata 構築
- 04署名済みアテステーションの Solana 送信
- 05リモートまたはローカルウォレット署名
- 06dry-run による書き込みのプレビュー
活用シーン
- 01フィードとサブスクリプション権限の確認
- 02サブスクリプションまたは x402 ラウンドの実行
- 03EVM または Starknet 向け検証引数の準備
- 04Solana アテステーションのプレビューまたは送信
MCP 対応
読み取り、ラウンド実行、検証 calldata 構築、Solana 送信のツールを MCP クライアントに公開します。stdio によるローカル実行と HTTP によるリモート実行に対応し、署名や書き込みの手順は構成によって異なります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @molpha/mcpSIGNER_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
8掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| includeAbi | boolean | いいえ | レスポンスに EVM 検証コントラクトの ABI を含めます。 |
詳細
Molpha MCP
AI エージェントが署名済みの Molpha オラクルデータを取得し、Solana 上で公開し、EVM と Starknet 向けの検証用 calldata を構築できる Model Context Protocol(MCP) サーバーです。
Molpha は HTTP API のレスポンスを、Solana、EVM、Starknet 上で検証できる閾値署名付きペイロードに変換します。このサーバーは、そのワークフローを MCP ツールとして公開します。署名はローカル、Privy、または Turnkey のウォレットを通じて行われ、mcp.molpha.io ではお客様自身のウォレットを通じて行われます。
警告
このリリースは Solana Devnet と Sepolia の検証ネットワークを対象としています。本番環境のセキュリティ境界ではなく、テストネット用ソフトウェアとして扱ってください。書き込みツールは SOL を消費します。また、ドライランモードが有効でない限り、ラウンドツールはサブスクリプション枠を消費したり、x402 ラウンドで USDC を支払ったりする場合があります。
クイックスタート
接続方法として、次の 2 つを推奨します。
| mcp.molpha.io | ローカル(stdio) | |
|---|---|---|
| インストール | 不要です。URL をクライアントに追加してください | npx、Node.js 24 以降 |
| 署名者 | お客様自身のウォレットです。サーバーは鍵を保持しません。 | サーバーが保持するローカルキーペア、Privy、または Turnkey |
| サブスクリプションラウンド | SIWX でサインインしてから、execute_subscription_round を実行します | execute_subscription_round |
| 支出制限 | お客様のウォレット独自のポリシー | サーバーのドライランロックと 1 日あたりの上限 |
| 最適な用途 | はじめて使う場合、独自のウォレットを持ち込むエージェント | 無人エージェント、非公開 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 を指定します。
署名が必要な操作では、お客様自身のウォレットで署名できるようにデータが返されます。そのため、各操作では 1 回の署名を挟んで 2~3 回ツールを呼び出します。
| 操作 | ツール(実行順) | ウォレットで署名するもの |
|---|---|---|
| サブスクリプションラウンド | begin_session → complete_session → execute_subscription_round | セッションごとに 1 回のテキストメッセージ |
| x402 ラウンド | prepare_x402_round → execute_x402_round | ブロードキャストされない USDC の送金 |
| Solana への送信 | prepare_submit_attestation → send_signed_transaction | 送信トランザクション |
ここでは autoSubmit、dryRun、encryptSecrets は利用できません。支出制限はウォレット独自のポリシーで設定し、非公開 API を扱う場合はローカルサーバーを使用してください。
ウォレットでサインインする(SIWX)
mcp.molpha.io のサブスクリプションラウンドは、サインインセッションによって認証されます。ウォレットが 1 件の Sign-In-With-X テキストメッセージ(Solana 形式の x402 sign-in-with-x 拡張)に署名すると、ゲートウェイから短期間有効なベアラートークンが発行されます。このメッセージはトランザクションではなく、資金の移動もありません。
| 手順 | 呼び出し | 結果 |
|---|---|---|
| 1 | describe_access({ address, owner? }) | ウォレットがサブスクリプションの owner または delegate のどちらであるか、およびその制限 |
| 2 | begin_session({ address, owner? }) | 署名する message と不透明な challenge |
| 3 | ウォレットが message に署名する | 正確な UTF-8 バイト列に対する Ed25519 署名 |
| 4 | complete_session({ challenge, signature }) | sessionToken とその expiresAt |
| 5 | execute_subscription_round({ sessionToken, apiConfig, signaturesRequired, chains }) | 署名済みアテステーションと検証引数 |
- サインインできる人。 サブスクリプションの所有者、または所有者が
add_delegateで追加したデリゲートです。デリゲートは所有者のアドレスをownerとして渡します。 - 署名方法。 返されたメッセージをそのまま使用します。生の UTF-8 で、プレフィックスやエンベロープを付けず、末尾に改行も加えません。署名は base58、base64、または hex 形式で指定できます。
solana sign-offchain-messageはテキストをラップするため、invalid_signatureとして拒否されます。 - トークンについて。 1 つのウォレットと 1 つのゲートウェイに対する認証情報で、デフォルトでは 30 分間有効ですが、サブスクリプション期間を超えて有効になることはありません。呼び出し元を識別するためだけに使用されます。ゲートウェイは各ラウンドのたびにサブスクリプションとデリゲートをチェーンから再取得するため、
remove_delegateを実行すると、既存のトークンがあってもアクセスは終了します。このトークンはこのサーバーを経由し、保存もログへの記録もされません。 - 必要な条件。
GET /v1/infoでsessionAuth: trueを返すゲートウェイが必要です。そうでない場合、begin_sessionはsessions_unavailableを返し、x402 ラウンドは引き続き利用できます。
署名例、デリゲートの設定、ゲートウェイのルート、エラーコードを含む詳細な手順は、docs/integration.md をご覧ください。
ローカル(stdio)
サーバーはお使いのマシン上で動作し、署名者を保持します。そのため、1 回のツール呼び出しでラウンドを実行するか、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 | 読み取り | (sourceId, signaturesRequired, submitter) の Solana フィードと、署名者のサブスクリプション状態を読み取ります。 |
get_latest_value | 読み取り | Solana フィードアカウントに保存された、最新の認証済み値を読み取ります。 |
describe_access | 読み取り | ウォレットがサブスクリプションの所有者または委任先であるかどうかと、プランおよび委任先の上限を確認します。 |
get_x402_status | 読み取り | 次の x402 ラウンドの見積もり、支払い先、支払者の USDC 残高、残りの 1 日あたりの予算を確認します。 |
list_providers | 読み取り | ゲートウェイが統合しているデータプロバイダーと、対応するフローを一覧表示します(プロバイダー)。 |
get_provider | 読み取り | 1 つのプロバイダーのフロー、開示情報、すぐに使えるフィードを、それぞれ完全な apiConfig と sourceId とともに表示します。 |
quote_source_payment | 読み取り | 未払いのリクエストを 1 件実行して、有料ソースの料金を見積もります。最悪の場合の合計額も含まれます。 |
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 では、1 回の呼び出しで実行するラウンドおよび送信ツールが、prepare/sign/execute のペアになります(上記)。すべてのツールは structuredContent を返し、MCP アノテーションが付与されます。構造化出力とアノテーションを参照してください。許容範囲モードの集約と設定の全項目については、docs/reference.mdを参照してください。
ラウンドのタイミング。 ラウンドは固定の 100 ms 間隔で実行されます。同じフィード(同一のソースとクォーラム)へのリクエストは、1 ティック内で同じラウンドを共有するため、フィードの実行は最大で毎秒 10 ラウンドとなり、1 つのウォレットがそのフィードで実行できるラウンドは 1 ティックにつき最大 1 回です。同じティック内の 2 回目のリクエストには 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フィードについて説明してください。さらに、指定されたapiConfigをそのまま渡し、Solana 向けに 3 件の署名で実行してください。
支出の確認。 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 設定を独立して取得し、クォーラムに達すると 1 つの集約署名を生成します。サーバーは、その自己完結型の署名済みアーティファクトを返します。利用側は、レジストリのバージョンに照らして署名済みペイロードを検証した後にのみ、値を信頼します。
開発
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」PR を作成します。その PR がマージされると、@molpha/mcp が npm に(トークン不要の信頼された公開で)、server.json が MCP レジストリに公開されます。
バグ報告や、範囲を絞ったプルリクエストを歓迎します。セキュリティ上の問題については、公開 issue ではなく GitHub の非公開脆弱性報告を使用してください。
ドキュメント
- 統合ガイド:クライアントごとのインストール、支出、独自のウォレットでサインイン(SIWX)、HTTP サーバーのセルフホスト
- リファレンス:sourceId、許容誤差モード、x402、プロバイダー、設定、署名者
- Molpha プロトコルのドキュメント
- クライアント設定の例と MCPB マニフェスト
ライセンス
MIT ライセンスの下で公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。