feat(mcp): register loopover_list_notifications as a local stdio tool - #7893
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #7893 +/- ##
==========================================
- Coverage 88.85% 80.68% -8.17%
==========================================
Files 88 89 +1
Lines 21214 23362 +2148
Branches 3675 4507 +832
==========================================
Hits 18849 18849
- Misses 2187 4335 +2148
Partials 178 178
Flags with carried forward coverage won't be shown. Click here to find out more.
|
Closes JSONbored#7761 loopover_list_notifications was already registered as a remote MCP tool (src/mcp/server.ts) with a CLI mirror (`notifications`, JSONbored#6745), but had no local stdio MCP tool registration -- the same gap class PR JSONbored#6382 fixed for the 5 maintain-surface tools. Mirrors that pattern exactly: a registerStdioTool block using stdioToolDescription for the centralized description and toolResult for the response shape, placed alongside the other loginShape-based contributor tools (loopover_get_decision_pack / loopover_explain_repo_decision / loopover_monitor_open_prs / loopover_pr_outcome). The handler reuses getNotifications(login), the exact apiGet call the existing `notifications` CLI command already makes, so there is one HTTP call site for this route, not two. Adds a stdio-proxy test to test/unit/mcp-cli-notifications.test.ts following the same StdioClientTransport + fixture-server shape as the sibling loginShape tools' own suites (mcp-cli-pr-outcomes.test.ts, mcp-cli-monitor-open-prs.test.ts): registration, the one apiGet call, and tool/CLI mirror parity. Bumps the pinned stdio tool count in mcp-tool-rename-aliases.test.ts from 79 to 80.
2525459 to
6efba23
Compare
|
Caution 🛑 LoopOver review result - fixes requiredReview updated: 2026-07-21 16:34:51 UTC
Review summary Nits — 5 non-blocking
CI checks failing
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
|
LoopOver is closing this pull request on the maintainer's behalf (CI is failing (codecov/patch)). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
Closes #7761
What
loopover_list_notificationswas already registered as a remote MCP tool (src/mcp/server.ts) with a CLI mirror (notifications, #6745), but had no local stdio MCP tool registration — the same gap class PR #6382 fixed for the 5 maintain-surface tools.Adds a
registerStdioTool("loopover_list_notifications", ...)block topackages/loopover-mcp/bin/loopover-mcp.ts, mirroring #6382's exact pattern:description: stdioToolDescription("loopover_list_notifications")— centralized lookup, not hardcoded.inputSchema: loginShape— the same schema its loginShape-based siblings (loopover_get_decision_pack,loopover_explain_repo_decision,loopover_monitor_open_prs,loopover_pr_outcome) already use, placed directly alongside them.toolResult(...), matching every other stdio tool's result shape.Reuse, no duplicated HTTP logic
The handler calls
getNotifications(login)— the exact sameapiGetcall the existingnotificationsCLI command already makes (packages/loopover-mcp/bin/loopover-mcp.ts,notificationsCli) — so there remains exactly one HTTP call site forGET /v1/contributors/:login/notifications.Tests
Added a stdio-proxy test block to
test/unit/mcp-cli-notifications.test.ts, following the identicalStdioClientTransport+ fixture-server shape used by the sibling loginShape tools' own suites (mcp-cli-pr-outcomes.test.ts,mcp-cli-monitor-open-prs.test.ts):logintoGET /v1/contributors/:login/notificationsvia the sameapiGetthe CLI uses--jsonmirror-parity for the same loginAlso bumped the pinned stdio tool count in
test/unit/mcp-tool-rename-aliases.test.ts(80 → 81, accounting for #7758 which landed onmainin between).Verification
npm run typecheckcleannpm run build:mcpclean (tsc, sourcemap-strip, syntax-check all pass)npm run test:mcp-packcleanmcp-cli-notifications.test.ts,mcp-tool-rename-aliases.test.ts,mcp-notifications.test.ts,mcp-tool-categories.test.ts,mcp-discovery.test.ts,mcp-cli-pr-outcomes.test.ts,mcp-cli-monitor-open-prs.test.ts,mcp-cli-maintain-tools.test.ts— 87+ tests, all passinggit diff --checkagainstupstream/maincleanupstream/main(picked up Register loopover_get_outcome_calibration as a local stdio MCP tool #7758'sloopover_get_outcome_calibrationstdio registration landing concurrently; resolved the resulting tool-count-pin conflict to 81, verified no overlap between the two new registrations)packages/loopover-mcp/bin/**/*.tsis invitest.config.ts'scoverage.includeand not exempted incodecov.yml, but per that file's own documented note it's tested exclusively via subprocess spawn (not v8-instrumentable in-process). Verified against real precedent before assuming the 99% patch gate applies the same way it does tosrc/**: PR #6382 and PR #7018 (both landed identicalregisterStdioTooladditions to this exact file) both showcodecov/patch: passon GitHub, confirming this file's patch-gate scoping tolerates the subprocess-only test convention this PR follows.