Repository navigation
[MCP] feat(catalog-mcp): build tooling, configureMcpCatalog, the v1.0 entry point and the samples on it - #3186
Draft
josemontespg wants to merge 1 commit into
Draft
josemontespg wants to merge 1 commit into
josemontespg wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the A2UI MCP catalog to target protocol v1.0, refactoring the serialization API by introducing Catalog.fromJson, Catalog.toJson, and Catalog.validationSchema to replace deprecated methods. It removes five data transformation functions to the filesystem sample, refactors callMcpTool to support MCP App resource extraction, and introduces a shared double-iframe sandbox proxy to isolate untrusted web content. The review feedback suggests normalizing MIME types in isMcpAppMimeType to handle spacing variations and replacing a deprecated Catalog.fromSchema call with Catalog.fromJson in the test suite.
josemontespg
removed this pull request from stack #3188
October 13, 2026 22:11
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 13, 2026 22:12
2d93890 to
c6365ba
Compare
josemontespg
added this pull request to stack #3189
October 13, 2026 22:12
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 13, 2026 22:26
c6365ba to
975739f
Compare
josemontespg
commented
Oct 13, 2026
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 13, 2026 23:03
975739f to
de538e5
Compare
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 17:48
de538e5 to
7a2139d
Compare
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 17:54
7a2139d to
8a55063
Compare
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 18:09
8a55063 to
d1ae8ec
Compare
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 18:28
d1ae8ec to
675a8ee
Compare
josemontespg
removed this pull request from stack #3189
October 14, 2026 18:28
josemontespg
added this pull request to stack #3212
October 14, 2026 18:28
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 18:51
675a8ee to
6f96dab
Compare
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 19:00
6f96dab to
ef46bba
Compare
josemontespg
removed this pull request from stack #3212
October 14, 2026 19:02
josemontespg
added this pull request to stack #3215
October 14, 2026 19:02
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 19:42
ef46bba to
48aaa58
Compare
josemontespg
commented
Oct 14, 2026
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 14, 2026 20:59
48aaa58 to
521c7da
Compare
josemontespg
removed this pull request from stack #3215
October 15, 2026 00:09
josemontespg
added this pull request to stack #3227
October 15, 2026 00:10
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 19, 2026 19:07
521c7da to
a65a183
Compare
…try point Prepare @a2ui/catalog-mcp for the v1 MCP catalog: wireit build (copy of the v1 catalog.json and of the shared sandbox sources, esbuild bundle of the sandbox proxy), Karma browser tests next to the Node tests, and the package metadata for publication. The entry point targets A2UI v1.0. configureMcpCatalog replaces createMcpCatalogFunctions as the single host entry point (MCP client resolver, message processor, default message version, onMcpAppResource and sandbox location); CallMcpToolImplementation ships pre-constructed and reads that configuration when it runs. callMcpTool extracts ui:// MCP App resources into McpAppResourcePayload and accepts a function call as its arguments. The two community MCP sample clients follow: they register CallMcpToolImplementation and configure the host with configureMcpCatalog, and resolve @a2ui/catalog-mcp, @a2ui/lit and @a2ui/web_core from the monorepo dist/ instead of compiling the catalog from source; the community CI workflow builds those packages at the repository root first (TODO #1698).
josemontespg
force-pushed
the
catalogs-mcp-config
branch
from
October 19, 2026 23:59
a65a183 to
0a5f2fc
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepares
@a2ui/catalog-mcpfor the v1 MCP catalog: the build and test tooling the package needs from here on,configureMcpCatalog, the single host entry point that replacescreateMcpCatalogFunctions, and the two community MCP sample clients moved to it. TheMcpAppcomponent andmcpCatalogfollow in #2799; this PR carries the host-side half of the MCP Apps flow (onMcpAppResource,ui://resource extraction) so thatcallMcpToolis complete when the component lands.The entry point now targets A2UI v1.0.
CallMcpToolImplementationships pre-constructed and reads the host configuration when it runs, so there is no processor-before-catalog ordering; a host registers it underMCP_CATALOG_IDand callsconfigureMcpCatalog({getMcpClientForTool, processor, sandbox?})once.Changes
package.json,karma.conf.cjs,tsconfig.test.json,eslint.config.mjs,.gitignore,scripts/build-sandbox.mjs,scripts/build-test-fixtures.mjs: wireit build (copy of the v1catalog.jsonand oftypescript/catalogs/shared/, esbuild bundle of the sandbox proxy intodist/sandbox/), Karma browser tests next to the Node tests, publication metadata.scripts/copy-catalog.jsis gone; the fixtures script is a no-op until [MCP] Add the McpApp universal component and mcpCatalog to @a2ui/catalog-mcp #2799 addstests/fixtures/apps/.src/mcp_catalog_config.ts:configureMcpCatalog(MCP client resolver, processor,defaultVersion,onMcpAppResource, sandbox location).src/functions/callMcpTool.ts: bound to the host configuration; extractsui://MCP App resources (text/html;profile=mcp-app) intoMcpAppResourcePayload;argumentsalso accepts a function call that returns the arguments object.src/catalog.ts,src/index.ts:MCP_CATALOG_IDforcatalogs/mcp/v1/catalog.json; the entry point exportsMCP_CATALOG_ID,CallMcpToolImplementation,configureMcpCatalogand their types.README.md,CHANGELOG.md: setup,configureMcpCatalog, sandbox asset.samples/community/mcp/a2ui-over-mcp-{filesystem,recipe}/client: registerCallMcpToolImplementation(the filesystem sample next to its own data functions) and configure the host withconfigureMcpCatalog; resolve@a2ui/catalog-mcp,@a2ui/litand@a2ui/web_corefrom the monorepodist/instead of compiling the catalog from source against the npm packages (TODO Clean up folder samples/community. #1698)..github/workflows/community_code.ymlbuilds those packages at the repository root first.Verification
yarn workspace @a2ui/catalog-mcp test: 82 Node tests, 141 Karma tests (shared sandbox).yarn testin both sample clients against a fresh@a2ui/catalog-mcpbuild (64 and 11 tests)../scripts/fix_format.sh --check,python3 scripts/fix_licenses.py --check.Related to #3157