getFeeData
Retrieves current gas fee data for Ethereum network transactions. Specify network or chain ID to get accurate gas prices, max fees, and priority fees for transaction planning.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| 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. | |
| 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. |
Implementation Reference
- src/tools/core.ts:109-132 (handler)The handler function that implements the core logic of the getFeeData tool. It retrieves fee data using ethersService, formats gas prices, and returns a formatted text response.
async ({ provider, chainId }) => { try { const feeData = await ethersService.getFeeData(provider, chainId); // Format the fee data for human readability const formatted = { gasPrice: feeData.gasPrice ? ethers.formatUnits(feeData.gasPrice, "gwei") + " gwei" : "Not available", maxFeePerGas: feeData.maxFeePerGas ? ethers.formatUnits(feeData.maxFeePerGas, "gwei") + " gwei" : "Not available", maxPriorityFeePerGas: feeData.maxPriorityFeePerGas ? ethers.formatUnits(feeData.maxPriorityFeePerGas, "gwei") + " gwei" : "Not available" }; return { content: [{ type: "text", text: `Fee Data: Gas Price: ${formatted.gasPrice} Max Fee Per Gas: ${formatted.maxFeePerGas} Max Priority Fee Per Gas: ${formatted.maxPriorityFeePerGas}` }] }; } catch (error) { return createErrorResponse(error, 'getting fee data'); } } - src/tools/core.ts:103-108 (schema)Zod schema defining the input parameters for the getFeeData tool: optional provider (network name or RPC URL) and chainId.
{ 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:102-133 (registration)The server.tool() call that registers the getFeeData tool with the MCP server, including name, input schema, and handler function.
"getFeeData", { 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 feeData = await ethersService.getFeeData(provider, chainId); // Format the fee data for human readability const formatted = { gasPrice: feeData.gasPrice ? ethers.formatUnits(feeData.gasPrice, "gwei") + " gwei" : "Not available", maxFeePerGas: feeData.maxFeePerGas ? ethers.formatUnits(feeData.maxFeePerGas, "gwei") + " gwei" : "Not available", maxPriorityFeePerGas: feeData.maxPriorityFeePerGas ? ethers.formatUnits(feeData.maxPriorityFeePerGas, "gwei") + " gwei" : "Not available" }; return { content: [{ type: "text", text: `Fee Data: Gas Price: ${formatted.gasPrice} Max Fee Per Gas: ${formatted.maxFeePerGas} Max Priority Fee Per Gas: ${formatted.maxPriorityFeePerGas}` }] }; } catch (error) { return createErrorResponse(error, 'getting fee data'); } } );