secondlayer について
secondlayerは、Stacksのチェーンデータを扱うコーディングエージェント向けのMCPサーバーです。インデックスデータの読み取りや、サブグラフ、Webhook、コントラクト検索、アーカイブ操作を、ホストAPIまたは独自インスタンス経由で提供します。
主な機能
- 01インデックス済みイベント、転送、ブロックの検索
- 02サブグラフの作成と管理
- 03チェーンイベントのWebhook設定
- 04コントラクト検索とABI取得
- 05インスタンスとアーカイブの状態確認
活用シーン
- 01Stacksのイベントやトランザクションの調査
- 02カスタムチェーンサブグラフの構築と検索
- 03コントラクトの動作に応じたWebhook通知
MCP 対応
Stacksのインデックス、サブグラフ、Webhook、コントラクト、インスタンス、アーカイブ、アカウントのツールをMCPクライアントに公開します。ホストAPIはブラウザーサインイン付きのStreamable HTTPに対応し、独自インスタンスにも接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.secondlayer.tools/mcpclaude mcp add --transport http tools-secondlayer-secondlayer https://api.secondlayer.tools/mcp{"mcpServers":{"tools-secondlayer-secondlayer":{"type":"http","url":"https://api.secondlayer.tools/mcp"}}}Cursor で開く{"servers":{"tools-secondlayer-secondlayer":{"type":"http","url":"https://api.secondlayer.tools/mcp"}}}VS Code で開く{"mcpServers":{"tools-secondlayer-secondlayer":{"type":"http","url":"https://api.secondlayer.tools/mcp"}}}{"mcpServers":{"tools-secondlayer-secondlayer":{"serverUrl":"https://api.secondlayer.tools/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@secondlayer/mcp
コーディングエージェントが、ホスト型 API
(api.secondlayer.tools)または独自のインスタンス上の Stacks データに直接アクセスできるようにします:
Index(デコード済みの行)、Subgraphs(定義したテーブル。アカウントまたはインスタンスから提供)、
Streams(生の入力データ)。主要なツールのみを公開します:Index の読み取り、サブグラフの
ライフサイクル、Webhook、コントラクトの検出とひな形生成、インスタンスの
ステータス、アーカイブの検証とブートストラップ、ホスト型のクレジットと見積もりです。それ以外
(単一レコードの検索、メンプール、スタッキング、証明、Streams のライブ読み取り)は
REST /v1 と OpenAPI から利用できます。consume ツールはありません。
ホスト型
インストールは不要です。ホスト型 API は、ブラウザーでのサインインを使用して、 Streamable HTTP 経由で読み取りツールを提供します。
claude mcp add --transport http secondlayer https://api.secondlayer.tools/mcp
OAuth に対応していないクライアントは、Authorization: Bearer <sk-sl_ key> を送信します。サブグラフの
デプロイ、Webhook、アーカイブ、コード生成、インスタンスのツールはローカルでのみ利用できます。詳しくは
/docs/mcp をご覧ください。
インストール
bun add @secondlayer/mcp
認証
ほとんどの読み取りは公開されています。index_* と contracts_find はキーなしで動作します。サブグラフのツールは、ループバック以外では INSTANCE_TOKEN が必要です。HTTP 経由の GET /v1/subgraphs/<name>/<table>({ rows, next_cursor, tip } カーソルエンベロープ)も同様です。ループバック上では認証不要です。サブグラフごとの公開/非公開フラグはありません。streams_dumps にキーは不要です。ダンプのマニフェストは公開されており、このツールには SL_STREAMS_DUMPS_URL の設定のみが必要です。streams_tip には必ずキーが必要です(キーなしの場合は 401)。Streams のライブリストの読み取りは REST のみで利用できます(GET /v1/streams/*)。書き込み(デプロイ、再インデックス、削除、Webhook)にはキーが必要です。キーはホストに応じて使い分けられます。https://api.secondlayer.tools では、サーバーが SECONDLAYER_API_KEY(sk-sl_*)を自動的に使用します。それ以外では、secondlayer init で取得した INSTANCE_TOKEN を使用します。ホスト型のクレジットと見積もりにも SECONDLAYER_API_KEY を使用します。ホスト型 API では、サブグラフのソースに指定できるのはイベントフィルターと contract_call/contract_deploy のみです(それ以外は 422 SOURCE_NOT_HOSTABLE)。startBlock を設定してください。まず secondlayer://context を読み取ってください。認証状態と読み取り認証のティアが示されます。
クイックスタート — Stdio(IDE)
Claude Desktop または Cursor の設定に追加してください:
{
"mcpServers": {
"secondlayer": {
"command": "bunx",
"args": ["-p", "@secondlayer/mcp", "secondlayer-mcp"],
"env": {
"SECONDLAYER_API_URL": "http://127.0.0.1:3800",
"INSTANCE_TOKEN": "..."
}
}
}
}
クイックスタート — HTTP(リモート)
export SECONDLAYER_API_URL=http://127.0.0.1:3800
export INSTANCE_TOKEN=<from secondlayer init>
export SECONDLAYER_MCP_SECRET=your-secret
bunx -p @secondlayer/mcp secondlayer-mcp-http
# Listening on port 3100
環境変数
| 変数 | 必須条件 | デフォルト | 説明 |
|---|---|---|---|
INSTANCE_TOKEN | インスタンス上での書き込み | — | secondlayer init で取得します。api.secondlayer.tools 以外で書き込みツールを使う場合に必要です。読み取りは公開されています。ホスト型 API には送信されません。 |
SECONDLAYER_API_KEY | ホスト型 API、クレジット/見積もり/最新情報 | — | sk-sl_*。SECONDLAYER_API_URL が https://api.secondlayer.tools の場合に自動的に使用されます。 |
SECONDLAYER_API_URL | いいえ | http://127.0.0.1:3800 | インスタンス API。ホスト型の場合は https://api.secondlayer.tools を指定します。 |
SECONDLAYER_BIN | CLI ツール | PATH 上の secondlayer | CLI バイナリへのパス(bootstrap、repair)。 |
SECONDLAYER_CWD | CLI ツール | プロセスの cwd | Compose プロジェクトのディレクトリ。 |
SECONDLAYER_MCP_PORT | いいえ | 3100 | HTTP トランスポートのポート。 |
SECONDLAYER_MCP_SECRET | いいえ | — | HTTP 認証用のベアラートークン。未設定の場合は無効です。 |
ツール
| ドメイン | ツール |
|---|---|
| インデックス (9) | index_events, index_ft_transfers, index_nft_transfers, index_contract_calls, index_blocks, index_transactions, index_print_schema, index_discover, batch_query |
| サブグラフ (12) | subgraphs_list, subgraphs_status, subgraphs_spec, subgraphs_scaffold, subgraphs_deploy, subgraphs_delete, subgraphs_query, subgraphs_backfill, subgraphs_reindex, subgraphs_stop, subgraphs_operations, subgraphs_gaps |
| Webhook (13) | webhooks_create, webhooks_list, webhooks_get, webhooks_update, webhooks_delete, webhooks_test, webhooks_pause, webhooks_resume, webhooks_rotate_secret, webhooks_deliveries, webhooks_dead, webhooks_requeue, webhooks_replay |
| ストリーム (2) | streams_tip, streams_dumps |
| コントラクト (2) | contracts_find, contracts_get_abi |
| インスタンス (1) | instance_status |
| アーカイブ (5) | archive_verify, archive_bootstrap, archive_repair, archive_latest, archive_quote |
| クレジット (1) | credits_balance(SECONDLAYER_API_KEY が必要) |
| アカウント (2) | account_whoami, account_create_key(https://api.secondlayer.tools を指定した場合のみ) |
変更後は、デプロイ/再インデックス/バックフィル/停止については subgraphs_operations、作成/テスト/再生については webhooks_deliveries で確認してください。空のインデックスの場合は、
archive_bootstrap を実行し、デコーダーが正常になるまで instance_status をポーリングしてから、
archive_verify、続いて codegen_index_schema を実行してください。
周辺機能(単一ブロック/トランザクションのルックアップ、メンプール、ステーキング、証明、
クレジット/上限、ライブ Streams の読み取り/SSE)は REST のみで利用できます。API ホストの OpenAPI 仕様を参照してください。ライブ Streams のリスト読み取りには GET /v1/streams/events を使用します。
SECONDLAYER_API_URL(デフォルトは
http://127.0.0.1:3800)を設定して、サーバーの接続先インスタンスを指定してください。書き込みには
secondlayer init で取得した INSTANCE_TOKEN を使用します。account_* ツールは、サーバーの接続先が
https://api.secondlayer.tools の場合にのみ表示されます。
webhooks_create のトリガー
Webhook は生のチェーンイベントで発火します。triggers 配列(コントラクト/イベント/関数/トレイト)を渡してください。例:[{ "type": "contract_call", "contractId": "SP....amm", "functionName": "swap-*" }]。サブグラフの行に反応させるには、独自の Postgres からテーブルを読み取るか、サブグラフ API をポーリングしてください。
subgraphs_query の拡張機能
fields— カンマ区切りの列指定(例:"sender,amount_x")count— ブール値。行の代わりに行数を返します- フィルター演算子:
eq、neq、gt、gte、lt、lte、like - 最大上限:200
リソース
| URI | 説明 |
|---|---|
secondlayer://context | ライブ状態 — 何が存在するか(サブグラフ、Webhook、アカウント)、何ができるか、読み取り認証の階層。最初に読み取ってください。 |
secondlayer://filters | サブグラフのソースフィルターの種類とそのフィールド |
secondlayer://column-types | 列の型の対応関係とオプション |
secondlayer://traits | SIP トレイト規格(有効な trait 値) |
secondlayer://chain-triggers | チェーン Webhook のトリガーの種類とフィールド |
エラー処理
すべてのツールは、isError: true を含む構造化エラーを返します。
{ "error": { "type": "not_found", "status": 404, "message": "Subgraph not found" } }
| エラーの種類 | ステータス | 発生条件 |
|---|---|---|
unauthorized | 401 | API キーが無効、または指定されていない |
not_found | 404 | リソースが存在しない |
rate_limited | 429 | リクエストが多すぎる |
server_error | 5xx | サーバー側の障害 |
error | その他 | 検証、バンドルなど |
バンドル/デプロイのエラーには、内容を示すプレフィックスが使われます:"Bundle failed:"、"Module evaluation failed:"、"Validation failed:"。HTTP トランスポートでは、リクエスト本文の上限 1MB(413)と JSON 解析の安全性(400)が適用されます。スキャフォールドでの ABI 取得には 10 秒のタイムアウトが設定されています。
プログラムからの利用
import { createServer } from "@secondlayer/mcp";
const server = createServer();
// Connect to your own transport
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。