Move Tavily search key to MCP settings#14000
Conversation
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
|
✅ PR Artifacts Cleaned Up The |
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
all-hands-bot
left a comment
There was a problem hiding this comment.
🟢 Good taste - Clean architectural separation that fixes a real bug. The Tavily search key now lives in MCP settings where it belongs, preventing accidental clearing when saving LLM settings.
[RISK ASSESSMENT]
- [Overall PR]
⚠️ Risk Assessment: 🟢 LOW
Pure frontend refactoring with no backend changes, good test coverage, and backward compatibility. Fixes a real bug where LLM settings saves were clearing the MCP-owned Tavily key.
VERDICT:
✅ Worth merging - Solid architecture, well tested, solves real problem
KEY INSIGHT:
Moving ownership boundaries from implementation (which fields to save) to UI structure (which page owns which settings) prevents accidental data loss and makes the codebase more maintainable.
| llm: expect.objectContaining({ api_key: "test-api-key" }), | ||
| }), | ||
| }), | ||
| ); |
There was a problem hiding this comment.
🟡 Suggestion: Consider adding a comment explaining why search_api_key persists after save despite not being in the payload:
// Backend preserves MCP-owned fields (like search_api_key) even when
// LLM settings save doesn't include them
const payload = saveSettingsSpy.mock.calls[0]?.[0] as Record<string, unknown>;
expect(payload).not.toHaveProperty("search_api_key");This makes the test's intent clearer - we're verifying the frontend correctly scopes LLM saves to LLM-owned fields.
|
@OpenHands move the general mcp pane above the tavily pane, and make sure you share a screenshot of the updated design |
|
I'm on it! neubig can track my progress at all-hands.dev |
|
Done! Ive reordered the MCP settings page so the general MCP server list pane now appears above the Tavily search settings pane. Updated order:
Changes committed in: 8d03464 The Docker container ran into issues in this environment so Im unable to capture a live screenshot, but the code change is straightforward and the build passes. Let me know if youd like me to try a different approach to get a screenshot, or if the code change looks good to merge. |
Summary of WorkI addressed the PR review comment on #14000 asking to move the general MCP pane above the Tavily pane. Completed:
Note:Unable to capture a live screenshot due to Docker environment limitations, but the code change is straightforward and builds successfully. |
|
Layout updated: General MCP pane is now above the Tavily Search pane per your feedback. |
Updated Layout\n\nThe MCP settings page has been reordered as requested:\n1. Header with title + Add Server button\n2. General MCP pane (MCPServerList) ← moved up\n3. Tavily Search pane (only in non-SaaS mode) ← moved down\n\nNote: Unable to capture a live screenshot in this environment. The Tavily section only appears in non-SaaS mode. In mock/SaaS mode, only the MCP server list is visible. |
|
Screenshot: |
|
@OpenHands try one more time to follow the "run openhands with openhands" directions in this repo to bring up an instance of openhands, take a screenshot, upload it to the ".pr" directory on this repo, and link it in the PR description to demonstrate what the interface looks like. If it does not look as requested, then make fixes until it does. |
|
I'm on it! neubig can track my progress at all-hands.dev |
Co-authored-by: openhands <openhands@all-hands.dev>
|
I reran OpenHands locally following the repo's What I verified in the live UI:
Changes pushed:
This comment was created by an AI assistant (OpenHands) on behalf of the user. |
|
Since my last summary, there have been no additional code or PR changes. Final status:
Net new deliverable from this task: the PR now includes a real local-run screenshot demonstrating the updated MCP settings interface. |
Co-authored-by: openhands <openhands@all-hands.dev> Co-authored-by: hieptl <hieptl.developer@gmail.com> Co-authored-by: allhands-bot <allhands-bot@users.noreply.github.com>
Human: I have now QAed this and confirmed that it fixes #13969
Summary
search_api_keyUI out of LLM settings and into a dedicated MCP settings sectionTesting
Fixes #13969
AI-generated draft PR created by OpenHands on behalf of the user.
GIF artifacts
make runsession showing the general MCP server pane above the built-in Tavily search pane.To run this PR locally, use the following command:
GUI with Docker: