get_chain_info
Retrieve detailed information about any EVM-compatible network, including Ethereum, Optimism, Arbitrum, and Base. Specify the network name or chain ID using the EVM MCP Server.
Instructions
Get information about an EVM network
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Network name (e.g., 'ethereum', 'optimism', 'arbitrum', 'base', etc.) or chain ID. Supports all EVM-compatible networks. Defaults to Ethereum mainnet. |
Implementation Reference
- src/core/tools.ts:71-105 (registration)Registers the get_chain_info MCP tool, including input schema (network parameter), annotations, and inline handler that fetches chainId, blockNumber, and rpcUrl using services.
server.registerTool( "get_chain_info", { description: "Get information about an EVM network: chain ID, current block number, and RPC endpoint", inputSchema: { network: z.string().optional().describe("Network name (e.g., 'ethereum', 'optimism', 'arbitrum', 'base') or chain ID. Defaults to Ethereum mainnet.") }, annotations: { title: "Get Chain Info", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true } }, async ({ network = "ethereum" }) => { try { const chainId = await services.getChainId(network); const blockNumber = await services.getBlockNumber(network); const rpcUrl = getRpcUrl(network); return { content: [{ type: "text", text: JSON.stringify({ network, chainId, blockNumber: blockNumber.toString(), rpcUrl }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching chain info: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } ); - src/core/tools.ts:86-104 (handler)Handler function for get_chain_info tool that orchestrates calls to getChainId, getBlockNumber, and getRpcUrl services.
async ({ network = "ethereum" }) => { try { const chainId = await services.getChainId(network); const blockNumber = await services.getBlockNumber(network); const rpcUrl = getRpcUrl(network); return { content: [{ type: "text", text: JSON.stringify({ network, chainId, blockNumber: blockNumber.toString(), rpcUrl }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching chain info: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } - src/core/services/blocks.ts:10-13 (helper)Helper function getBlockNumber that retrieves the current block number for a network using viem public client.
export async function getBlockNumber(network = 'ethereum'): Promise<bigint> { const client = getPublicClient(network); return await client.getBlockNumber(); } - Helper function getChainId that retrieves the chain ID for a network using viem public client.
export async function getChainId(network = 'ethereum'): Promise<number> { const client = getPublicClient(network); const chainId = await client.getChainId(); return Number(chainId); } - src/core/chains.ts:341-347 (helper)Helper function getRpcUrl that returns the RPC endpoint URL for a given network or chain ID.
export function getRpcUrl(chainIdentifier: number | string = DEFAULT_CHAIN_ID): string { const chainId = typeof chainIdentifier === 'string' ? resolveChainId(chainIdentifier) : chainIdentifier; return rpcUrlMap[chainId] || DEFAULT_RPC_URL; }