From 6f1a1cd7bb33dd757b25c3e98008b4a90a416b03 Mon Sep 17 00:00:00 2001 From: "huiyu.zjt" Date: Mon, 2 Feb 2026 16:58:27 +0800 Subject: [PATCH 1/3] fix: Deepwiki SSE is being deprecated. --- __tests__/utils/deepwiki.test.ts | 26 ++++++++++++++++++++++++++ src/utils/deepwiki.ts | 12 ++++++------ 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 __tests__/utils/deepwiki.test.ts diff --git a/__tests__/utils/deepwiki.test.ts b/__tests__/utils/deepwiki.test.ts new file mode 100644 index 0000000..422a47b --- /dev/null +++ b/__tests__/utils/deepwiki.test.ts @@ -0,0 +1,26 @@ +import { describe, it, expect } from 'vitest'; +import { queryDeepWiki } from '../../src/utils/deepwiki'; + +describe('DeepWiki Integration Test', () => { + it('should get real response from DeepWiki for G2 question', async () => { + // Set timeout to 120s as this is a real network request + + try { + const result = await queryDeepWiki({ + repoName: 'antvis/G2', + question: '如何调整折线图两端的间隔', + }); + + console.log('DeepWiki Answer:', result); + + expect(result).toBeDefined(); + expect(typeof result).toBe('string'); + expect(result.length).toBeGreaterThan(10); + // Basic check to see if it returned something relevant or at least not an error string + expect(result).not.toMatch(/^Error/); + } catch (error) { + console.error('DeepWiki Query Failed:', error); + throw error; + } + }, 120000); +}); diff --git a/src/utils/deepwiki.ts b/src/utils/deepwiki.ts index 2682715..4d3ffb8 100644 --- a/src/utils/deepwiki.ts +++ b/src/utils/deepwiki.ts @@ -1,5 +1,5 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js'; -import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'; +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; import EventSource from 'eventsource'; import { logger } from './logger'; import { AntVLibrary } from '../types'; @@ -18,7 +18,7 @@ if (!global.EventSource) { // 2. 单例状态管理 // --------------------------------------------------------- let _client: Client | null = null; -let _transport: SSEClientTransport | null = null; +let _transport: StreamableHTTPClientTransport | null = null; let _connectingPromise: Promise | null = null; /** @@ -27,7 +27,7 @@ let _connectingPromise: Promise | null = null; */ async function getMcpClient(): Promise { // 如果客户端已存在且传输层看似正常,直接返回 - // 注意:SSEClientTransport 目前没有直观的 isConnected 属性, + // 注意:StreamableHTTPClientTransport 目前没有直观的 isConnected 属性, // 这里的检查主要是防止对象为空。更严谨的做法是监听 transport 的 close 事件来重置 _client。 if (_client && _transport) { return _client; @@ -43,8 +43,8 @@ async function getMcpClient(): Promise { try { logger.info('DeepWiki MCP: 初始化连接...'); - const transport = new SSEClientTransport( - new URL('https://mcp.deepwiki.com/sse'), + const transport = new StreamableHTTPClientTransport( + new URL('https://mcp.deepwiki.com/mcp'), ); const client = new Client( @@ -185,7 +185,7 @@ export async function closeDeepWikiConnection() { if (_transport) { logger.info('DeepWiki MCP: 关闭连接...'); // SDK 目前可能没有直接暴露 close 方法,通常关闭 transport 即可 - // SSEClientTransport 内部并没有显式的 close 方法暴露出来, + // StreamableHTTPClientTransport 内部并没有显式的 close 方法暴露出来, // 但我们可以将引用置空,让 GC 回收,或者依赖进程退出 // 如果 SSEClientTransport 实现了 close,则调用: // await _transport.close(); From 8342fba699c91e0809ab68245ca3ff23f1ad64a7 Mon Sep 17 00:00:00 2001 From: "huiyu.zjt" Date: Mon, 2 Feb 2026 17:13:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0072eb9..b690cac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@antv/mcp-server-antv", - "version": "0.1.6", + "version": "0.1.7", "description": "MCP Server for AntV visualization libraries development, which provides documentation context and examples for visualization developers.", "main": "build/index.js", "scripts": { @@ -58,4 +58,4 @@ "name": "AntV", "url": "https://antv.antgroup.com/" } -} +} \ No newline at end of file From 044def0d24bb47c1760f28768da3aace96c1c2dc Mon Sep 17 00:00:00 2001 From: "huiyu.zjt" Date: Mon, 2 Feb 2026 17:20:09 +0800 Subject: [PATCH 3/3] chore: prettier fix --- __tests__/utils/deepwiki.test.ts | 36 ++++++++++++++++---------------- package.json | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/__tests__/utils/deepwiki.test.ts b/__tests__/utils/deepwiki.test.ts index 422a47b..d4d7c4c 100644 --- a/__tests__/utils/deepwiki.test.ts +++ b/__tests__/utils/deepwiki.test.ts @@ -2,25 +2,25 @@ import { describe, it, expect } from 'vitest'; import { queryDeepWiki } from '../../src/utils/deepwiki'; describe('DeepWiki Integration Test', () => { - it('should get real response from DeepWiki for G2 question', async () => { - // Set timeout to 120s as this is a real network request + it('should get real response from DeepWiki for G2 question', async () => { + // Set timeout to 120s as this is a real network request - try { - const result = await queryDeepWiki({ - repoName: 'antvis/G2', - question: '如何调整折线图两端的间隔', - }); + try { + const result = await queryDeepWiki({ + repoName: 'antvis/G2', + question: '如何调整折线图两端的间隔', + }); - console.log('DeepWiki Answer:', result); + console.log('DeepWiki Answer:', result); - expect(result).toBeDefined(); - expect(typeof result).toBe('string'); - expect(result.length).toBeGreaterThan(10); - // Basic check to see if it returned something relevant or at least not an error string - expect(result).not.toMatch(/^Error/); - } catch (error) { - console.error('DeepWiki Query Failed:', error); - throw error; - } - }, 120000); + expect(result).toBeDefined(); + expect(typeof result).toBe('string'); + expect(result.length).toBeGreaterThan(10); + // Basic check to see if it returned something relevant or at least not an error string + expect(result).not.toMatch(/^Error/); + } catch (error) { + console.error('DeepWiki Query Failed:', error); + throw error; + } + }, 120000); }); diff --git a/package.json b/package.json index b690cac..0625c45 100644 --- a/package.json +++ b/package.json @@ -58,4 +58,4 @@ "name": "AntV", "url": "https://antv.antgroup.com/" } -} \ No newline at end of file +}