The Substreams Search MCP Server enables AI agents to search, inspect, and analyze Substreams packages for blockchain data streaming from the substreams.dev registry.
Search packages (
search_substreams): Query the substreams.dev registry by keyword, filter by blockchain network (e.g., Ethereum, Solana, Arbitrum), and sort results bymost_downloaded,alphabetical,most_used, orlast_uploaded. Returns package details like name, URL, creator, and download count.Inspect packages (
inspect_package): Fetch and analyze a.spkgfile to view its full module graph, protobuf types, metadata (name, version, docs, network), module definitions (kind, output types, update policies), DAG relationships, and a Mermaid diagram of the module graph.List modules (
list_package_modules): Get a lightweight summary of a package's module names, types, and inputs/outputs without full inspection overhead.Analyze sink configuration (
get_sink_config): Examine a package's embedded sink config, extract SQL schemas, identify compatible sink modules, and generate ready-to-run CLI commands for deployment.
This supports a complete workflow from discovery (search) → analysis (inspect/list) → deployment (sink config), and integrates with Claude Desktop, Cursor, and Claude Code via npx without installation.
Allows searching, inspecting, and analyzing Substreams packages for the Ethereum blockchain to identify module graphs and sink configurations.
Generates visual module graphs in Mermaid format to illustrate the dependencies and relationships within a Substreams package.
Provides tools to search and analyze Substreams packages specifically developed for the Polygon network.
Enables discovery and inspection of Substreams packages for the Solana blockchain, including module identification and sink deployment commands.
Substreams Search MCP Server
MCP server that lets AI agents search, inspect, and analyze Substreams packages — from registry discovery to sink deployment.
Tools
search_substreams
Search the substreams.dev package registry.
Parameter | Type | Default | Description |
| string (required) | — | Search term, e.g. |
| string |
|
|
| string | — | Filter by chain: |
Returns package name, URL, creator, network, version, published date, and download count.
inspect_package
Inspect a Substreams package (.spkg) to see its full module graph, protobuf types, and metadata.
Parameter | Type | Description |
| string (required) | Direct URL to a |
Returns:
Package metadata (name, version, documentation, network)
All modules with their kind (map/store/blockIndex), output types, and update policies
Full DAG: each module's
dependsOnanddependedByrelationshipsInput chain for each module (source blocks, other maps, stores with get/deltas mode, params)
List of all protobuf output types and proto files
Mermaid diagram of the module graph
list_package_modules
Lightweight alternative to inspect_package — just the module names, types, and inputs/outputs.
Parameter | Type | Description |
| string (required) | Direct URL to a |
get_sink_config
Analyze a package's sink configuration and generate ready-to-run CLI commands.
Parameter | Type | Description |
| string (required) | Direct URL to a |
Returns one of three results:
sink_configured— Package has an embedded sink config. Extracts the SQL schema (for SQL sinks), identifies the sink module and type, and generatesinstall,setup, andruncommands with the correct network endpoint.no_sink_config_but_compatible_modules_found— No embedded config, but modules output sink-compatible types (e.g.DatabaseChanges). Identifies them and suggests how to wire up sinking.no_sink_support— No sink-compatible modules. Lists all module output types so you know what custom consumer you'd need.
Workflow
search_substreams("uniswap", network: "polygon")
→ find package, get spkg.io URL
inspect_package("https://spkg.io/creator/package-v1.0.0.spkg")
→ see module DAG, output types, what it produces
get_sink_config("https://spkg.io/creator/package-v1.0.0.spkg")
→ get SQL schema + CLI commands to deployQuick Start (npx)
No installation needed:
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"substreams-search": {
"command": "npx",
"args": ["substreams-search-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"substreams-search": {
"command": "npx",
"args": ["substreams-search-mcp"]
}
}
}Claude Code
Add to ~/.claude/mcp.json:
{
"mcpServers": {
"substreams-search": {
"command": "npx",
"args": ["substreams-search-mcp"]
}
}
}How it works
Search: The substreams.dev registry has no public API. This server scrapes the package listing pages, paginates through all results, deduplicates, and returns structured JSON. Multi-word queries search for the first word server-side and filter the rest client-side.
Inspect: Uses
@substreams/coreto fetch and parse.spkgfiles (protobuf-encoded Substreams packages), extracting module definitions, DAG relationships, and proto type information.Sink config: Reads the embedded
sinkConfig(agoogle.protobuf.Anyfield) from the package, decodes it based on the type URL, and maps networks to Substreams endpoints for correct CLI commands.