Repository navigation
feat(mcp): add Keenable to the MCP marketplace - #2313
Conversation
|
No actionable comments were generated in the recent review. Summary
Merge Risk:
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Review statusThanks for contributing. This comment tracks the review sequence and the next action. Current step: The required review sequence passed. Remaining merge requirements apply. Review-state labels are managed by this workflow; do not edit them manually. |
taltas
left a comment
There was a problem hiding this comment.
Hi @ilya-bogin-keenable, thanks for the MCP, looks great! Wishing you and Keenable the best.
Live merge base 3ee042d; main brought 6 commits (Zoo-Code-Org#2223 display settings, Zoo-Code-Org#2313 Keenable, Zoo-Code-Org#1309 abort-signal round 2, Zoo-Code-Org#2293 mutant comments, Zoo-Code-Org#2294 CI hygiene, Zoo-Code-Org#1207 BM25 ranker) across 113 paths. Conflict prediction by blob identity against the live merge base flagged 10 shared paths; 8 auto-merged and 2 needed a hand resolution. Both hand resolutions keep the settled side and our side: - src/core/webview/ClineProvider.ts: kept main's displaySettings import and our extra ProviderSettingsNotFoundError binding; took main's three new display keys (timeFormat/dateFormat/showRelativeTimes) into our getState() return, re-pointed at mergedStateValues because that is where our per-view merge feeds this block; and wrapped our setValues() sanitization with main's withoutInvalidDisplaySettings so an invalid display value is dropped before the shared write and before the view-local write, instead of only before the shared write. - src/core/webview/webviewMessageHandler.ts: kept main's isInvalidDisplayValue guard and our viewStates guard in the updateSettings loop, both with their own continue, and kept main's whole failed-save/settingsSaveResult restructuring. Fidelity: every line either side added since the merge base is present in the result except 6, all of them intentional rewrites named above (1 ours, 5 main). No file present on either side is absent from the result: 0 of main's 39 new files missing, 0 of ours' 1 new file missing, 0 files main deleted since the base. No conflict markers remain, and the recursive stage-1 blobs matched the real merge-base blobs byte for byte with no committed markers in them.
Related GitHub Issue
Closes: #2312
Description
This PR adds a
keenableitem tosrc/assets/marketplace/mcps.yml. The item goes betweenkagiandlaravel-boost, so the list stays in alphabetical order. It uses the same remote-server pattern as the AnySearch entry from #1955. There are no TypeScript changes.streamable-httpathttps://api.keenable.ai/mcp-public. No account or key is needed.X-API-Key: {{KEENABLE_API_KEY}}header. The installer asks for the key. The key only raises the rate limits.Both methods send an
X-Keenable-Title: Zoo Codeheader. Keenable uses it to count traffic per app. The server has two read-only tools:search_web_pagesandfetch_page_content.Data sent to Keenable: the search query or the page URL, and the
X-Keenable-Titleheader. The API key is sent only when the user selects the API key method.Roadmap area: Enhanced User Experience. Users get web search in one click, with no sign-up.
Test Procedure
mcps.ymlthroughConfigLoader, which uses the extension schema. Result: 67 MCP items, unique ids, alphabetical order kept,keenableright afterkagi.SimpleInstallerinto a temporary.roo/mcp.json. I parsed each result withServerConfigSchemafromMcpHub. The keyless config has noX-API-Keyheader. The API key method puts the given key into the header.StreamableHTTPClientTransportandMcpOAuthClientProvider. This is the same setup thatMcpHubuses forstreamable-http. The connection took 320 ms. There was noUnauthorizedErrorand no sign-in step.tools/listreturnedsearch_web_pagesandfetch_page_content. Onesearch_web_pagescall returned 10 results in 329 ms.npx vitest run services/marketplace __tests__/dist_assets.spec.ts(afterpnpm bundle): the 88 existing tests pass.npx prettier --check src/assets/marketplace/mcps.ymlpasses.Pre-Submission Checklist
Documentation Updates
Additional Notes
Disclosure: I work at Keenable, which runs this MCP server.