Skip to content

Add WebMCP page#182

Merged
eviltester merged 10 commits into
masterfrom
172-webmcp
Jun 11, 2026
Merged

Add WebMCP page#182
eviltester merged 10 commits into
masterfrom
172-webmcp

Conversation

@eviltester

@eviltester eviltester commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a dedicated webmcp.html page for browser-hosted WebMCP access
  • share the MCP tool and resource contract between the browser WebMCP page and the Node MCP server
  • update docs, navigation, tests, and workspace resolution so the new page is discoverable and covered

Closes #172.

Verification

  • pnpm run verify:ui
  • pnpm run verify:local

Summary by CodeRabbit

  • New Features

    • In-browser WebMCP page and entry script to list/register MCP tools with live status and theme toggle; MCP tool surfaces and an install-config resource catalog are now exposed.
  • Documentation

    • README, app docs, and Quick Start updated with local/Docker WebMCP URLs and run instructions.
  • Style

    • Added WebMCP-specific CSS including dark-mode rules.
  • Tests

    • Expanded tests for WebMCP bootstrapping, tool registration/teardown, MCP contract, and testenv SEO/robots behavior.

Copilot AI review requested due to automatic review settings June 10, 2026 11:32
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 788dbc6f-c616-457f-8c2c-1af3395d5af0

📥 Commits

Reviewing files that changed from the base of the PR and between 0eb5402 and cbb865a.

📒 Files selected for processing (4)
  • apps/anywaydata/Dockerfile
  • apps/api/Dockerfile
  • apps/mcp/Dockerfile
  • apps/web/Dockerfile
💤 Files with no reviewable changes (4)
  • apps/anywaydata/Dockerfile
  • apps/web/Dockerfile
  • apps/mcp/Dockerfile
  • apps/api/Dockerfile

📝 Walkthrough

Walkthrough

This PR adds a reusable MCP contract, refactors the MCP CLI to use it, and implements a WebMCP browser page (with entry script, bootstrap logic, styling, tests, and docs/build wiring) that registers MCP tools at runtime via document.modelContext.

Changes

MCP Contract Foundation & CLI Refactoring

