finops-mcp-server
Version:
MCP server for FinOps Center cost optimization integration
156 lines • 4.09 kB
TypeScript
/**
* MCP Protocol Type Definitions
*
* This file contains TypeScript type definitions for the Model Context Protocol (MCP)
* including message types, tool definitions, and protocol interfaces.
*/
export interface MCPMessage {
jsonrpc: "2.0";
id?: string | number;
method?: string;
params?: any;
result?: any;
error?: MCPError;
}
export interface MCPRequest extends MCPMessage {
method: string;
params?: any;
}
export interface MCPResponse extends MCPMessage {
id: string | number;
result?: any;
error?: MCPError;
}
export interface MCPNotification extends MCPMessage {
method: string;
params?: any;
}
export interface MCPError {
code: number;
message: string;
data?: any;
}
export interface MCPTool {
name: string;
description: string;
inputSchema: MCPToolInputSchema;
}
export interface MCPToolInputSchema {
type: "object";
properties: Record<string, MCPSchemaProperty>;
required?: string[];
additionalProperties?: boolean;
}
export interface MCPSchemaProperty {
type: string;
description?: string;
enum?: string[];
items?: MCPSchemaProperty;
properties?: Record<string, MCPSchemaProperty>;
required?: string[];
}
export interface MCPToolCall {
name: string;
arguments: Record<string, any>;
}
export interface MCPToolResult {
content: MCPContent[];
isError?: boolean;
}
export interface MCPContent {
type: "text" | "image" | "resource";
text?: string;
data?: string;
mimeType?: string;
uri?: string;
}
export interface MCPServerCapabilities {
tools?: {
listChanged?: boolean;
};
resources?: {
subscribe?: boolean;
listChanged?: boolean;
};
prompts?: {
listChanged?: boolean;
};
logging?: {};
}
export interface MCPClientCapabilities {
experimental?: Record<string, any>;
sampling?: {};
}
export interface MCPInitializeParams {
protocolVersion: string;
capabilities: MCPClientCapabilities;
clientInfo: {
name: string;
version: string;
};
}
export interface MCPInitializeResult {
protocolVersion: string;
capabilities: MCPServerCapabilities;
serverInfo: {
name: string;
version: string;
};
}
export interface MCPListToolsParams {
cursor?: string;
}
export interface MCPListToolsResult {
tools: MCPTool[];
nextCursor?: string;
}
export interface MCPCallToolParams {
name: string;
arguments?: Record<string, any>;
}
export interface MCPCallToolResult {
content: MCPContent[];
isError?: boolean;
}
export declare enum MCPErrorCode {
PARSE_ERROR = -32700,
INVALID_REQUEST = -32600,
METHOD_NOT_FOUND = -32601,
INVALID_PARAMS = -32602,
INTERNAL_ERROR = -32603,
TOOL_NOT_FOUND = -32000,
TOOL_EXECUTION_ERROR = -32001,
INVALID_TOOL_ARGUMENTS = -32002,
AUTHENTICATION_ERROR = -32003,
AUTHORIZATION_ERROR = -32004,
RATE_LIMIT_ERROR = -32005,
NETWORK_ERROR = -32006,
TIMEOUT_ERROR = -32007
}
export interface MCPHandler {
initialize(params: MCPInitializeParams): Promise<MCPInitializeResult>;
listTools(params?: MCPListToolsParams): Promise<MCPListToolsResult>;
callTool(params: MCPCallToolParams): Promise<MCPCallToolResult>;
shutdown(): Promise<void>;
}
export interface MCPServer {
start(): Promise<void>;
stop(): Promise<void>;
registerTool(tool: MCPTool, handler: (args: any) => Promise<MCPToolResult>): void;
unregisterTool(name: string): void;
sendNotification(method: string, params?: any): void;
}
export interface MCPTransport {
send(message: MCPMessage): Promise<void>;
receive(): Promise<MCPMessage>;
close(): Promise<void>;
onMessage(handler: (message: MCPMessage) => void): void;
onError(handler: (error: Error) => void): void;
onClose(handler: () => void): void;
}
export interface MCPStdioTransport extends MCPTransport {
stdin: NodeJS.ReadableStream;
stdout: NodeJS.WritableStream;
stderr: NodeJS.WritableStream;
}
//# sourceMappingURL=mcp.d.ts.map