elysium-chain-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | debug, info, warn or error. Logs go to stderr only. | info |
| MAX_FEE_HYPE | No | Most one write may cost in fees, else FEE_CAP_EXCEEDED. | 0.001 |
| ENABLE_WRITES | No | Registers the write tools; needs ELYSIUM_PRIVATE_KEY and chain ID 99801. | false |
| MAX_SEND_HYPE | No | Most HYPE one write may send, else VALUE_CAP_EXCEEDED. | 0.01 |
| MCP_HTTP_HOST | No | HTTP bind address. | 127.0.0.1 |
| MCP_HTTP_PORT | No | HTTP port. | 3000 |
| MCP_TRANSPORT | No | stdio or http. | stdio |
| MCP_HTTP_TOKEN | No | Bearer token (16+ chars); required off loopback, and for writes over HTTP. | |
| RPC_TIMEOUT_MS | No | Timeout per RPC attempt. | 10000 |
| ELYSIUM_RPC_URL | Yes | JSON-RPC endpoint. Testnet: https://testnet-rpc.elysium.kinetiq.xyz. | |
| RPC_RETRY_COUNT | No | Retries for timeouts, connection errors, 408/429/5xx and rate-limit errors. | 3 |
| WRITE_ALLOWLIST | No | Comma-separated destinations; when set, others get ADDRESS_NOT_ALLOWED. | |
| ELYSIUM_CHAIN_ID | Yes | Chain ID the endpoint must serve (testnet 99801); checked before use. | |
| EXPLORER_API_URL | No | Enables the explorer tools. Testnet: https://elysium.kinetiq.xyz/api/v2. | |
| ELYSIUM_CHAIN_NAME | No | Display name only. | Elysium |
| RPC_RATE_LIMIT_RPS | No | Client-side RPC requests per second, retries included. | 10 |
| ELYSIUM_PRIVATE_KEY | No | Key the write tools send from (64 hex chars). Never logged or returned. | |
| EXPLORER_TIMEOUT_MS | No | Timeout per explorer request. | 10000 |
| MAX_LOG_BLOCK_RANGE | No | Most blocks per unfiltered get_logs query; filtered queries have no limit. | 2000 |
| EXPLORER_RETRY_COUNT | No | Retries for explorer timeouts, connection errors, 408/429/5xx; honours Retry-After. | 2 |
| BLOCK_TIME_SAMPLE_SIZE | No | Blocks get_chain_status measures block time over. | 1000 |
| EXPLORER_RATE_LIMIT_RPS | No | Client-side explorer requests per second. | 5 |
| RPC_RETRY_BASE_DELAY_MS | No | Base for exponential backoff with jitter; Retry-After takes precedence. | 250 |
| WRITE_RECEIPT_TIMEOUT_MS | No | How long a write waits for its receipt before returning pending. | 30000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_chain_statusA | Latest block, measured average block time, current base fee and gas price. Block timestamps have one-second resolution while Elysium produces several blocks per second, so block time is measured over a window of recent blocks. |
| get_blockA | Fetch a block by number, hash or tag. Returns header fields and transaction hashes (or full transactions). |
| get_transactionA | Fetch a transaction and its receipt by hash. With an ABI, the input data and event logs are decoded. If the transaction is still pending, receipt is null. systemTransaction is true for ArbOS-generated bookkeeping transactions (Arbitrum type 106, e.g. startBlock at index 0 of every block), which no user sent and which pay no fee. |
| get_balanceA | Native HYPE balance of an address, plus optional ERC-20 balances. A failure for one token is reported in that token's entry and does not fail the whole call. |
| get_token_infoA | Read an ERC-20 token's name, symbol, decimals and total supply. Fields the contract does not implement are null. |
| read_contractA | Call a view or pure function on a contract and return its decoded result. Nothing is sent to the chain. For state-changing functions, use simulate_call. |
| get_logsA | Query event logs over a block range. Filter by contract address and either an event signature (with optional indexed-argument values) or raw topics. Without an address or topic filter the range is capped at MAX_LOG_BLOCK_RANGE blocks (default 2,000, about 3-7 minutes on Elysium); with one, any range is allowed. Either way the RPC returns at most 10,000 logs per query; split longer ranges or add filters if you hit that. |
| simulate_callA | Dry-run a transaction with eth_call and estimate its gas, without sending anything. Provide either raw data, or abi + functionName + args to have the call data encoded and the result decoded. A transaction that would fail returns success: false with the revert reason; that is a result, not a tool error. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct resource or action, and descriptions clearly delineate them. The only notable overlap is read_contract vs simulate_call, since both perform eth_call and decode results; the descriptions mitigate this by telling the agent to use simulate_call for state-changing functions.
All tools use snake_case with a consistent verb_noun structure (get_chain_status, get_block, get_transaction, read_contract, simulate_call, etc.). The get_* family dominates with two well-formed outliers that still follow verb_noun.
Eight tools is well-scoped for a read-focused chain RPC interface. Every tool earns its place with no redundancy, and the set stays comfortably within the ideal 3-15 range.
The surface covers chain status, blocks, transactions with receipts, balances (native + ERC-20), token metadata, contract reads, log queries, and call simulation, which is broad for a read-only chain client. Minor gaps exist (no dedicated gas/fee estimation tool, no code fetch, no write/submit path), but agents can work around these via simulate_call and the RPC surface.