fixparser-plugin-mcp
Version:
FIXParser MCP Plugin (Local/Remote)
107 lines (106 loc) • 2.92 kB
TypeScript
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';