UNPKG

fixparser-plugin-mcp

Version:

FIXParser MCP Plugin (Local/Remote)

107 lines (106 loc) 2.92 kB
import type { IFIXParser, Message } from 'fixparser'; import { MCPBase } from './MCPBase.ts'; import type { PluginOptions } from './PluginOptions.ts'; import type { MarketDataEntry, VerifiedOrder } from './schemas/index.ts'; export type MCPTransport = 'stdio' | 'http'; export type MCPOptions = PluginOptions & { /** * Transport type: 'stdio' for local CLI tools, 'http' for remote HTTP server * @default 'stdio' */ transport?: MCPTransport; /** * Port number for HTTP transport (required when transport is 'http') */ port?: number; /** * Server name for MCP protocol * @default 'fixparser' */ serverName?: string; /** * Server version for MCP protocol * @default '1.0.0' */ serverVersion?: string; }; export declare class MCP extends MCPBase { /** * Transport type for this instance * @private */ private transportType; /** * Port number for HTTP transport * @private */ private port; /** * Server name for MCP protocol * @private */ private serverName; /** * Server version for MCP protocol * @private */ private serverVersion; /** * Node.js HTTP server instance (only for HTTP transport) * @private */ private httpServer; /** * MCP server instance (created differently based on transport type) * @private */ private mcpServer; /** * Stdio transport instance (only for stdio transport) * @private */ private stdioTransport; /** * Map to store verified orders before execution * @private */ protected verifiedOrders: Map<string, VerifiedOrder>; /** * Map to store pending requests and their callbacks * @private */ protected pendingRequests: Map<string, (data: Message) => void>; /** * Map to store market data prices for each symbol * @private */ protected marketDataPrices: Map<string, MarketDataEntry[]>; /** * Maximum number of price history entries to keep per symbol * @private */ protected readonly MAX_PRICE_HISTORY = 100000; constructor({ transport, port, serverName, serverVersion, logger, onReady }: MCPOptions); register(parser: IFIXParser): Promise<void>; /** * Initialize stdio transport for local CLI usage * @private */ private initializeStdioTransport; /** * Initialize HTTP transport for remote server usage * @private */ private initializeHttpTransport; /** * Setup tools using setRequestHandler (for stdio transport with JSON schemas) * @private */ private setupToolsViaRequestHandler; /** * Setup tools using registerTool (for HTTP transport with Zod schemas) * @private */ private setupToolsViaRegisterTool; } export { PluginOptions } from './PluginOptions.ts';