diff --git a/CHANGELOG.md b/CHANGELOG.md index 6312fea..1d3d061 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## [main] 0.1.1 +- 修复 SSH 连接 Ubuntu 的情况下的部分 bug +- 修复 python 项目点击 openmcp 进行连接时,初始化参数错误的问题 +- 取消 service 底层的 mcp 连接复用技术,防止无法刷新 +- 修复连接后,可能无法在欢迎界面选择调试选项的 bug + ## [main] 0.1.0 - 新特性:支持同时连入多个 mcp server - 新特性:更新协议内容,支持 streamable http 协议,未来将逐步取代 SSE 的连接方式 diff --git a/README.md b/README.md index 4169476..6ef2348 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ 加入 OpenMCP Discord频道 + 📄OpenMCP 文档仓库 + @@ -17,6 +19,7 @@ 一款用于 MCP 服务端调试的一体化 vscode/trae/cursor 插件。 + diff --git a/package.json b/package.json index 7f48db8..5c2aa84 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "openmcp", "displayName": "OpenMCP", "description": "An all in one MCP Client/TestTool", - "version": "0.1.0", + "version": "0.1.1", "publisher": "kirigaya", "author": { "name": "kirigaya", diff --git a/renderer/src/views/about/index.vue b/renderer/src/views/about/index.vue index 259a6d1..7882624 100644 --- a/renderer/src/views/about/index.vue +++ b/renderer/src/views/about/index.vue @@ -6,7 +6,7 @@

- OpenMCP Client 0.1.0 由 OpenMCP@锦恢 开发 + OpenMCP Client 0.1.1 由 OpenMCP@锦恢 开发

