feat(mcp): add Serply search server - #2299
Conversation
Add the Serply web search MCP as a disabled-by-default built-in HTTP server with an X-Api-Key placeholder, so users can paste a key and turn it on instead of hand-writing a server config. The endpoint exposes Google, Bing, News, Scholar, Jobs, Maps, Video and Amazon Shopping search plus page scraping. Follows the same shape as the mcd-mcp built-in entry.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe default MCP server configuration now includes the Serply search HTTP server. Tests verify its endpoint, placeholder API key header, HTTP type, and disabled state for existing users without configured MCP servers. ChangesSerply MCP server
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Feature Suggested reviewers: Merge Risk: ⚪ Minimal · up to The new server does not activate or make requests for existing users unless they explicitly enable it. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
zerob13
left a comment
There was a problem hiding this comment.
Review result
No blocking issues found. This adds one disabled-by-default HTTP MCP entry and a focused migration regression test. It follows the existing MCP settings structure and does not change current server behavior.
What I checked
- The Serply server is not added to the default-enabled list, so it will not connect automatically.
- The API key is an explicit placeholder only; no real credential is introduced.
- Existing users receive the configuration only when it is missing; users who removed it remain protected by the existing built-in-server removal tracking.
- The test covers the important upgrade behavior: URL, header placeholder, type, and disabled state.
Verification
git diff --check origin/dev...HEADpassed.- The focused Vitest command could not run in the isolated review worktree because dependencies are not installed there (
vitestunavailable).
Reference: reviewed head 15f171527ef9c217912c0f3c530f7424b66ff25c against origin/dev.
Disclosure: I work with Serply (https://serply.io), the provider added by this PR.
Summary
Adds
serply-searchtoDEFAULT_MCP_SERVERSas a disabled-by-default built-in HTTPMCP server, so users can paste an API key and switch it on instead of hand-writing a
server config.
Serply is a hosted SERP API. One endpoint exposes nine tools: Google, Bing, News,
Scholar, Jobs, Maps and Video search, Amazon Shopping search, and page scraping.
The entry follows the existing
mcd-mcpshape for a keyed third-party HTTP server:type: 'http', abaseUrl, and acustomHeadersplaceholder the user replaces.It is not in
DEFAULT_ENABLED_SERVER_NAMES, so it ships listed but off, exactly likethe You.com and McDonald's entries.
Two files, 33 added lines, no dependencies, no changes to existing entries.
Testing
Quality gates, all clean on this branch:
The new Vitest case in
test/main/mcp/settings.test.tsmirrors the McDonald's andYou.com cases: it asserts an existing user with an empty
mcpServersstore picks upthe entry on upgrade with
enabled: falseand the header placeholder intact.I also connected to the endpoint with the same client and transport this app uses,
ClientplusStreamableHTTPClientTransportwithrequestInit.headers, reading theURL and header straight out of the new catalog entry:
Behaviour worth knowing before merge, measured against the live endpoint:
X-Api-Keyheader the connection is refused with HTTP 401 and a messagetelling the user to supply a Serply API key.
initializeandtools/listsucceed and thefirst tool call returns
isError: truewith{"detail":"Invalid API key"}. So auser who enables the server before pasting a key gets a clear error naming the
cause rather than a silent failure.
No renderer strings were added, so
pnpm run i18nwas not needed. Docs for the toolsare at https://serply.io/docs.
Summary by CodeRabbit
New Features
Compatibility