From 7d04a7227de1f731de6d6d063ff0ed0e98f61ec7 Mon Sep 17 00:00:00 2001 From: dimitrievgs Date: Sun, 14 Jun 2026 23:16:30 +0300 Subject: [PATCH] Add enable-toggles for mcp servers and particular tools --- app/mcp_tools.py | 10 +++++++++- app/react_agent.py | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/mcp_tools.py b/app/mcp_tools.py index 3b1a950..77f063d 100644 --- a/app/mcp_tools.py +++ b/app/mcp_tools.py @@ -166,11 +166,19 @@ def fetch_mcp_tools(server_config, debug_callback=None): # Получаем кастомные описания из конфига fetched_tools_ui = server_config.get("fetchedTools", []) custom_descriptions = {t.get("name"): t.get("customDescription") for t in fetched_tools_ui} + enabled_tools = {t.get("name"): t.get("isEnabled", True) for t in fetched_tools_ui} for t in raw_tools: + # Если инструмент отключен в настройках плагина — пропускаем + if not enabled_tools.get(t.name, True): + continue + # Если есть кастомное описание и оно не пустое - используем его c_desc = custom_descriptions.get(t.name) - final_description = c_desc if c_desc and c_desc.strip() else t.description + if c_desc and c_desc.strip(): + final_description = f"{t.description}\n\nДОПОЛНИТЕЛЬНЫЕ ИНСТРУКЦИИ:\n{c_desc.strip()}" + else: + final_description = t.description wrapped_tools.append(create_mcp_tool(server_config, t.name, final_description, t.inputSchema, full_env, args, debug_callback)) diff --git a/app/react_agent.py b/app/react_agent.py index 8ee501c..457815f 100644 --- a/app/react_agent.py +++ b/app/react_agent.py @@ -253,6 +253,10 @@ def get_dynamic_tools(obsidian_settings: dict, debug_callback=None): # Инициализация внутренних MCP серверов mcp_servers = obsidian_settings.get("mcpServers", []) for mcp_server in mcp_servers: + # Пропускаем отключенные серверы + if not mcp_server.get("isEnabled", True): + continue + mcp_tools = fetch_mcp_tools(mcp_server, debug_callback) tools.extend(mcp_tools)