@sanlim/mempool-mcp-server
Version:
A sample of MCP implementation using DDD structure with some APIs call.
57 lines (56 loc) • 2.55 kB
JavaScript
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 }] };
});
}
}