diff --git a/renderer/src/views/connect/core.ts b/renderer/src/views/connect/core.ts index 06df6fc..803c1c9 100644 --- a/renderer/src/views/connect/core.ts +++ b/renderer/src/views/connect/core.ts @@ -471,7 +471,8 @@ class McpClientAdapter { for (const item of launchSignature) { // 创建一个新的客户端 - const client = reactive(new McpClient()); + // const client = reactive(new McpClient()); + const client = new McpClient(); // 同步连接参数 await client.acquireConnectionSignature(item); @@ -562,6 +563,10 @@ class McpClientAdapter { return msg; } + public get connected() { + return this.clients.length > 0 && this.clients[0].connectionResult.success; + } + public async loadPanels() { const masterNode = this.clients[0]; await loadPanels(masterNode); diff --git a/renderer/src/views/connect/index.vue b/renderer/src/views/connect/index.vue index 7260ee3..7fe319e 100644 --- a/renderer/src/views/connect/index.vue +++ b/renderer/src/views/connect/index.vue @@ -62,11 +62,11 @@ function selectServer(index: number) { } function addServer() { - const client = reactive(new McpClient()); + // const client = reactive(new McpClient()); + const client = new McpClient(); mcpClientAdapter.clients.push(client); mcpClientAdapter.currentClientIndex = mcpClientAdapter.clients.length - 1; - - client.handleEnvSwitch(true); + mcpClientAdapter.clients.at(-1)!.handleEnvSwitch(true); } diff --git a/renderer/src/views/debug/welcome.vue b/renderer/src/views/debug/welcome.vue index 6af7184..d0c9111 100644 --- a/renderer/src/views/debug/welcome.vue +++ b/renderer/src/views/debug/welcome.vue @@ -7,7 +7,7 @@ , callToolOption?: any }) { const { callToolOption, ...methodArgs } = options; + console.log('methodArgs', methodArgs); console.log('callToolOption', callToolOption); - return await this.client.callTool(methodArgs, undefined, callToolOption); + const res = await this.client.callTool(methodArgs, undefined, callToolOption); + console.log('callTool res', res); + + return res; } } diff --git a/service/src/mcp/connect.service.ts b/service/src/mcp/connect.service.ts index ec7bf7c..5f7e50a 100644 --- a/service/src/mcp/connect.service.ts +++ b/service/src/mcp/connect.service.ts @@ -249,12 +249,15 @@ export async function connectService( const uuid = await deterministicUUID(JSON.stringify(option)); const reuseConntion = clientMap.has(uuid); - if (!clientMap.has(uuid)) { - const client = await connect(option); - clientMap.set(uuid, client); - } + + // if (!clientMap.has(uuid)) { + // const client = await connect(option); + // clientMap.set(uuid, client); + // } + // const client = clientMap.get(uuid)!; - const client = clientMap.get(uuid)!; + const client = await connect(option); + clientMap.set(uuid, client); const versionInfo = client.getServerVersion(); diff --git a/service/tabs.my-browser.json b/service/tabs.my-browser.json index f53d63c..4be6e3b 100644 --- a/service/tabs.my-browser.json +++ b/service/tabs.my-browser.json @@ -1,6 +1,6 @@ { "clientId": "83313e18-3e18-513e1883c06-813e1883c060a6b-60a6b641", - "currentIndex": 1, + "currentIndex": 0, "tabs": [ { "name": "交互测试", diff --git a/src/sidebar/installed.controller.ts b/src/sidebar/installed.controller.ts index ea1ee95..72c70c2 100644 --- a/src/sidebar/installed.controller.ts +++ b/src/sidebar/installed.controller.ts @@ -22,8 +22,8 @@ export class McpInstalledConnectProvider implements vscode.TreeDataProvider { // 连接的名字 - item = Array.isArray(item)? item[0] : item; - const itemName = `${item.name} (${item.type || item.connectionType})` + const nItem = Array.isArray(item)? item[0] : item; + const itemName = `${nItem.name} (${nItem.type || nItem.connectionType})` return new ConnectionViewItem(itemName, vscode.TreeItemCollapsibleState.None, item, 'server'); }) diff --git a/src/sidebar/workspace.controller.ts b/src/sidebar/workspace.controller.ts index 3545919..8d8a802 100644 --- a/src/sidebar/workspace.controller.ts +++ b/src/sidebar/workspace.controller.ts @@ -22,8 +22,8 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider { // 连接的名字 - item = Array.isArray(item) ? item[0] : item; - const itemName = `${item.name} (${item.type || item.connectionType})` + const nItem = Array.isArray(item) ? item[0] : item; + const itemName = `${nItem.name} (${nItem.type || nItem.connectionType})` return new ConnectionViewItem(itemName, vscode.TreeItemCollapsibleState.None, item, 'server'); }) diff --git a/src/sidebar/workspace.service.ts b/src/sidebar/workspace.service.ts index 0981d2a..4f521ef 100644 --- a/src/sidebar/workspace.service.ts +++ b/src/sidebar/workspace.service.ts @@ -5,6 +5,9 @@ export async function deleteUserConnection(item: McpOptions[] | McpOptions) { // 弹出确认对话框 const masterNode = Array.isArray(item) ? item[0] : item; const name = masterNode.name; + + console.log('enter delete'); + const confirm = await vscode.window.showWarningMessage( `确定要删除连接 "${name}" 吗?`, { modal: true }, @@ -18,6 +21,10 @@ export async function deleteUserConnection(item: McpOptions[] | McpOptions) { const workspaceConnectionConfig = getWorkspaceConnectionConfig(); // 从配置中移除该连接项 + console.log(item); + console.log(workspaceConnectionConfig.items); + // TODO: 改成基于 path 进行搜索 + const index = workspaceConnectionConfig.items.indexOf(item); if (index !== -1) { workspaceConnectionConfig.items.splice(index, 1); diff --git a/src/webview/webview.controller.ts b/src/webview/webview.controller.ts index 407b47e..71f0d24 100644 --- a/src/webview/webview.controller.ts +++ b/src/webview/webview.controller.ts @@ -1,7 +1,8 @@ import * as vscode from 'vscode'; import { RegisterCommand } from "../common"; -import { getDefaultLanunchSignature, getLaunchCWD, revealOpenMcpWebviewPanel } from './webview.service'; +import { getDefaultLanunchSignature, getWorkspacePath, revealOpenMcpWebviewPanel } from './webview.service'; import { getWorkspaceConnectionConfigItemByPath } from '../global'; +import path from 'path'; export class WebviewController { @RegisterCommand('openmcp.showOpenMCP') @@ -10,8 +11,7 @@ export class WebviewController { if (!connectionItem) { // 项目不存在连接信息 - const cwd = getLaunchCWD(context, uri); - + const cwd = path.dirname(uri.fsPath); const signature = getDefaultLanunchSignature(uri.fsPath, cwd); if (!signature) { diff --git a/src/webview/webview.service.ts b/src/webview/webview.service.ts index 6d7c529..6ceebce 100644 --- a/src/webview/webview.service.ts +++ b/src/webview/webview.service.ts @@ -24,7 +24,7 @@ export function getWebviewContent(context: vscode.ExtensionContext, panel: vscod return html; } -export function getLaunchCWD(context: vscode.ExtensionContext, uri: vscode.Uri) { +export function getWorkspacePath(context: vscode.ExtensionContext, uri: vscode.Uri) { // TODO: 启动上下文? // 获取当前打开的项目的路径 const workspaceFolder = vscode.workspace.getWorkspaceFolder(uri);