Skip to main content
Glama
index.ts5.49 kB
import type { PrivateKey } from "@bsv/sdk"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { registerA2aCallTool } from "./a2b/call"; import { registerA2bDiscoverTool } from "./a2b/discover"; import { registerBapTools } from "./bap"; // import { registerBigBlocksTools } from "./bigblocks"; // Disabled - Turbopack module resolution issues import { registerBsocialTools } from "./bsocial"; import { registerBsvTools } from "./bsv"; import { registerMneeTools } from "./mnee"; import { registerOrdinalsTools } from "./ordinals"; import { registerUtilsTools } from "./utils"; import type { IntegratedWallet } from "./wallet/integratedWallet"; import { registerWalletTools } from "./wallet/tools"; import type { Wallet } from "./wallet/wallet"; /** * Configuration options for tools * * These options can be controlled through environment variables: * - enableBsvTools: controlled by DISABLE_BSV_TOOLS * - enableOrdinalsTools: controlled by DISABLE_ORDINALS_TOOLS * - enableUtilsTools: controlled by DISABLE_UTILS_TOOLS * - enableA2bTools: controlled by ENABLE_A2B_TOOLS (disabled by default) * - enableBapTools: controlled by DISABLE_BAP_TOOLS * - enableBsocialTools: controlled by DISABLE_BSOCIAL_TOOLS * - enableWalletTools: controlled by DISABLE_WALLET_TOOLS * - enableMneeTools: controlled by DISABLE_MNEE_TOOLS * - enableBigBlocksTools: controlled by DISABLE_BIGBLOCKS_TOOLS */ export interface ToolsConfig { enableBsvTools?: boolean; enableOrdinalsTools?: boolean; enableUtilsTools?: boolean; enableA2bTools?: boolean; enableBapTools?: boolean; enableBsocialTools?: boolean; enableWalletTools?: boolean; enableMneeTools?: boolean; enableBigBlocksTools?: boolean; identityPk?: PrivateKey; payPk?: PrivateKey; xprv?: string; wallet?: Wallet; integratedWallet?: IntegratedWallet; disableBroadcasting?: boolean; // For wallet tools } /** * Register all tools with the MCP server based on configuration * @param server The MCP server instance * @param config Configuration options */ export function registerAllTools( server: McpServer, config: ToolsConfig = {}, ): void { // Ensure defaults are true unless explicitly set to false via env vars or config const enableBsvTools = process.env.DISABLE_BSV_TOOLS !== "true" && config.enableBsvTools !== false; const enableOrdinalsTools = process.env.DISABLE_ORDINALS_TOOLS !== "true" && config.enableOrdinalsTools !== false; const enableUtilsTools = process.env.DISABLE_UTILS_TOOLS !== "true" && config.enableUtilsTools !== false; // Ensure Utils are enabled by default const enableA2bTools = process.env.ENABLE_A2B_TOOLS === "true" && config.enableA2bTools !== false; const enableBapTools = process.env.DISABLE_BAP_TOOLS !== "true" && config.enableBapTools !== false; const enableWalletTools = process.env.DISABLE_WALLET_TOOLS !== "true" && config.enableWalletTools !== false; const enableMneeTools = process.env.DISABLE_MNEE_TOOLS !== "true" && config.enableMneeTools !== false; const enableBsocialTools = process.env.DISABLE_BSOCIAL_TOOLS !== "true" && config.enableBsocialTools !== false; const enableBigBlocksTools = process.env.DISABLE_BIGBLOCKS_TOOLS !== "true" && config.enableBigBlocksTools !== false; // Register BSV-related tools if (enableBsvTools) { registerBsvTools(server); } // Register Ordinals-related tools if (enableOrdinalsTools) { registerOrdinalsTools(server); } // Register utility tools if (enableUtilsTools) { registerUtilsTools(server); } // Register agent-to-blockchain tools if (enableA2bTools) { registerA2bDiscoverTool(server); // registerA2aCallTool(server); } // Register BAP tools if (enableBapTools) { const bapConfig: import("./bap").BapToolsConfig = { disableBroadcasting: config.disableBroadcasting, identityPk: config.identityPk, masterXprv: config.xprv, wallet: config.wallet, }; registerBapTools(server, bapConfig); } // Register BSocial tools if (enableBsocialTools && config.wallet) { registerBsocialTools(server, { wallet: config.wallet }); } // Register BigBlocks tools // Disabled - Turbopack module resolution issues // if (enableBigBlocksTools) { // registerBigBlocksTools(server); // } // Register Wallet tools themselves if (enableWalletTools) { if (config.integratedWallet?.isDropletMode) { // Register Droplet-mode wallet tools const dropletClient = config.integratedWallet.getDropletClient(); if (dropletClient) { // Register Droplet-specific tools import("./wallet/getBalanceDroplet").then( ({ registerWalletGetBalanceDropletTool }) => { registerWalletGetBalanceDropletTool(server, dropletClient); }, ); import("./wallet/setupDroplet").then(({ registerSetupDropletTool }) => { if (config.integratedWallet) { registerSetupDropletTool(server, config.integratedWallet); } }); console.error("Registered Droplet mode wallet tools"); } } else if (config.wallet) { // Register normal wallet tools const walletToolOptions = { disableBroadcasting: config.disableBroadcasting === true, // Default to false if undefined enableA2bTools: enableA2bTools, // Use the already determined enableA2bTools value identityPk: config.identityPk, }; registerWalletTools(server, config.wallet, walletToolOptions); } } // Register MNEE tools if (enableMneeTools) { registerMneeTools(server); } // Add more tool categories as needed }

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/b-open-io/bsv-mcp'

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