diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4cea374 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# See the documentation at +# https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference +version: 2 +updates: + # Update actions used by .github/workflows in this repository. + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + groups: + actions-org: # Groups all Github-authored actions into a single PR. + patterns: ["actions/*"] \ No newline at end of file diff --git a/.github/workflows/auto-publish.yml b/.github/workflows/auto-publish.yml new file mode 100644 index 0000000..ace0191 --- /dev/null +++ b/.github/workflows/auto-publish.yml @@ -0,0 +1,17 @@ +name: CI +on: + pull_request: {} + push: + branches: [main] +jobs: + main: + name: Build, Validate and Deploy + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v6 + - uses: w3c/spec-prod@v2 + with: + GH_PAGES_BRANCH: gh-pages + BUILD_FAIL_ON: warning \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64233a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +index.html \ No newline at end of file diff --git a/.pr-preview.json b/.pr-preview.json new file mode 100644 index 0000000..e7f0095 --- /dev/null +++ b/.pr-preview.json @@ -0,0 +1,7 @@ +{ + "src_file": "index.bs", + "type": "bikeshed", + "params": { + "force": 1 + } +} \ No newline at end of file diff --git a/index.bs b/index.bs new file mode 100644 index 0000000..2b780e7 --- /dev/null +++ b/index.bs @@ -0,0 +1,72 @@ +
+Title: WebMCP
+Shortname: webmcp
+Level: None
+Status: CG-DRAFT
+Group: webml
+Repository: webmachinelearning/webmcp
+URL: https://webmachinelearning.github.io/webmcp
+Editor: Brandon Walderman, Microsoft https://www.microsoft.com, brwalder@microsoft.com, w3cid 115877
+Editor: Dominic Farolino, Google https://www.google.com, domfarolino@google.com, w3cid 102763
+Abstract: The WebMCP API enables web applications to provide JavaScript-based tools to AI agents.
+Markup Shorthands: markdown yes, css no
+Complain About: accidental-2119 yes, missing-example-ids yes
+Assume Explicit For: yes
+Default Biblio Status: current
+Boilerplate: omit conformance
+Indent: 2
+Die On: warning
+
+ +

Introduction

+ +WebMCP API is a new JavaScript interface that allows web developers to expose their web application functionality as “tools” - JavaScript functions with natural language descriptions and structured schemas that can be invoked by [=agents=], [=browser's agents=], and [=assistive technologies=]. Web pages that use WebMCP can be thought of as Model Context Protocol [[!MCP]] servers that implement tools in client-side script instead of on the backend. WebMCP enables collaborative workflows where users and agents work together within the same web interface, leveraging existing application logic while maintaining shared context and user control. + +

Terminology

+ + + +An agent is an autonomous assistant that can understand a user’s goals and take actions on the user’s behalf to achieve them. Today, these are typically implemented by large language model (LLM) based [=AI platforms=], interacting with users via text-based chat interfaces. + +A browser’s agent is an [=agent=] provided by or through the browser that could be built directly into the browser or hosted by it, for example, via an extension or plug-in. + +An AI platform is a provider of agentic assistants such as OpenAI’s ChatGPT, Anthropic’s Claude, or Google’s Gemini. + +

Security and privacy considerations

+ + + +

Accessibility considerations

+ +

API

+ + + + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute ModelContextContainer modelContext; +}; + +[Exposed=Window, SecureContext] +interface ModelContextContainer { +}; + + +
+{
+  "mcp": {
+    "href": "https://modelcontextprotocol.io/specification/latest",
+    "title": "Model Context Protocol (MCP) Specification",
+    "publisher": "The Linux Foundation"
+  }
+}
+
\ No newline at end of file