mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-12 17:09:37 +08:00
- Remove HubServerDependencies interface and setHubServerDependencies from factory - Add initHubBridge() to mcp-bridge for direct initialization - Make HubServer constructor parameterless (uses pre-initialized bridge) - MCPService now calls initHubBridge() directly instead of factory setter - Add integration tests for full search → exec flow
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
import { loggerService } from '@logger'
|
|
import type { Server } from '@modelcontextprotocol/sdk/server/index.js'
|
|
import type { BuiltinMCPServerName } from '@types'
|
|
import { BuiltinMCPServerNames } from '@types'
|
|
|
|
import BraveSearchServer from './brave-search'
|
|
import BrowserServer from './browser'
|
|
import DiDiMcpServer from './didi-mcp'
|
|
import DifyKnowledgeServer from './dify-knowledge'
|
|
import FetchServer from './fetch'
|
|
import FileSystemServer from './filesystem'
|
|
import HubServer from './hub'
|
|
import MemoryServer from './memory'
|
|
import PythonServer from './python'
|
|
import ThinkingServer from './sequentialthinking'
|
|
|
|
const logger = loggerService.withContext('MCPFactory')
|
|
|
|
export function createInMemoryMCPServer(
|
|
name: BuiltinMCPServerName,
|
|
args: string[] = [],
|
|
envs: Record<string, string> = {}
|
|
): Server {
|
|
logger.debug(`[MCP] Creating in-memory MCP server: ${name} with args: ${args} and envs: ${JSON.stringify(envs)}`)
|
|
switch (name) {
|
|
case BuiltinMCPServerNames.memory: {
|
|
const envPath = envs.MEMORY_FILE_PATH
|
|
return new MemoryServer(envPath).server
|
|
}
|
|
case BuiltinMCPServerNames.sequentialThinking: {
|
|
return new ThinkingServer().server
|
|
}
|
|
case BuiltinMCPServerNames.braveSearch: {
|
|
return new BraveSearchServer(envs.BRAVE_API_KEY).server
|
|
}
|
|
case BuiltinMCPServerNames.fetch: {
|
|
return new FetchServer().server
|
|
}
|
|
case BuiltinMCPServerNames.filesystem: {
|
|
return new FileSystemServer(envs.WORKSPACE_ROOT).server
|
|
}
|
|
case BuiltinMCPServerNames.difyKnowledge: {
|
|
const difyKey = envs.DIFY_KEY
|
|
return new DifyKnowledgeServer(difyKey, args).server
|
|
}
|
|
case BuiltinMCPServerNames.python: {
|
|
return new PythonServer().server
|
|
}
|
|
case BuiltinMCPServerNames.didiMCP: {
|
|
const apiKey = envs.DIDI_API_KEY
|
|
return new DiDiMcpServer(apiKey).server
|
|
}
|
|
case BuiltinMCPServerNames.browser: {
|
|
return new BrowserServer().server
|
|
}
|
|
case BuiltinMCPServerNames.hub: {
|
|
return new HubServer().server
|
|
}
|
|
default:
|
|
throw new Error(`Unknown in-memory MCP server: ${name}`)
|
|
}
|
|
}
|