prepare for stream http

This commit is contained in:
锦恢 2025-05-16 04:14:45 +08:00
parent d63b0abaf0
commit 8a8b17cb3f
2 changed files with 16 additions and 3 deletions

View File

@ -1,5 +1,6 @@
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { Implementation } from "@modelcontextprotocol/sdk/types";
export interface GetPromptOption {
@ -17,9 +18,9 @@ export interface CallToolOption {
}
// 定义连接类型
export type ConnectionType = 'STDIO' | 'SSE';
export type ConnectionType = 'STDIO' | 'SSE' | 'STREAMABLE_HTTP';
export type McpTransport = StdioClientTransport | SSEClientTransport;
export type McpTransport = StdioClientTransport | SSEClientTransport | StreamableHTTPClientTransport;
export type IServerVersion = Implementation | undefined;
// 定义命令行参数接口

View File

@ -2,6 +2,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import type { McpOptions, McpTransport, IServerVersion, ToolCallResponse, ToolCallContent } from './client.dto';
import { PostMessageble } from "../hook/adapter";
import { createOcrWorker, saveBase64ImageData } from "./ocr.service";
@ -52,10 +53,21 @@ export class McpClient {
throw new Error('URL is required for SSE connection');
}
this.transport = new SSEClientTransport(
new URL(this.options.url)
new URL(this.options.url),
{
// authProvider:
}
);
break;
case 'STREAMABLE_HTTP':
if (!this.options.url) {
throw new Error('URL is required for STREAMABLE_HTTP connection');
}
this.transport = new StreamableHTTPClientTransport(
new URL(this.options.url)
);
default:
throw new Error(`Unsupported connection type: ${this.options.connectionType}`);
}