mcpField
M
Molpha MCP

Molpha MCP

ローカル
docs.molpha.io金融データ23 週間前に更新

Molpha MCP について

Molpha MCP は、署名済み API データの取得、Solana へのアテステーション公開、EVM や Starknet 向け検証 calldata の構築を AI エージェントに提供する MCP サーバーです。リモートウォレット署名とローカル署名に対応し、署名者なしでも読み取り専用で利用できます。

主な機能

  1. 01機能、プロバイダー、フィードの確認
  2. 02閾値署名付きオラクルデータの取得
  3. 03EVM と Starknet の検証 calldata 構築
  4. 04署名済みアテステーションの Solana 送信
  5. 05リモートまたはローカルウォレット署名
  6. 06dry-run による書き込みのプレビュー

活用シーン

  1. 01フィードとサブスクリプション権限の確認
  2. 02サブスクリプションまたは x402 ラウンドの実行
  3. 03EVM または Starknet 向け検証引数の準備
  4. 04Solana アテステーションのプレビューまたは送信

MCP 対応

読み取り、ラウンド実行、検証 calldata 構築、Solana 送信のツールを MCP クライアントに公開します。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

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 拡張)に署名すると、ゲートウェイから短期間有効なベアラートークンが発行されます。このメッセージはトランザクションではなく、資金の移動もありません。

手順呼び出し結果
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 として拒否されます。
  • トークンについて。 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_roundUSDC を消費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 の非公開脆弱性報告を使用してください。

ドキュメント

ライセンス

MIT ライセンスの下で公開されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。