UNPKG

@mondaydotcomorg/agent-toolkit

Version:

monday.com agent toolkit

197 lines (189 loc) 5.51 kB
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { ApiClientConfig } from '@mondaydotcomorg/api'; import { ZodRawShape, z, ZodTypeAny } from 'zod'; import { ToolAnnotations } from '@modelcontextprotocol/sdk/types'; declare enum ToolMode { API = "api", APPS = "apps" } type ToolsConfiguration = { include?: string[]; exclude?: string[]; readOnlyMode?: boolean; mode?: ToolMode; enableDynamicApiTools?: boolean | 'only'; enableToolManager?: boolean; }; type MondayAgentToolkitConfig = { mondayApiToken: ApiClientConfig['token']; mondayApiVersion?: ApiClientConfig['apiVersion']; mondayApiRequestConfig?: ApiClientConfig['requestConfig']; toolsConfiguration?: ToolsConfiguration; }; /** * Monday Agent Toolkit providing an MCP server with Monday.com tools */ declare class MondayAgentToolkit extends McpServer { private readonly mondayApiClient; private readonly mondayApiToken; private readonly dynamicToolManager; /** * Creates a new instance of the Monday Agent Toolkit * @param config Configuration for the toolkit */ constructor(config: MondayAgentToolkitConfig); /** * Create and configure the Monday API client */ private createApiClient; /** * Register all tools with the MCP server */ private registerTools; /** * Register the management tool with toolkit reference */ private registerManagementTool; /** * Initialize both API and CLI tools */ private initializeTools; /** * Register a single tool with the MCP server */ private registerSingleTool; /** * Dynamically enable a tool */ enableTool(toolName: string): boolean; /** * Dynamically disable a tool */ disableTool(toolName: string): boolean; /** * Check if a tool is enabled */ isToolEnabled(toolName: string): boolean; /** * Get list of all available tools and their status */ getToolsStatus(): Record<string, boolean>; /** * Get list of all dynamic tool names */ getDynamicToolNames(): string[]; getServer(): McpServer; /** * Format the tool result into the expected MCP format */ private formatToolResult; /** * Handle tool execution errors */ private handleToolError; } interface Executable<Input, Output> { execute: (input?: Input) => Promise<Output>; } type ToolInputType<Input extends ZodRawShape | undefined> = Input extends ZodRawShape ? z.objectOutputType<Input, ZodTypeAny> : undefined; type ToolOutputType<T extends Record<string, unknown>> = { content: string; metadata?: T; }; declare enum ToolType { READ = "read", WRITE = "write", ALL_API = "all_api" } interface Tool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> extends Executable<ToolInputType<Input>, ToolOutputType<Output>> { name: string; type: ToolType; annotations: ToolAnnotations; /** Whether the tool is enabled by default. Defaults to true if not specified. */ enabledByDefault?: boolean; getDescription(): string; getInputSchema(): Input; } interface ToolkitManager { enableTool(toolName: string): boolean; disableTool(toolName: string): boolean; isToolEnabled(toolName: string): boolean; isToolEnabledByDefault(toolName: string): boolean; getToolsStatus(): Record<string, boolean>; getDetailedToolsStatus(): Record<string, { enabled: boolean; enabledByDefault: boolean; }>; resetToolToDefault(toolName: string): boolean; getDynamicToolNames(): string[]; } /** * Interface representing an MCP server tool registration handle */ interface MCPToolHandle { enable(): void; disable(): void; } /** * Interface for dynamic tool control */ interface DynamicTool { instance: Tool<any, any>; mcpTool: MCPToolHandle; enabled: boolean; enabledByDefault: boolean; } /** * Manages dynamic tool registration, enabling, and disabling */ declare class DynamicToolManager implements ToolkitManager { private readonly dynamicTools; /** * Register a tool for dynamic management */ registerTool(tool: Tool<any, any>, mcpTool: MCPToolHandle): void; /** * Enable a specific tool */ enableTool(toolName: string): boolean; /** * Disable a specific tool */ disableTool(toolName: string): boolean; /** * Check if a tool is currently enabled */ isToolEnabled(toolName: string): boolean; /** * Check if a tool is enabled by default */ isToolEnabledByDefault(toolName: string): boolean; /** * Get list of all available tools and their status */ getToolsStatus(): Record<string, boolean>; /** * Get list of all dynamic tool names */ getDynamicToolNames(): string[]; /** * Get list of all available tools with their current and default status */ getDetailedToolsStatus(): Record<string, { enabled: boolean; enabledByDefault: boolean; }>; /** * Reset a tool to its default enabled state */ resetToolToDefault(toolName: string): boolean; /** * Get all registered dynamic tools (for internal use) */ getAllDynamicTools(): Map<string, DynamicTool>; /** * Clear all registered tools (for cleanup) */ clear(): void; } export { DynamicToolManager, MondayAgentToolkit };