Layer / File(s) Summary
MCP Contract Definition and Exports
packages/core/js/mcp/anywaydata-mcp-contract.js, packages/core/package.json
Implements server constants, JSON Schema builders for formatter options, tool/resource definitions, textSpec normalization/validation, standardized tool payload helpers, tool/resource enumeration and dispatchers, and adds ./mcp/* subpath export.
MCP Contract Tests
packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js
Validates shared tool listing, execution of generate_data_from_spec, options schema shape (flat formatter options object with delimiter), and reading the Install Config Examples resource.
MCP CLI Refactoring
apps/mcp/src/index.js
Delegates initialize/tools/resources/call handlers to contract-layer imports (ANYWAYDATA_MCP_SERVER_INFO, listAnyWayDataMcpTools, listAnyWayDataMcpResources, readAnyWayDataMcpResource, getAnyWayDataMcpTool, executeAnyWayDataMcpTool).
MCP CLI Tests Update
apps/mcp/src/mcp.test.js
Updates tests to expect flat options schema and flattened options argument shapes (includeSetup/prettyPrint/dataSourceStrategy as top-level options properties).

WebMCP Browser Interface

Layer / File(s) Summary
Build & Runtime Configuration
apps/web/vite.config.mjs, package.json
Adds Vite alias mappings for @anywaydata/core/*, adds webmcp.html Rollup input, Jest moduleNameMapper for MCP, and runtime dependencies including @mcp-b/webmcp-polyfill.
WebMCP Entry Point & Page Bootstrap
apps/web/src/webmcp-entry.mjs, apps/web/src/webmcp-page.mjs
Implements polyfill initialization and dynamic import entry; adds page helpers (findModelContext, setStatus, appendListItems, createToolCard, registerTools) and bootstrapWebMcpPage orchestration that lists tools, renders cards, registers handlers via modelContext.registerTool, manages AbortControllers, and provides destroy().
WebMCP Page Layout & Styling
apps/web/webmcp.html, apps/web/styles.css
Adds a dedicated webmcp.html with explanatory sections, status and tool-list containers, run instructions, and CSS for layout, cards, code blocks, typography, and dark-mode variants.
WebMCP Page Testing
apps/web/src/tests/jest/webmcp-page.test.js
Adds Jest+JSDOM tests covering successful bootstrap and registration, tool execution callback shape, cleanup via destroy() (AbortController), missing modelContext warning path, and registerTool error path.
Navigation & Documentation Updates
README.md, apps/anywaydata/README.md, docs-src/docs/070-interfaces-and-deployment/020-web-ui.md, docs-src/docs/070-interfaces-and-deployment/040-mcp.md
Adds WebMCP links and run instructions for local and Docker previews; cleans duplicated Docker Notes heading and updates app README.
Browser Test Component Selector Fix
apps/web/src/tests/browser/app/abstractions/components/test-data-panel.component.js
Scopes the <details> locator to the component container direct child (:scope > details).
Testenv Index & Robots
scripts/create-testenv.mjs, tests/integration/create-testenv-seo.test.js
Adds Disallow: /webmcp.html to generated robots.txt and inserts a WebMCP link card into the testenv index; tests updated accordingly.

Sequence Diagram

sequenceDiagram
  participant Browser as Browser
  participant Entry as webmcp-entry.mjs
  participant Page as bootstrapWebMcpPage
  participant Contract as anywaydata-mcp-contract
  participant Model as document.modelContext
  Browser->>Entry: load /webmcp.html
  Entry->>Entry: initializeWebMCPPolyfill()
  Entry->>Page: import & invoke bootstrapWebMcpPage
  Page->>Page: findModelContext(document)
  Page->>Contract: listAnyWayDataMcpTools()
  Contract-->>Page: tool list
  Page->>Page: render tool cards
  alt modelContext available
    Page->>Model: registerTool for each
    Model->>Page: invoke registered handler
    Page->>Contract: executeAnyWayDataMcpTool(name, args)
    Contract-->>Page: tool result
    Page->>Page: setStatus success
  else modelContext unavailable
    Page->>Page: setStatus warning
  end
  Page-->>Browser: return destroy()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 A contract laid bare, the MCP now shared,
From CLI lines to browser cards declared,
Tools register, aborts called when done,
WebMCP shines under the local sun—
A little rabbit hops—"All tests passed, run!"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'Add WebMCP page' directly describes the main change: creating a new webmcp.html page for browser-hosted WebMCP access.
Linked Issues check ✅ Passed All objectives from issue #172 are implemented: dedicated webmcp.html page created, WebMCP client implemented via contract layer, and human-readable interface documentation provided.
Out of Scope Changes check ✅ Passed Changes appropriately support the main WebMCP objective. Dockerfile directive removals, test updates, and documentation changes are all necessary supporting modifications for the new feature.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 172-webmcp

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 103ea030b7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/src/webmcp-page.mjs Outdated
@greptile-apps

greptile-apps Bot commented Jun 10, 2026

Copy link
Copy Markdown

Greptile Summary

This PR introduces a dedicated webmcp.html page that registers AnyWayData tools directly in the browser via document.modelContext, enabling browser-integrated AI agents to discover and invoke them without a separate stdio MCP server. All tool/resource definitions are extracted into a new shared contract module (packages/core/js/mcp/anywaydata-mcp-contract.js) consumed by both the Node MCP server and the new browser page.

  • Shared MCP contract (anywaydata-mcp-contract.js): moves schema building, validation, and execution logic out of apps/mcp/src/index.js; changes GENERATE_OPTIONS_SCHEMA from a per-format discriminated oneOf to a flat merged properties object (intentional simplification, reflected in updated tests).
  • WebMCP page (webmcp-entry.mjs + webmcp-page.mjs + webmcp.html): initialises the @mcp-b/webmcp-polyfill, registers tools through document.modelContext, renders per-tool documentation cards, and handles no-modelContext warning and registration-error paths with proper status feedback and cleanup.
  • Supporting changes: Vite aliases, Jest moduleNameMapper entry, robots.txt disallow, test-env index card, and docs updates are all consistent with the new page.

Confidence Score: 5/5

Safe to merge; all changed paths are additive and the one behavioural change to the options schema is intentional and covered by updated tests.

The refactoring correctly extracts shared logic into the new contract module, the Node MCP server path is functionally equivalent to before as verified by the updated mcp.test.js suite, and the new WebMCP page handles all lifecycle and error states including the previously-flagged status-stuck-loading gap. The two maintenance concerns flagged are about future extensibility, not current behaviour.

packages/core/js/mcp/anywaydata-mcp-contract.js — the split between the tool registry array and the hardcoded execution switch is worth watching as new tools are added.

Important Files Changed

Filename Overview
packages/core/js/mcp/anywaydata-mcp-contract.js New shared MCP contract module extracted from apps/mcp/src/index.js; changes GENERATE_OPTIONS_SCHEMA from a discriminated oneOf per-format schema to a flat first-seen-wins merged properties object; tool registry and execution switch are separate lookup mechanisms that must stay in sync
apps/web/src/webmcp-page.mjs New page-level bootstrap module for in-browser WebMCP registration; correctly handles no-modelContext warning, registration error path, and destroy/cleanup lifecycle
apps/web/src/webmcp-entry.mjs Thin entry point that initialises the WebMCP polyfill synchronously then dynamically imports and bootstraps the page
apps/mcp/src/index.js Refactored to delegate all tool/resource definitions to the shared contract; execution uses payload?.ok === false to signal isError, correct for the new contract's uniform return shapes
apps/web/src/tests/jest/webmcp-page.test.js Comprehensive new test suite covering tool registration, execute callback behaviour, destroy/abort lifecycle, missing modelContext warning, and registration error state
apps/web/vite.config.mjs Adds resolve aliases for all @anywaydata/core sub-paths and registers webmcp.html as a build entry point
apps/web/webmcp.html New HTML page for the in-browser WebMCP surface; sets noindex/nofollow, uses aria-live on the status element, links to the module entry point
packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js New unit tests for the shared contract covering tool listing, generation execution, flat options schema shape, and resource reads

Reviews (9): Last reviewed commit: "Remove external Dockerfile frontend depe..." | Re-trigger Greptile

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a dedicated browser-hosted WebMCP page (webmcp.html) and refactors the existing Node MCP server to share a single MCP tool/resource contract with the browser page, improving consistency and discoverability across both surfaces.

Changes:

  • Added apps/web/webmcp.html plus a small JS bootstrap to register AnyWayData MCP tools via WebMCP when modelContext.registerTool is available.
  • Introduced a shared MCP contract module in @anywaydata/core and updated the Node MCP server to use it (instead of duplicating tool/resource definitions).
  • Updated navigation + docs to link to the new WebMCP page, and added Jest tests for both the contract and the page bootstrap.

Reviewed changes

Copilot reviewed 18 out of 19 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Documents the new webmcp.html page for local + docker usage.
pnpm-lock.yaml Locks new dependencies introduced for WebMCP support and shared contract usage.
packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js Adds unit tests to validate the shared MCP contract surface.
packages/core/package.json Exposes the new ./mcp/* export path for consumers.
packages/core/js/mcp/anywaydata-mcp-contract.js New shared MCP tool/resource contract used by both browser WebMCP and Node MCP server.
package.json Adds workspace + WebMCP dependencies and Jest path mapping for the new @anywaydata/core/mcp/* import path.
docs-src/docs/070-interfaces-and-deployment/020-web-ui.md Adds WebMCP link + local/docker URLs.
apps/web/webmcp.html New WebMCP page with human-readable guidance and placeholders for tool/resource lists.
apps/web/vite.config.mjs Adds webmcp.html as a build entry and adds explicit aliases for @anywaydata/core/* subpaths.
apps/web/styles.css Adds WebMCP-specific layout and card styling.
apps/web/src/webmcp-page.mjs Implements page bootstrap: renders tools/resources, reads install guide, registers tools into WebMCP.
apps/web/src/webmcp-entry.mjs Loads the WebMCP global/polyfill and bootstraps the page module.
apps/web/src/tests/jest/webmcp-page.test.js Adds Jest coverage for rendering + tool registration + WebMCP response shape.
apps/web/index.html Adds WebMCP nav + landing page link.
apps/web/generator.html Adds WebMCP nav link.
apps/web/combinatorial.html Adds WebMCP nav link.
apps/web/app.html Adds WebMCP nav link.
apps/mcp/src/index.js Replaces duplicated MCP tool/resource implementation with shared contract calls.
apps/anywaydata/README.md Documents the new webmcp.html entry point in the app README.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Comment thread packages/core/js/mcp/anywaydata-mcp-contract.js
Comment thread packages/core/js/mcp/anywaydata-mcp-contract.js
Comment thread apps/web/src/webmcp-page.mjs Outdated
Comment thread package.json
Comment thread apps/web/src/webmcp-page.mjs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/web/src/webmcp-page.mjs`:
- Around line 201-205: The code currently calls registerTools(...) and if it
throws the page stays in a loading state and themeToggle is not cleaned up; wrap
the await registerTools({ modelContext, tools }) call in a try/catch (or
try/catch/finally), on error call setStatus(statusElement, `Failed to register
AnyWayData tools: ${error.message || error}`, { isLoading: false }) and clean up
the themeToggle (remove the element or call its teardown method) inside the
catch, and ensure setStatus is called with isLoading: false in the finally so
the page never remains stuck in the "Registering…" state; reference setStatus,
registerTools, statusElement, and themeToggle to locate the fixes.

In `@packages/core/js/mcp/anywaydata-mcp-contract.js`:
- Around line 376-380: The example config object codex_local_repo contains a
machine-specific cwd value ('D:/github/grid-table-editor'); remove this
hardcoded Windows path and replace it with a portable alternative (either omit
the cwd field so the default working directory is used, use a relative path, or
replace with a clearly marked placeholder like '<path-to-repo>' or
process.cwd()). Update the codex_local_repo entry (command, args, cwd) to avoid
any absolute, OS-specific path and ensure the sample is platform-agnostic and
copy-paste safe.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1577e75b-462e-415a-a2a9-d4e8b93a3cd8

📥 Commits

Reviewing files that changed from the base of the PR and between 16e77d2 and 1112262.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (19)
  • README.md
  • apps/anywaydata/README.md
  • apps/mcp/src/index.js
  • apps/web/app.html
  • apps/web/combinatorial.html
  • apps/web/generator.html
  • apps/web/index.html
  • apps/web/src/tests/browser/app/abstractions/components/test-data-panel.component.js
  • apps/web/src/tests/jest/webmcp-page.test.js
  • apps/web/src/webmcp-entry.mjs
  • apps/web/src/webmcp-page.mjs
  • apps/web/styles.css
  • apps/web/vite.config.mjs
  • apps/web/webmcp.html
  • docs-src/docs/070-interfaces-and-deployment/020-web-ui.md
  • package.json
  • packages/core/js/mcp/anywaydata-mcp-contract.js
  • packages/core/package.json
  • packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js

Comment thread apps/web/src/webmcp-page.mjs Outdated
Comment thread packages/core/js/mcp/anywaydata-mcp-contract.js
Comment thread packages/core/js/mcp/anywaydata-mcp-contract.js

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
apps/web/src/webmcp-page.mjs (1)

187-199: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add themeToggle cleanup in the error handler.

The catch block (lines 193-199) sets the error status and rethrows, but does not destroy the themeToggle component created at lines 167-170. This leaves event listeners and DOM elements orphaned when registration fails.

🔧 Add cleanup in the catch block
   } catch (error) {
     const message = error instanceof Error ? error.message : String(error);
     setStatus(statusElement, `Unable to register AnyWayData WebMCP tools: ${message}`, {
       severity: 'error',
     });
+    themeToggle?.destroy?.();
     throw error;
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/webmcp-page.mjs` around lines 187 - 199, The catch block around
registerTools does not clean up the themeToggle created earlier (themeToggle
variable), leaving listeners/DOM orphaned; update the catch to check if
themeToggle is defined and call its cleanup method (e.g., themeToggle.destroy()
or themeToggle.remove()/unmount() depending on the component API), or if no such
method exists remove its DOM node and unregister its event listeners before
calling setStatus and rethrowing; ensure you reference the themeToggle
identifier and perform the cleanup prior to setting the error status and
throwing the error.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@apps/web/src/webmcp-page.mjs`:
- Around line 187-199: The catch block around registerTools does not clean up
the themeToggle created earlier (themeToggle variable), leaving listeners/DOM
orphaned; update the catch to check if themeToggle is defined and call its
cleanup method (e.g., themeToggle.destroy() or themeToggle.remove()/unmount()
depending on the component API), or if no such method exists remove its DOM node
and unregister its event listeners before calling setStatus and rethrowing;
ensure you reference the themeToggle identifier and perform the cleanup prior to
setting the error status and throwing the error.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a3d7869b-3f2d-489d-b384-3287a23d5054

📥 Commits

Reviewing files that changed from the base of the PR and between 1112262 and 3338d55.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (6)
  • apps/mcp/src/mcp.test.js
  • apps/web/src/tests/jest/webmcp-page.test.js
  • apps/web/src/webmcp-page.mjs
  • package.json
  • packages/core/js/mcp/anywaydata-mcp-contract.js
  • packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js
💤 Files with no reviewable changes (1)
  • package.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/core/src/tests/mcp/anywaydata-mcp-contract.test.js
  • packages/core/js/mcp/anywaydata-mcp-contract.js

@eviltester

Copy link
Copy Markdown
Owner Author

still seems too experimental so moving it to test environment only.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
apps/web/src/tests/jest/webmcp-page.test.js (1)

32-40: ⚡ Quick win

Exercise the real document.modelContext discovery path in this test.

The test title says “through document.modelContext”, but Line 38 injects modelContext directly, so findModelContext(documentObj) is not covered.

Suggested minimal update
   test('renders cards and registers tools through document.modelContext', async () => {
     const modelContext = createModelContextDouble();
+    dom.window.document.modelContext = modelContext;
     const createThemeToggleComponentFn = jest.fn(() => ({ destroy: jest.fn() }));

     const page = await bootstrapWebMcpPage({
       documentObj: dom.window.document,
-      modelContext,
       createThemeToggleComponentFn,
     });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/web/src/tests/jest/webmcp-page.test.js` around lines 32 - 40, The test
currently passes modelContext directly to bootstrapWebMcpPage which bypasses the
findModelContext(documentObj) path; update the test to instead attach the model
context to the DOM (e.g., set documentObj.modelContext =
createModelContextDouble()) and remove the modelContext argument so
bootstrapWebMcpPage exercises the real document.modelContext discovery path
(ensure any helper mocks like createThemeToggleComponentFn remain passed as
before and the test still awaits bootstrapWebMcpPage).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@apps/web/src/tests/jest/webmcp-page.test.js`:
- Around line 32-40: The test currently passes modelContext directly to
bootstrapWebMcpPage which bypasses the findModelContext(documentObj) path;
update the test to instead attach the model context to the DOM (e.g., set
documentObj.modelContext = createModelContextDouble()) and remove the
modelContext argument so bootstrapWebMcpPage exercises the real
document.modelContext discovery path (ensure any helper mocks like
createThemeToggleComponentFn remain passed as before and the test still awaits
bootstrapWebMcpPage).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 368a246e-105f-4155-a0eb-89daa2a9a1f6

📥 Commits

Reviewing files that changed from the base of the PR and between 3338d55 and c80d387.

📒 Files selected for processing (10)
  • README.md
  • apps/mcp/src/mcp.test.js
  • apps/web/src/tests/jest/webmcp-page.test.js
  • apps/web/src/webmcp-entry.mjs
  • apps/web/src/webmcp-page.mjs
  • apps/web/styles.css
  • apps/web/webmcp.html
  • docs-src/docs/070-interfaces-and-deployment/020-web-ui.md
  • docs-src/docs/070-interfaces-and-deployment/040-mcp.md
  • packages/core/js/mcp/anywaydata-mcp-contract.js
💤 Files with no reviewable changes (1)
  • docs-src/docs/070-interfaces-and-deployment/020-web-ui.md
✅ Files skipped from review due to trivial changes (3)
  • docs-src/docs/070-interfaces-and-deployment/040-mcp.md
  • README.md
  • apps/web/styles.css
🚧 Files skipped from review as they are similar to previous changes (3)
  • apps/web/src/webmcp-entry.mjs
  • apps/mcp/src/mcp.test.js
  • packages/core/js/mcp/anywaydata-mcp-contract.js

@eviltester eviltester merged commit 8234147 into master Jun 11, 2026
14 checks passed
@eviltester eviltester deleted the 172-webmcp branch June 11, 2026 08:56
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.

webmcp

2 participants