Skip to content

fix(ai): preserve MCP toolkit service requirements - #8842

Merged
tim-smart merged 4 commits into
Effect-TS:mainfrom
brandon-julio-t:fix/mcp-toolkit-service-requirements
Oct 6, 2026
Merged

tim-smart merged 4 commits into
Effect-TS:mainfrom
brandon-julio-t:fix/mcp-toolkit-service-requirements

Conversation

@brandon-julio-t

@brandon-julio-t brandon-julio-t commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Description

Fix MCP toolkit registration losing tool handler and schema service requirements. Incomplete servers could previously compile and fail with errors such as Service not found: effect/HttpClient.

registerToolkit and toolkit now apply Tool.HandlerServices to Tools[keyof Tools] rather than the tool record. The captured context tracks those requirements; runtime behavior is unchanged.

Focused type regressions cover dependencies from multiple tools, parameter decoding, success and failure encoding, and both registration APIs. Registration still excludes the per-call McpRequestContext and requires McpServerClient. Includes an effect patch changeset.

Validation

  • Targeted type tests pass on TypeScript 5.9.3 and 6.0.3: 46 tests and 110 assertions combined. Against the pre-fix source, all five regression cases fail on both targets (24 failing assertions).
  • pnpm check passes; MCP runtime tests pass (98 tests).
  • Independent review at 1b092387c5 found no actionable findings.
  • Final cleanup changes only changeset wording. pnpm lint-fix and git diff --check pass. Source and tests are unchanged from the reviewed commit.

All toolchain validation used nix develop -c.

Takeover checklist

  • Refactor focused regression tests and add issue closure references.
  • Independently validate the implementation; no refactor needed.
  • Complete independent review with no actionable findings.
  • Review comments and make the changeset concise.

Closes #8843
Closes EFF-1785

Related: #8526 covers decoder service requirements in Toolkit.handle.

MCP registration extracted handler services from the tool record instead of its values, so declared dependencies such as HttpClient disappeared from the required context. Retain those requirements so incomplete server dependency graphs fail at compile time.
@changeset-bot

changeset-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: ccd9bc8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 32 packages
Name Type
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-cloudflare Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/ai-typesafe Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node-shared Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 38.94 KB 38.94 KB 0.00 KB (0.00%)
basic.ts 7.06 KB 7.06 KB 0.00 KB (0.00%)
batching.ts 10.14 KB 10.14 KB 0.00 KB (0.00%)
brand.ts 6.73 KB 6.73 KB 0.00 KB (0.00%)
cache.ts 10.89 KB 10.89 KB 0.00 KB (0.00%)
config.ts 22.25 KB 22.25 KB 0.00 KB (0.00%)
differ.ts 21.34 KB 21.34 KB 0.00 KB (0.00%)
http-client.ts 22.44 KB 22.44 KB 0.00 KB (0.00%)
http-router.ts 33.95 KB 33.95 KB 0.00 KB (0.00%)
logger.ts 11.21 KB 11.21 KB 0.00 KB (0.00%)
metric.ts 9.03 KB 9.03 KB 0.00 KB (0.00%)
optic.ts 6.96 KB 6.96 KB 0.00 KB (0.00%)
pubsub.ts 15.18 KB 15.18 KB 0.00 KB (0.00%)
queue.ts 12.13 KB 12.13 KB 0.00 KB (0.00%)
schedule.ts 11.22 KB 11.22 KB 0.00 KB (0.00%)
schema-bigdecimal.ts 13.74 KB 13.74 KB 0.00 KB (0.00%)
schema-binary.ts 40.00 KB 40.00 KB 0.00 KB (0.00%)
schema-class.ts 21.07 KB 21.07 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 32.10 KB 32.10 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 27.28 KB 27.28 KB 0.00 KB (0.00%)
schema-string-transformation.ts 14.48 KB 14.48 KB 0.00 KB (0.00%)
schema-string.ts 12.00 KB 12.00 KB 0.00 KB (0.00%)
schema-template-literal.ts 16.07 KB 16.07 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 38.46 KB 38.46 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 25.30 KB 25.30 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 20.26 KB 20.26 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 20.45 KB 20.45 KB 0.00 KB (0.00%)
schema-toFormatter.ts 20.57 KB 20.57 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 25.03 KB 25.03 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 20.55 KB 20.55 KB 0.00 KB (0.00%)
schema.ts 20.29 KB 20.29 KB 0.00 KB (0.00%)
stm.ts 13.23 KB 13.23 KB 0.00 KB (0.00%)
stream.ts 9.99 KB 9.99 KB 0.00 KB (0.00%)

@tim-smart
tim-smart enabled auto-merge (squash) October 6, 2026 07:20
@tim-smart
tim-smart merged commit 5630677 into Effect-TS:main Oct 6, 2026
8 of 10 checks passed
@brandon-julio-t
brandon-julio-t deleted the fix/mcp-toolkit-service-requirements branch October 6, 2026 07:31
brandon-julio-t added a commit to brandon-julio-t/brandon-julio-t that referenced this pull request Oct 6, 2026
Effect PR #8842 is merged and closes issue #8843. Record the diagnosis, bug report, and upstream fix so profile readers can assess this contribution through its original evidence.

Effect-TS/effect#8842

This branch is waiting to be deployed

1 waiting deployment
fork — ccd9bc8e Waiting Oct 6, 2026 by tim-smart via approval-gate #17833
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

McpServer toolkit registration drops declared tool service requirements

2 participants