getBlockNumber
Retrieve the current block number from an Ethereum network using a specified provider or chain ID. Supports custom RPC URLs and named networks for accurate blockchain data queries.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used. | |
| provider | No | Optional. Either a network name or custom RPC URL. Use getAllNetworks to see available networks and their details, or getNetwork to get info about a specific network. You can use any network name returned by these tools as a provider value. |
Implementation Reference
- src/tools/core.ts:60-72 (handler)The handler function for the getBlockNumber MCP tool. It takes optional provider and chainId, fetches the block number using ethersService, and returns a formatted text response or error.async ({ provider, chainId }) => { try { const blockNumber = await ethersService.getBlockNumber(provider, chainId); return { content: [{ type: "text", text: `Current block number: ${blockNumber}` }] }; } catch (error) { return createErrorResponse(error, 'getting block number'); } }
- src/tools/core.ts:54-59 (schema)Zod input schema defining optional provider (network name or RPC URL) and chainId parameters with descriptions.{ provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) },
- src/tools/core.ts:52-73 (registration)Full registration of the getBlockNumber tool using server.tool(), including name, schema, and handler function.server.tool( "getBlockNumber", { provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) }, async ({ provider, chainId }) => { try { const blockNumber = await ethersService.getBlockNumber(provider, chainId); return { content: [{ type: "text", text: `Current block number: ${blockNumber}` }] }; } catch (error) { return createErrorResponse(error, 'getting block number'); } } );
- src/tools/index.ts:23-23 (registration)Invocation of registerCoreTools in the main tools index, which registers the getBlockNumber tool (among core tools).registerCoreTools(server, ethersService);