solana-infra-mcp
Provides tools for querying Solana blockchain infrastructure, including RPC health checks, priority fee estimation, epoch info, leader schedule, latency comparison, and keyless transaction submission.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@solana-infra-mcpWhat's the current priority fee estimate?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
solana-infra-mcp
An MCP server that gives your agent Solana-infra awareness — RPC health, priority-fee
estimation, leader schedule, chain state, and latency comparison. Provider-agnostic; point it
at any Solana RPC (rpc edge is the flagship backend). Read-only, no keys
logged, no heavy deps (plain JSON-RPC over fetch).
Tools
Tool | What it answers |
| Is this endpoint healthy? version, current slot, measured request latency |
| What compute-unit price lands right now? p50/p75/p90/max micro-lamports/CU |
| Where are we in the epoch? slot index, block height |
| Who are the next N slot leaders? (time your submissions) |
| How does my endpoint's read latency compare to a baseline? |
| Relay a caller-signed base64 tx and confirm on-chain landing (keyless) |
Related MCP server: SolTracker MCP Server
Add it to Claude
Build it, then register the server. Claude Code:
git clone https://github.com/rpc-edge/solana-infra-mcp && cd solana-infra-mcp
pnpm install && pnpm build
claude mcp add solana-infra -- node "$(pwd)/dist/index.js"Or in a client config (Claude Desktop / others):
{
"mcpServers": {
"solana-infra": {
"command": "node",
"args": ["/abs/path/to/solana-infra-mcp/dist/index.js"],
"env": { "SOLANA_RPC_URL": "https://rpc.rpcedge.com/?api-key=YOUR_KEY" }
}
}
}Docker (Glama / directory hosts)
docker build -t solana-infra-mcp .
docker run -i --rm -e SOLANA_RPC_URL='https://rpc.rpcedge.com/?api-key=YOUR_KEY' solana-infra-mcpglama.json claims maintainers for https://glama.ai/mcp (listing after publish). For the branded npm path use rpcedge-mcp (npx rpcedge-mcp@latest).
Skill & plugin
The repo also ships as a Claude Code plugin: .claude-plugin/plugin.json + .mcp.json
(registers the server) + a skill (skills/solana-infra/SKILL.md) that teaches Claude when
to reach for each tool. Because the server is TypeScript, run pnpm install && pnpm build once
so dist/ exists; then install the plugin dir (or just claude mcp add as above).
(An npx-installable published build is on the roadmap.)
Provider config
SOLANA_RPC_URL sets the default endpoint every tool uses (unset → public mainnet-beta).
Point it at rpc edge with your key for the low-latency path; the API key is read from the
environment at runtime and never logged (tools display the host only). Any tool also takes
an explicit url argument to override per call.
Status & roadmap
Working today: six tools (five read-only + keyless submit_transaction), all verified against
live mainnet; a bundled skill + Claude Code plugin.
Next:
yellowstone_sample— a bounded gRPC first-seen/freshness probe (MCP is request/response, so streaming is exposed as a time-boxed sample, not a live subscription).Publish an
npx-installable build on npm; finish Glama + MCP registry listings.awesome-solana-ai PR: https://github.com/solana-foundation/awesome-solana-ai/pull/193
Develop
pnpm install
pnpm typecheck
pnpm build # -> dist/
pnpm start # runs the stdio serverLicense
Available Tools
6 toolsepoch_infoEpoch infoB
Current epoch, slot index / slots-in-epoch, absolute slot, and block height.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | RPC URL (default: SOLANA_RPC_URL, else public mainnet-beta) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries full responsibility for behavioral disclosure. It does not explicitly state that this is a read-only query, how it handles RPC errors, or what the default behavior is regarding the optional URL parameter, aside from the schema's mention of defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise phrase that lists all relevant output fields without any fluff or repetition. It is front-loaded and adequately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (one optional parameter, no output schema), the description provides a clear list of returned values. However, it does not explain the return format or the effect of the 'url' parameter on which RPC endpoint is queried, so minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% because the only parameter ('url') has a clear description of its default behavior. The tool description adds no additional parameter semantics, but since the schema already covers it, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning current epoch, slot index/slots-in-epoch, absolute slot, and block height. Although it lacks an explicit verb like 'get' or 'retrieve', the content effectively distinguishes it from sibling tools such as rpc_health or next_leaders by its focus on timing/block data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description does not mention any specific conditions, prerequisites, or exclusions, leaving the agent to infer usage solely from the output fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latency_compareCompare RPC latencyA
getSlot read-latency (p50) across endpoints, default the configured one vs public mainnet-beta. Network-inclusive - not a landing/first-seen proxy.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | ||
| samples | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It adds useful behavioral context, such as 'network-inclusive - not a landing/first-seen proxy', which clarifies the measurement semantics. It does not mention auth or side effects, but these are less critical for a read-only latency tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the main action and includes a clarifying caveat. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description covers the core purpose, default behavior, and a key behavioral nuance. It does not explain the return format, but for a latency comparison tool this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage for parameters, and the description only implicitly references the 'urls' parameter via 'endpoints' and default vs. public. The 'samples' parameter is not explained at all, leaving its purpose unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool measures getSlot read-latency (p50) across endpoints, which is a specific verb+resource. It also distinguishes itself from siblings by focusing on latency comparison, not health or transaction submission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by mentioning the default comparison between the configured endpoint and public mainnet-beta, and the network-inclusive behavior. It does not explicitly exclude alternatives, but the use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_leadersNext slot leadersA
The next N slot leaders (validator identities) from the current slot - for timing transaction submission.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | RPC URL (default: SOLANA_RPC_URL, else public mainnet-beta) | |
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only query by describing the return data, but it doesn't explicitly state that it makes an RPC call, its dependencies, or any potential errors. The 'from the current slot' phrase adds useful context about the data source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently states the tool's purpose and use case, with no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple read-only tool: it states what is returned (slot leaders), the reference point (current slot), and the intended use case. It doesn't describe return format or error behavior, but the absence of an output schema and the simplicity of the tool make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any parameters. The schema covers url (with a description) but lacks a description for count, relying only on constraints. Since the description adds no parameter-level information, it does not compensate for the 50% schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the next N slot leaders (validator identities) from the current slot, distinguishing it from sibling tools like rpc_health or priority_fee_estimate. However, it lacks an explicit verb like 'get' or 'fetch', making it slightly less direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('for timing transaction submission'), indicating when to use the tool. It does not explicitly mention alternatives or exclusion criteria, but the context is strong enough to guide selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
priority_fee_estimatePriority fee estimateA
Recent prioritization-fee distribution (p50/p75/p90/max micro-lamports per CU) to price compute-unit fees for landing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | RPC URL (default: SOLANA_RPC_URL, else public mainnet-beta) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of disclosing behavior. It indicates the tool reads recent fee distribution data, which is non-destructive, but it does not explicitly state it is read-only or mention rate limits or other side effects. The provided detail about the response format adds some value beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key information: what it returns, the specific percentiles, units, and the intended use. Every word earns its place, with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description fully explains the output distribution and its purpose. It is complete for a fee-estimation tool and does not leave significant gaps for an agent to misuse it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single optional 'url' parameter with 100% coverage. The description does not add additional meaning about the parameter beyond its purpose, but the schema is sufficient. The baseline of 3 applies because schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a prioritization-fee distribution with specific percentiles (p50/p75/p90/max) and units (micro-lamports per CU). It also states its purpose ('to price compute-unit fees for landing'), making it distinct from sibling tools like rpc_health or submit_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for pricing compute-unit fees before landing transactions. It does not explicitly name alternatives or exclusions, but the context is clear and no sibling tool serves a similar purpose, so no exclusions are necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rpc_healthRPC healthB
Health, solana-core version, current slot, and measured getSlot latency for a Solana RPC endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | RPC URL (default: SOLANA_RPC_URL, else public mainnet-beta) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must convey behavior. It mentions that latency is 'measured', implying a network call, but does not disclose side effects, error behavior, or that it performs a live request. It also does not state that the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with no filler. All listed items (health, version, slot, latency) are relevant and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple (one optional parameter, no output schema), the description only lists return values without explaining the output format or any defaults (though defaults are in the schema). It is adequate but leaves room for details like JSON structure or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the 'url' parameter with its default behavior (SOLANA_RPC_URL or public mainnet-beta), providing 100% coverage. The description adds no additional parameter details, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly lists the specific outputs: health, solana-core version, current slot, and getSlot latency, for a Solana RPC endpoint. This distinguishes it from siblings like priority_fee_estimate or submit_transaction, which target different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives such as latency_compare or epoch_info. The intended use case is implied by the name and description, but no context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_transactionSubmit transaction + confirm landingA
Relay a caller-SIGNED base64 transaction and confirm actual on-chain inclusion (landed slot + time). Keyless: the server never signs or holds keys - sign upstream, submit here.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | RPC URL (default: SOLANA_RPC_URL, else public mainnet-beta) | |
| maxWaitMs | No | ||
| signedTransaction | Yes | Base64-encoded, fully signed transaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It transparently states the server never signs or holds keys and that it confirms on-chain inclusion (landed slot + time). However, it does not mention timeout/error behavior or irreversible effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; all content is functional and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers main purpose and key behavior, and hints at output (landed slot + time). But it omits semantics/edge behavior for maxWaitMs and error handling, and with no output schema, return details are sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description clarifies that the signedTransaction is 'caller-SIGNED' and 'keyless', adding meaning beyond the schema's 'fully signed transaction'. The url and maxWaitMs parameters are not elaborated beyond schema/defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Relay' and resource 'caller-SIGNED base64 transaction', with clear goal 'confirm actual on-chain inclusion'. Clearly differentiates from read-only sibling tools like rpc_health and epoch_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states 'sign upstream, submit here' and 'Keyless', indicating this tool is for already-signed transactions. Provides clear context for when to use, though it doesn't explicitly exclude alternatives or name sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
epoch_info - First observed
latency_compare - First observed
next_leaders - First observed
priority_fee_estimate - First observed
rpc_health - First observed
submit_transaction
TDQS
Scored across 6 tools
Each tool targets a distinct operation: health check, fee estimation, transaction submission, epoch info, leader schedule, and latency comparison. No two tools overlap in purpose, despite rpc_health and latency_compare both touching latency metrics.
All tool names use snake_case and are descriptive, but the pattern varies between noun-based (rpc_health, epoch_info), verb-initial (submit_transaction), and verb-final (latency_compare). This minor inconsistency prevents a perfect score.
With 6 tools, the server is well-scoped for a Solana infrastructure toolkit. Each tool earns its place, covering monitoring, fee estimation, and transaction submission without unnecessary overhead.
The set covers health, fee estimation, transaction submission, and network timing comprehensively. Minor gaps like a getRecentBlockhash or getBalance tool exist, but the keyless submission design makes these optional rather than critical.
Maintenance
Related MCP Connectors
Live, neutral benchmarks for public RPC latency, oracles, bridges, perp DEX, and prediction markets.
Wallet-signed Solana RPC for AI agents. No API keys, LLM-safe amounts, pay-per-call in SOL.
Solana on-chain intelligence — token scans, wallet profiling, bundle detection, 19 MCP tools.
USDC-gated Base JSON-RPC: free 10 req/min, $0.50 per 10k. Failover, cache, /mcp, ledger.
Related MCP Servers
- AlicenseBqualityDmaintenanceA server that enables interaction with the Solana blockchain, providing access to over 40 Solana RPC methods including getting balances, transaction details, block information, and sending transactions.444MIT
- FlicenseNot gradedqualityDmaintenanceProvides unified access to real-time and historical Solana ecosystem data through 40+ API endpoints, enabling LLM agents to query tokens, wallets, trades, and DeFi metrics.-
- AlicenseNot gradedqualityDmaintenanceSolana on-chain intelligence API — token scans, wallet PnL, bundle detection, fresh wallets, dev profiling. MCP server for Claude, Cursor & AI agents. Live PumpFun/Raydium streams1MIT
- AlicenseNot gradedqualityDmaintenanceProvides basic Solana RPC methods and prompts for AI models to interact with the Solana blockchain. Enables developers to fetch balances, account info, and transactions through natural language.1MIT
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/rpc-edge/solana-infra-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server