From 486563062c536f460ccc5bb27139fcfb016cccb4 Mon Sep 17 00:00:00 2001 From: LiuVaayne <10231735+vaayne@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:45:35 +0800 Subject: [PATCH] feat: update npm scope default value and enhance error handling in MCP tool calls (#3440) --- .../pages/settings/MCPSettings/NpxSearch.tsx | 2 +- src/renderer/src/providers/OpenAIProvider.ts | 2 +- src/renderer/src/utils/mcp-tools.ts | 27 ++++++++++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx index 3a9c4a4d..752a90ce 100644 --- a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx @@ -24,7 +24,7 @@ const NpxSearch: FC = () => { const { Paragraph, Text } = Typography // Add new state variables for npm scope search - const [npmScope, setNpmScope] = useState('') + const [npmScope, setNpmScope] = useState('@modelcontextprotocol') const [searchLoading, setSearchLoading] = useState(false) const [searchResults, setSearchResults] = useState([]) diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 915a304b..3b134419 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -33,7 +33,7 @@ import { openAIToolsToMcpTool, upsertMCPToolResponse } from '@renderer/utils/mcp-tools' -import { isString, takeRight } from 'lodash' +import { takeRight } from 'lodash' import OpenAI, { AzureOpenAI } from 'openai' import { ChatCompletionAssistantMessageParam, diff --git a/src/renderer/src/utils/mcp-tools.ts b/src/renderer/src/utils/mcp-tools.ts index 810bef0a..c2302df1 100644 --- a/src/renderer/src/utils/mcp-tools.ts +++ b/src/renderer/src/utils/mcp-tools.ts @@ -77,13 +77,26 @@ export function openAIToolsToMcpTool( export async function callMCPTool(tool: MCPTool): Promise { console.log(`[MCP] Calling Tool: ${tool.serverName} ${tool.name}`, tool) - const resp = await window.api.mcp.callTool({ - client: tool.serverName, - name: tool.name, - args: tool.inputSchema - }) - console.log(`[MCP] Tool called: ${tool.serverName} ${tool.name}`, resp) - return resp + try { + const resp = await window.api.mcp.callTool({ + client: tool.serverName, + name: tool.name, + args: tool.inputSchema + }) + console.log(`[MCP] Tool called: ${tool.serverName} ${tool.name}`, resp) + return resp + } catch (e) { + console.error(`[MCP] Error calling Tool: ${tool.serverName} ${tool.name}`, e) + return Promise.resolve({ + isError: true, + content: [ + { + type: 'text', + text: `Error calling tool ${tool.name}: ${JSON.stringify(e)}` + } + ] + }) + } } export function mcpToolsToAnthropicTools(mcpTools: MCPTool[]): Array {