From 559efb0644ae9627160c495e03f3f607ca84635e Mon Sep 17 00:00:00 2001 From: Kent Wang Date: Thu, 25 Sep 2025 14:11:28 +0800 Subject: [PATCH] support filter (#9169) --- .../insomnia/src/ui/components/mcp/mcp-pane.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/insomnia/src/ui/components/mcp/mcp-pane.tsx b/packages/insomnia/src/ui/components/mcp/mcp-pane.tsx index f9398c6f2c..6cf617bc1f 100644 --- a/packages/insomnia/src/ui/components/mcp/mcp-pane.tsx +++ b/packages/insomnia/src/ui/components/mcp/mcp-pane.tsx @@ -27,6 +27,7 @@ import { METHOD_LIST_RESOURCES, METHOD_LIST_TOOLS, } from '~/common/mcp-utils'; +import { fuzzyMatchAll } from '~/common/misc'; import type { McpEvent, McpMessageEvent } from '~/main/network/mcp'; import type { McpRequest, McpServerPrimitiveTypes } from '~/models/mcp-request'; import { useRootLoaderData } from '~/root'; @@ -83,7 +84,18 @@ export const McpPane = () => { const collection: (PrimitiveTypeItem | PrimitiveSubItem)[] = []; if (mcpServerData) { const { primitives } = mcpServerData; - const { tools, resources, resourceTemplates, prompts } = primitives; + const tools = primitives.tools.filter(tool => + filter ? Boolean(fuzzyMatchAll(filter, [tool.name, tool.description || ''])?.indexes) : true, + ); + const resources = primitives.resources.filter(res => + filter ? Boolean(fuzzyMatchAll(filter, [res.name, res.description || '', res.uri])?.indexes) : true, + ); + const resourceTemplates = primitives.resourceTemplates.filter(rt => + filter ? Boolean(fuzzyMatchAll(filter, [rt.name, rt.description || '', rt.uriTemplate])?.indexes) : true, + ); + const prompts = primitives.prompts.filter(prompt => + filter ? Boolean(fuzzyMatchAll(filter, [prompt.name, prompt.description || ''])?.indexes) : true, + ); if (tools.length > 0) { collection.push({ type: 'tools', @@ -132,6 +144,7 @@ export const McpPane = () => { return collection.filter(item => !item.hide); }, [ collapsedPrimitives, + filter, mcpServerData, primitiveNextCursor.prompts, primitiveNextCursor.resources,