diff --git a/resources/openmcp-sdk-release/task-loop.d.ts b/resources/openmcp-sdk-release/task-loop.d.ts index e2de4bb..be03b38 100644 --- a/resources/openmcp-sdk-release/task-loop.d.ts +++ b/resources/openmcp-sdk-release/task-loop.d.ts @@ -50,8 +50,8 @@ export interface IDoConversationResult { * @description 对任务循环进行的抽象封装 */ export class TaskLoop { - private readonly streamingContent; - private readonly streamingToolCalls; + private streamingContent; + private streamingToolCalls; private readonly taskOptions; private bridge; private currentChatId; @@ -61,7 +61,7 @@ export class TaskLoop { private onEpoch; private completionUsage; private llmConfig; - constructor(streamingContent: Ref, streamingToolCalls: Ref, taskOptions?: TaskLoopOptions); + constructor(taskOptions?: TaskLoopOptions); private handleChunkDeltaContent; private handleChunkDeltaToolCalls; private handleChunkUsage; @@ -86,6 +86,7 @@ export class TaskLoop { */ setLlmConfig(config: any): void; getLlmConfig(): any; + bindStreaming(content: Ref, toolCalls: Ref): void; connectToService(): Promise; /** * @description 开启循环,异步更新 DOM diff --git a/service/src/hook/adapter.ts b/service/src/hook/adapter.ts index 59e513a..60b3828 100644 --- a/service/src/hook/adapter.ts +++ b/service/src/hook/adapter.ts @@ -123,5 +123,21 @@ export class TaskLoopAdapter { console.error('❌ 连接 mcp 服务器失败:' + res.msg); } } + + /** + * @description 获取 mcp 服务器的工具列表 + * @returns + */ + public async listTools() { + const tools = await client?.listTools(); + if (tools?.tools) { + return tools.tools.map((tool) => ({ + name: tool.name, + description: tool.description, + enabled: true + })); + } + return []; + } } diff --git a/service/src/mcp/connect.service.ts b/service/src/mcp/connect.service.ts index e2891cc..e8e4c54 100644 --- a/service/src/mcp/connect.service.ts +++ b/service/src/mcp/connect.service.ts @@ -37,6 +37,16 @@ export async function connectService( ): Promise { try { console.log('ready to connect', option); + + // 对于特殊表示的路径,进行特殊的支持 + if (option.args) { + option.args = option.args.map(arg => { + if (arg.startsWith('~/')) { + return arg.replace('~', process.env.HOME || ''); + } + return arg; + }); + } client = await connect(option); const connectResult = {