Skip to content

fix(mcp): resolve namespace-relative dotted tool searches - #88

Merged
shuv1337 merged 2 commits into
v2from
fix/namespace-relative-dotted-search
Nov 12, 2026
Merged

shuv1337 merged 2 commits into
v2from
fix/namespace-relative-dotted-search

Conversation

@shuv1337

@shuv1337 shuv1337 commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Fixes product feedback pc_e17b535fb960: search({ namespace: "m365-admin", query: "tenants.list" }) now uses the existing scoped exact lookup, just like the fully qualified path.

  • Try fully qualified paths/tool expressions first, then <canonical namespace>.<query> only for dotted identifier paths.
  • Keep bare words, prose and missing-path fallback on existing BM25 ranking. Preserve authorized targets, nested below filtering, unavailable-listing handling and exact-match pagination.
  • Add a real-server public MCP E2E covering both search and execute discovery, noisy list tools, canonical/expression namespaces, full paths/expressions, bare words, multi-word and malformed/missing paths, pagination, nested scope mismatch and restricted OAuth tool access.
  • Run the new scenario and existing concise-page scenario in the fork's CI (its workflow does not consume upstream's E2E-selection block).

Verification

  • Regression failed on unpatched origin/v2: relative query returned five items instead of the single exact tool.
  • bun run e2e:prepare passed.
  • bun run e2e:local --test-name 'MCP search resolves namespace-relative dotted paths|A broad MCP tool search returns concise pages': 2 passed.
  • bun run format; bun run check: passed, including all nine typecheck projects and E2E boundary checks (existing Effect warnings only).
  • actionlint .github/workflows/fork-ci.yml: passed.
  • No unit tests: repository policy explicitly requires public E2E only.

Boundary

Fork PR targeting shuv1337/executor:v2 only. Do not merge or deploy as part of this task. Opus 5.5/high independently reviewed f11eccd15: approve, no blockers, and reran both named E2Es (2 passed). Its nonblocking precedence-coverage gap is now addressed with a colliding full/relative-path fixture: temporarily reversing candidate order fails on the wrong tool identity; restored order passes. The comment capitalization nit is fixed. No runtime implementation changed after review. bun run check, format, actionlint and both named E2Es passed again on the follow-up.

mcp-search-concise.spec.ts
mcp-search-statements.spec.ts
mcp-direct-calls.spec.ts
app-routers.spec.ts
app-router-protocols.spec.ts
local-mcp-connections.spec.ts
mcp-connections.spec.ts
mcp-catalog.spec.ts
mcp-catalog-scale.spec.ts
mcp-execute-lazy.spec.ts
mcp-execute-reach.spec.ts
mcp-execute-failures.spec.ts
tool-index-redeploy.spec.ts

@shuv1337

Copy link
Copy Markdown
Owner Author

Independent review: Claude Opus 5.5, high effort, via the requested Cursor pool reviewed f11eccd and approved with no blockers. It independently ran both focused local MCP search scenarios: 2/2 passed. Follow-up addresses its nonblocking coverage suggestion with an ambiguous full/relative path fixture; mutation verification (relative-first lookup) failed at the expected wrong-tool assertion, then both scenarios passed after restoration. The comment nit is fixed. No production implementation changed after review. Format, actionlint and bun run check (all nine typecheck projects) passed again. No merge or deployment performed.

@shuv1337
shuv1337 merged commit cc17b57 into v2 Nov 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant