v3.18.0 - External MCP Tools, Migration Wizard & Secure API Keys #27
siddsachar
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
v3.18.0 — External MCP Tools, Migration Wizard & Secure API Keys
Thoth now has a full Model Context Protocol client for connecting external MCP servers as native dynamic tools without letting a broken server take down the app. This release also adds a guarded Hermes/OpenClaw migration wizard in Preferences, moves normal core and plugin API-key saves into the OS credential store, and fixes a cloud-model default regression where a saved GPT/Claude/Gemini/Grok/OpenRouter model could be replaced by a local Ollama fallback when the cloud-model cache was empty.
The MCP runtime supports stdio, Streamable HTTP, and SSE transports; handles tool, resource, and prompt surfaces; classifies destructive tools; routes risky actions through Thoth's existing interrupt approvals; and keeps all external server config isolated in
mcp_servers.json. Marketplace search can pull from curated starters plus MCP directories, while dependency handling covers common user-space runtimes such as Node.js, uv, and Playwright Chromium, leaving heavier requirements like Docker as clear manual setup tasks.🔌 MCP Client & Dynamic Tools
mcp_client/subsystem — persistent config, runtime sessions, result normalization, safety classification, marketplace discovery, dependency checks, and structured diagnostics live under a dedicated package instead of being mixed into built-in tool codetools/mcp_tool.pyregisters External MCP Tools as the parent toggle; actual MCP server tools are injected dynamically throughas_langchain_tools()after discoverymcp_<server>_<tool>so external tool names cannot collide with native tools or each other🛡️ Safety, Permissions & Fault Isolation
🧭 Settings UI, Import & Marketplace Search
🔄 Hermes & OpenClaw Migration Wizard
.hermes) and OpenClaw (.openclaw, legacy.clawdbot/.moltbot) with provider-mismatch guards so the wrong source type does not produce a misleading partial planplan.json,result.json,backup_manifest.json, andsummary.md🔐 API Key Secure Storage
keyringinstead of normal plaintext JSON storage~/.thoth/api_keys.jsonstores saved-state, keyring service, timestamps, and masked fingerprints, not raw API key valuesplugin_secrets.jsonstateapi_keys.jsonfiles are imported into the keyring on load; if the OS keyring is unavailable, Thoth keeps legacy keys readable with a warning instead of crashing startup🧠 Cloud Model Defaults
refresh_cloud_models()no longer rewrites a saved cloud default to a local Ollama fallback simply because keys, network access, or provider discovery are temporarily unavailabletest_suite.pynow checks provider inference, cache-empty cloud detection, and preservation of saved cloud defaults such asgpt-5.5⚙️ Runtime Requirements
npx,uvx, anddocker, plus Playwright browser requirements for Playwright MCP~/.thoth/runtimes/without packaging those runtimes inside Thoth🧠 Agent, Status & Guide Integration
MCP: microsoft_docs_search (microsoft-learn-mcp)in tool-call UIthoth_update_settingcan enable/disable the global MCP client through the normal tool-toggle path, keeping the parent registry tool and runtime state synchronizedtool_guides/mcp_guide/SKILL.mddocuments when to use external MCP tools, how to treat MCP output, how to handle MCP errors, and how global disable behaves🧪 Tests & Release Checks
test_mcp_client.pycovers bad config fallback, secret masking, destructive detection, marketplace fallback/filtering, conflict policy, runtime requirement inference, managed runtime env injection, settings rows, stdio discovery/call, tool enable/approval toggles, global MCP disable, bad server failure, display names, background safety, and MCP browser loop controlstest_mcp_real_world_e2e.pyplusscripts/mcp_real_world_e2e.pyvalidate real public MCP servers outside normal CI, including Microsoft Learn and Context7test_suite.pyincludes MCP modules in import/consistency checks and validates the focused MCP test files are part of the tracked suitetest_migration_core.py,test_migration_detection.py,test_migration_planner.py,test_migration_apply.py, andtest_migration_wizard_ui.pycover source detection, wrong-provider guards, dry-run planning, conflict behavior, backup/report generation, redaction, daily memory import, UI helper behavior, and Preferences placementtest_api_key_storage.pycovers keyring-backed writes, metadata-only files, legacy plaintext migration, keyring-unavailable fallback, session-only new saves, and delete behavior📁 Files Changed
mcp_client/tools/mcp_tool.pyui/mcp_settings.pytool_guides/mcp_guide/SKILL.mdtest_mcp_client.pytest_mcp_real_world_e2e.pyscripts/mcp_real_world_e2e.pymigration/ui/migration_wizard.pytest_migration_*.pysecret_store.pytest_api_key_storage.pyagent.pyapp.pyapi_keys.pyplugins/state.pyplugins/ui_plugin_dialog.pymodels.pyui/settings.pyMigrationdeep-link routing to Preferences; key inputs now show masked saved-state instead of prefilled secretstools/thoth_status_tool.pymcptool toggle with the global MCP client switchtool_guides/thoth_status_guide/SKILL.mdtest_suite.pyrequirements.txtkeyringinstaller/thoth_setup.issThis discussion was created from the release v3.18.0 - External MCP Tools, Migration Wizard & Secure API Keys.
Beta Was this translation helpful? Give feedback.
All reactions