From 111d70188f7723375f7452cdf8d13d998dc58a6b Mon Sep 17 00:00:00 2001 From: Jaryl Chng Date: Mon, 2 Mar 2026 15:12:05 +0800 Subject: [PATCH] Auto-select Milvus REST client for HTTP(S) addresses Route `milvusAddress` values matching `http://` or `https://` to the already implemented MilvusRestfulVectorDatabase. Defaults back to the gRPC-based MilvusVectorDatabase for all other addresses. This removes the need for a separate provider flag when connecting to Milvus (or equivalent REST implementation, https://gitlab.com/jarylc/cf-worker-milvus) via its RESTful API. --- packages/mcp/src/index.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/mcp/src/index.ts b/packages/mcp/src/index.ts index 8c4c3b28..168c4cba 100644 --- a/packages/mcp/src/index.ts +++ b/packages/mcp/src/index.ts @@ -21,8 +21,8 @@ import { ListToolsRequestSchema, CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js"; -import { Context } from "@zilliz/claude-context-core"; -import { MilvusVectorDatabase } from "@zilliz/claude-context-core"; +import { Context, VectorDatabase } from "@zilliz/claude-context-core"; +import { MilvusVectorDatabase, MilvusRestfulVectorDatabase } from "@zilliz/claude-context-core"; // Import our modular components import { createMcpConfig, logConfigurationSummary, showHelpMessage, ContextMcpConfig } from "./config.js"; @@ -60,10 +60,18 @@ class ContextMcpServer { logEmbeddingProviderInfo(config, embedding); // Initialize vector database - const vectorDatabase = new MilvusVectorDatabase({ - address: config.milvusAddress, - ...(config.milvusToken && { token: config.milvusToken }) - }); + let vectorDatabase: VectorDatabase; + if (config.milvusAddress?.match(/^https?:\/\//)) { + vectorDatabase = new MilvusRestfulVectorDatabase({ + address: config.milvusAddress, + ...(config.milvusToken && { token: config.milvusToken }) + }); + } else { + vectorDatabase = new MilvusVectorDatabase({ + address: config.milvusAddress, + ...(config.milvusToken && {token: config.milvusToken}) + }); + } // Initialize Claude Context this.context = new Context({ @@ -297,4 +305,4 @@ process.on('SIGTERM', () => { main().catch((error) => { console.error("Fatal error:", error); process.exit(1); -}); \ No newline at end of file +});