UNPKG

@sanlim/mempool-mcp-server

Version:

A sample of MCP implementation using DDD structure with some APIs call.

57 lines (56 loc) 2.55 kB
import { z } from "zod"; import { BaseToolsController } from "./base/BaseToolsController.js"; export class AddressToolsController extends BaseToolsController { addressService; constructor(server, addressService) { super(server); this.addressService = addressService; } registerTools() { this.registerGetAddressHandler(); this.registerGetAddressTxsHandler(); this.registerGetAddressTxsChainHandler(); this.registerGetAddressTxsMempoolHandler(); this.registerGetAddressUtxoHandler(); } registerGetAddressHandler() { this.server.tool("get-address-info", "Returns details about an address", { address: z.string().describe("The address to get info for"), }, async ({ address }) => { const text = await this.addressService.getAddressInfo({ address }); return { content: [{ type: "text", text }] }; }); } registerGetAddressTxsHandler() { this.server.tool("get-address-txs", "Returns transactions for an address", { address: z.string().describe("The address to get txs for"), }, async ({ address }) => { const text = await this.addressService.getAddressTxs({ address }); return { content: [{ type: "text", text }] }; }); } registerGetAddressTxsChainHandler() { this.server.tool("get-address-txs-chain", "Returns chain transactions for an address", { address: z.string().describe("The address to get chain txs for"), }, async ({ address }) => { const text = await this.addressService.getAddressTxsChain({ address }); return { content: [{ type: "text", text }] }; }); } registerGetAddressTxsMempoolHandler() { this.server.tool("get-address-txs-mempool", "Returns mempool transactions for an address", { address: z.string().describe("The address to get mempool txs for"), }, async ({ address }) => { const text = await this.addressService.getAddressTxsMempool({ address }); return { content: [{ type: "text", text }] }; }); } registerGetAddressUtxoHandler() { this.server.tool("get-address-utxo", "Returns UTXOs for an address", { address: z.string().describe("The address to get UTXOs for"), }, async ({ address }) => { const text = await this.addressService.getAddressUtxo({ address }); return { content: [{ type: "text", text }] }; }); } }