Are you the author? Sign in to claim
MCP server exposing SQD Portal blockchain data to AI agents and Claude.
Thin MCP wrapper around the SQD Portal API for blockchain data queries.
This server does not index chains itself. It validates user input, maps it onto Portal requests, and returns MCP-friendly responses.
25 public tools3 advanced/debug toolsnetworkvmv0.7.9Raw query tools default to compact responses. Ask for response_format: "full" only when you need the larger payload.
Entity questions can use portal_resolve_entity first. It resolves EVM token symbols/addresses, EVM contract aliases, pool identifiers, protocol names, and Hyperliquid coin names into query-ready filters while keeping ambiguous matches explicit.
Token symbol resolution and token metadata come from open token-list data, not baked-in token address constants. Responses include explicit notices when token-list data is unavailable, stale, or unsupported for a network.
Wallet questions should start with portal_get_wallet_summary. It returns fund_flow by default, including inbound/outbound movement, asset flows, counterparties, largest observed movements, and next evidence pivots before raw-tool drill-down.
Discovery:
portal_list_networksportal_get_network_infoportal_get_headportal_resolve_entityCross-chain convenience:
portal_get_recent_activityportal_get_wallet_summaryportal_get_time_seriesEVM:
portal_evm_query_transactionsportal_evm_query_logsportal_evm_query_token_transfersportal_evm_get_contract_deploymentportal_evm_get_contract_activityportal_evm_get_analyticsportal_evm_get_ohlcSolana:
portal_solana_query_transactionsportal_solana_query_instructionsportal_solana_get_analyticsBitcoin:
portal_bitcoin_query_transactionsportal_bitcoin_get_analyticsSubstrate:
portal_substrate_query_eventsportal_substrate_query_callsportal_substrate_get_analyticsHyperliquid:
portal_hyperliquid_query_fillsportal_hyperliquid_get_analyticsportal_hyperliquid_get_ohlcAdvanced/debug:
portal_debug_query_blocksportal_debug_resolve_time_to_blockportal_debug_hyperliquid_query_replica_commandsSubstrate support is currently historical only. It does not have a real-time tail.
Most tools return the same envelope in MCP structuredContent and in a compact JSON text fallback for older clients. The envelope contains a normal result body plus shared metadata such as:
answerdisplaynext_stepsinvestigation_freshness_coverage_pagination_orderinginvestigation is a compact evidence guide for agents: it identifies the primary result path, bounded window, useful pivot fields such as addresses or transaction hashes, follow-up filters, and limitations before a result is treated as complete.
When a response uses estimated, partial, sampled, capped, or paginated data, the top-level answer and metadata disclose it. Safe pagination follow-ups include executable tool-call metadata with explicit cursor arguments; suggestions that cannot be reconstructed safely are marked non-executable.
Chart-oriented tools also return chart and table descriptors so MCP clients or LLMs can render them without reverse-engineering the payload.
The server does not ship its own frontend. It returns structured data and rendering hints for the client to use.
npm install
npm run build
stdio:
npm start
HTTP:
npm run start:http
The server exposes a structured tool-selection guide for client builders:
sqd://tools returns grouped tool metadata, examples, starting points, and integration notes.sqd://tools/{name} returns the guide entry for one tool, for example sqd://tools/portal_get_time_series.GET /tools or GET /tools.json returns the live tool catalog with input schemas plus the same structured guide metadata.The Codex plugin wrapper lives in plugins/portal and defaults to the hosted MCP endpoint at https://portal.sqd.dev/mcp.
Install it from this repo-local marketplace:
codex plugin marketplace add .
codex plugin add portal@sqd
Open a new Codex thread after installing. First-use prompts include Hyperliquid BTC perp fills, recent Base transaction volume, and top USDC senders on Base.
The Claude Code plugin uses the same hosted MCP endpoint and the same public selector:
claude plugin marketplace add subsquid-labs/portal-mcp-server
claude plugin install portal@sqd
Open a new Claude Code session after installing so the SQD MCP tools are loaded.
Add an entry like this to claude_desktop_config.json:
{
"mcpServers": {
"SQD": {
"command": "node",
"args": ["/absolute/path/to/sqd-portal-mcp-server/dist/index.js"]
}
}
}
portal_list_networks.portal_get_network_info or portal_get_head first.portal_get_recent_activity, portal_get_wallet_summary, or portal_get_time_series before dropping to raw queries.30m, past 30 minutes, in the past 1h, in last 38 mins, last hour, or 30 minutes ago.portal_evm_get_ohlc and portal_hyperliquid_get_ohlc only when you actually need candle-shaped output.response_format: "compact" unless you need the full record shape.HTTP mode exposes health state at /health and read-only tool discovery at /tools and /tools.json.
MCP_HTTP_BEARER_TOKEN to require Authorization: Bearer <token> for POST / and POST /mcp./health and read-only GET /tools / GET /tools.json remain public.MCP_CURSOR_SECRET in production so pagination cursors are signed with a deployment-specific secret. Local development uses a deterministic fallback for convenience.Useful environment variables:
MCP_HTTP_BEARER_TOKEN to protect HTTP MCP POSTsMCP_CURSOR_SECRET to sign pagination cursorsnpm test
npm run test:tools
npm run test:routing
npm run test:substrate
npm run test:timestamps
npm run test:plugin
npm run test:conversations
npm run test:negative
npm run test:quality
npm run test:ci
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows