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
TableJSON 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'); } } );