RouteMesh MCP Server
OfficialRouteMesh MCP Server
@routemesh/mcp is a local stdio MCP server for querying blockchain data through RouteMesh.
At a glance
Query multiple EVM chains from one MCP server.
Pull useful on-chain data quickly (blocks, txs, logs, balances, fees).
Use generic JSON-RPC when you need methods beyond built-in tools.
Reduce RPC endpoint management overhead with RouteMesh routing + failover.
Plug into Cursor as an on-demand command, not a background daemon.
Prompt examples
"List chains that match
baseand show me their chain IDs.""Get the latest block on BSC and summarize timestamp + tx count."
"Fetch receipt for tx
0x...on Ethereum and tell me if it succeeded.""Get logs for this contract on Arbitrum between block X and Y."
"Estimate gas for calling this method on Base using these params."
"Run
eth_getCodeon chain 8453 for address0x....""Show my RouteMesh usage for the last 7 days broken down by chain."
"What is my current RouteMesh balance and request count this month?"
"List my RouteMesh provider plans and the methods on each plan."
Tools
rpc_list_chains- discover and filter supported chains (via GET /chains on the API server)rpc_call- generic JSON-RPC escape hatchrpc_get_block- fetch by number/tag/hashrpc_get_transaction- fetch transaction by hashrpc_get_transaction_receipt- fetch receipt by hashrpc_get_logs- query logs with block/topic filtersrpc_get_balance- native token balance for an addressrpc_call_contract- read-onlyeth_callrpc_estimate_gas- gas estimationrpc_get_fee_data- gas price + EIP-1559 hintsrpc_trace_transaction- trace/debug transaction best effortget_usage- customer usage summary and balance from the API server (requires management token)list_api_keys- list customer API keys (requires management token)create_api_key- create a new API key with allowed domains and routing strategy (requires management token)update_api_key- update an existing API key (requires management token)provider_list_plans- list the provider's RPC plans (requires provider-linked management token)provider_get_plan_methods- list the RPC methods of one of the provider's plans (requires provider-linked management token)provider_upsert_plan_methods- insert/update the RPC method rows for a provider plan (requires provider-linked management token)provider_get_node_status- sync status of one of the provider's nodes (requires provider-linked management token)provider_upsert_node- create/update an HTTP node on a provider plan (requires provider-linked management token)provider_upsert_ws_node- create/update a WebSocket node on a provider plan (requires provider-linked management token)provider_set_node_status- enable/disable/delete a provider node (requires provider-linked management token)
Customer tools
When ROUTEMESH_MGMT_TOKEN is set, the server exposes customer-scoped tools that call the API server with the management token in the x-api-key header.
Create a management token in the RouteMesh dashboard (Mgmt Tokens page): click New Token, give it a label (e.g. mcp), and copy the secret — it is shown only once.
Customer management tokens are scoped automatically to the customer management routes (GET /usage, GET /api-keys, POST /api-keys, PUT /api-keys/:id). There is no route allowlist to configure — use a dedicated token for the MCP server so you can revoke it independently.
Provider tools additionally require the token's customer to be linked to a provider; they are then scoped automatically to /provider/* routes, and resources owned by another provider come back as 404.
get_usage — usage summary and balance
get_usage fetches customer usage data from the API server (GET /usage).
Parameter | Type | Description |
| RFC3339 timestamp | Window start (default: now minus 30 days) |
| RFC3339 timestamp | Window end (default: now UTC) |
| string array | Sections to return: |
| string | Flat grouped rows (overrides |
| string | Filter to one chain |
| positive int | Filter to one customer API key |
|
| Time series bucketing (default: |
| int (1–100) | Max rows for |
Examples:
Default (last 30 days, summary + balance): call
get_usagewith no parametersCustom window with chain breakdown:
from=2026-06-01T00:00:00Z,to=2026-06-18T00:00:00Z,include=["summary","by_chain"]Hourly time series for one API key:
include=["time_series"],granularity="hour",apiKeyId=42Top methods on a chain:
include=["top_methods"],chainId="ethereum",limit=10Flat grouped rows:
groupBy="api_key,chain",limit=50
list_api_keys — list API keys
list_api_keys calls GET /api-keys and returns an array of API key metadata (id, name, active, allowed_domains, routing_strategy, timestamps). The secret api_key value is never returned by this endpoint.
create_api_key — create a new API key
create_api_key calls POST /api-keys to provision a new key. The request requires:
Parameter | Type | Required | Description |
| string[] | yes | Array of allowed domains (valid URLs) |
|
| yes | Routing strategy for this key |
| string | no | Optional human-readable name |
Important: The response includes the secret api_key value, which is only shown once at creation. Store it securely — it cannot be retrieved again.
update_api_key — update an existing API key
update_api_key calls PUT /api-keys/:apiKey for partial updates:
Parameter | Type | Required | Description |
| string | yes | The API key string to update (from |
| string | no | Updated human-readable name |
| boolean | no | Activate or deactivate the key |
| string[] | no | Updated array of allowed domains |
At least one of name, active, or allowed_domains must be provided. The secret api_key value is never returned by this endpoint.
Provider tools
Provider tools mirror the provider-scoped API routes (/provider/*) and require a management token whose customer is linked to a provider. All writes are ownership-checked server-side: a plan_id / node that belongs to another provider is rejected (404), so tools can only affect the linked provider's own resources.
provider_list_plans — list the provider's plans
Calls GET /provider/plans. Returns the provider's plans (id, name, price, quota, rate limits, billing fields) or an empty array.
provider_get_plan_methods — list a plan's RPC methods
Calls GET /provider/plans/:planId/methods.
Parameter | Type | Description |
| positive int | Plan owned by the provider (404 otherwise) |
Returns the plan's RPC method rows (method, vm, node_target_type, cost, rate limits, chain_id) or an empty array.
provider_upsert_plan_methods — insert/update a plan's RPC methods
Calls POST /provider/plans/:planId/methods.
Parameter | Type | Required | Description |
| positive int | yes | Plan owned by the provider (404 otherwise) |
| array (1–500) | yes | RPC method rows to insert/update |
Each methods[] item supports: method, vm, node_target_type, cost, optional rate_limit, optional rate_limit_interval_sec, and optional chain_id (omit/null for all chains). Returns a plain-text success message on 201.
provider_get_node_status — node sync status
Calls GET /provider/nodes/:nodeId/status.
Parameter | Type | Description |
| positive int | Node owned by the provider (404 otherwise) |
Returns { node_id, in_sync, status } where status is ok or out_of_sync.
provider_upsert_node — create/update an HTTP node
Calls PUT /provider/nodes. The node is screened server-side; mandatory screening failures are returned as 400. The URL must be a public http:// or https:// endpoint; loopback, private (10/8, 172.16/12, 192.168/16), and link-local (169.254/16) addresses are rejected client-side before forwarding.
Parameter | Type | Required | Description |
| positive int | yes | Plan owned by the provider |
| URL | yes | HTTP(S) endpoint of the node |
| string | yes | VM type, e.g. |
| number (>= 0) | yes | Requests the node supports per interval |
| positive int | yes | Rate limit window in seconds |
| enum | no |
|
provider_upsert_ws_node — create/update a WebSocket node
Calls PUT /provider/nodes/ws. The server dials the node and verifies it accepts eth_subscribe (newHeads) before persisting. The URL must be a public wss:// endpoint; loopback, private, and link-local addresses are rejected client-side before forwarding.
Parameter | Type | Required | Description |
| positive int | yes | Plan owned by the provider |
| string | yes | Chain ID served, e.g. |
| string | yes |
|
provider_set_node_status — enable/disable/delete a node
Calls POST /provider/nodes/status.
Parameter | Type | Required | Description |
| positive int | yes | Node owned by the provider (404 otherwise) |
| enum | yes |
|
Prerequisites
Node.js 20+
RouteMesh API key (sign up)
Customer management token (optional, for customer tools) — create one on the dashboard's Mgmt Tokens page; it is scoped automatically to the customer management routes
Quick start
Install and build:
npm install
npm run buildSet API key for local dev:
cp .env.example .envRun local build:
ROUTEMESH_API_KEY=your_key_here node dist/index.jsRun in dev mode:
ROUTEMESH_API_KEY=your_key_here npm run devRun published package:
ROUTEMESH_API_KEY=your_key_here npx -y @routemesh/mcpCursor MCP config
Add one of these to ~/.cursor/mcp.json.
Local build:
{
"mcpServers": {
"routemesh": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/PROJECT/dist/index.js"],
"env": {
"ROUTEMESH_API_KEY": "replace-with-your-routemesh-key",
"ROUTEMESH_MGMT_TOKEN": "replace-with-your-customer-mgmt-token"
}
}
}
}Published package via npx:
{
"mcpServers": {
"routemesh": {
"command": "npx",
"args": ["-y", "@routemesh/mcp"],
"env": {
"ROUTEMESH_API_KEY": "replace-with-your-routemesh-key",
"ROUTEMESH_MGMT_TOKEN": "replace-with-your-customer-mgmt-token"
}
}
}
}Development commands
npm run typecheck- static type checkingnpm run test- run tests oncenpm run test:watch- watch modenpm run build- compile todist/
Release
npm run test
npm run build
npm version patch
npm publish --access publicNotes
The server is read-only for on-chain RPC tools.
get_usagereads billing/usage data from the API server; it does not use Atlas.Requests use
ROUTEMESH_BASE_URLfirst, thenROUTEMESH_BACKUP_BASE_URLon retryable failures.rpc_list_chainsreads chain data fromGET /chainson the API server (ROUTEMESH_API_SERVER_URL).
References
RouteMesh docs: https://routeme.sh/docs
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/routemesh/routemesh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server