Skip to main content
Glama

deploy-contract

Deploy smart contracts to blockchain networks using bytecode and constructor arguments. This tool enables secure contract deployment through MetaMask integration.

Instructions

Deploy a contract to the network, given bytecode, and constructor arguments.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
abiYesThe contract's ABI.
argsNoArguments to pass when deploying the contract. Inferred from abi.
bytecodeYesThe contract's bytecode.

Implementation Reference

  • Executes the deployment of a smart contract using wagmi's deployContract function. Returns the transaction hash on success or an error message on failure.
    execute: async (args) => { try { const result = await deployContract(wagmiConfig, args); return { content: [ { type: "text", text: JSONStringify({ hash: result, }), }, ], }; } catch (error) { if (error instanceof TransactionExecutionError) { return { content: [ { type: "text", text: error.cause.message, }, ], }; } return { content: [ { type: "text", text: (error as Error).message, }, ], }; } },
  • Defines the tool name, description, and input schema using Zod for ABI, optional constructor arguments, and bytecode.
    name: "deploy-contract", description: "Deploy a contract to the network, given bytecode, and constructor arguments.", parameters: z.object({ abi: Abi.describe("The contract's ABI."), args: z.unknown().array().optional().describe("Arguments to pass when deploying the contract. Inferred from abi."), bytecode: Calldata.describe("The contract's bytecode."), }),
  • Registers the "deploy-contract" tool with the FastMCP server, including schema and handler.
    export function registerDeployContractTools(server: FastMCP, wagmiConfig: Config): void { server.addTool({ name: "deploy-contract", description: "Deploy a contract to the network, given bytecode, and constructor arguments.", parameters: z.object({ abi: Abi.describe("The contract's ABI."), args: z.unknown().array().optional().describe("Arguments to pass when deploying the contract. Inferred from abi."), bytecode: Calldata.describe("The contract's bytecode."), }), execute: async (args) => { try { const result = await deployContract(wagmiConfig, args); return { content: [ { type: "text", text: JSONStringify({ hash: result, }), }, ], }; } catch (error) { if (error instanceof TransactionExecutionError) { return { content: [ { type: "text", text: error.cause.message, }, ], }; } return { content: [ { type: "text", text: (error as Error).message, }, ], }; } }, }); };
  • Calls registerDeployContractTools as part of the central tool registration in registerTools.
    registerDeployContractTools(server, wagmiConfig);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xiawpohr/metamask-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server