Skip to content

Update e2a integration page with remote MCP server and 7 tools#1793

Merged
koverholt merged 7 commits into
google:mainfrom
jiashuoz:feat/e2a-integration-refresh
May 22, 2026
Merged

Update e2a integration page with remote MCP server and 7 tools#1793
koverholt merged 7 commits into
google:mainfrom
jiashuoz:feat/e2a-integration-refresh

Conversation

@jiashuoz
Copy link
Copy Markdown
Contributor

Summary

The e2a integration page has drifted from what the e2a MCP server actually ships. Two concrete gaps:

  1. Hosted MCP endpoint isn't documented. e2a runs a hosted Streamable HTTP MCP at https://mcp.e2a.dev/mcp that accepts an API key in the Authorization header. The current page only shows the stdio path (npx -y @e2a/mcp-server), which doesn't work for ADK agents deployed to Cloud Run since Cloud Run doesn't host stdio MCP servers. This PR adds a "Hosted MCP Server" tab to both the Python and TypeScript code examples using StreamableHTTPConnectionParams.

  2. 7 tools are missing from the table. The e2a MCP server now registers 18 tools (verified against mcp/tests/http.test.ts's lists every registered tool after initialize test). The current page lists 11. This PR adds:

    Section Added
    Identity update_agent, delete_agent
    Messages get_attachment_data
    Domains (new section) list_domains, register_domain, verify_domain, delete_domain

Minor description fixes

  • whoami: notes E2A_AGENT_EMAIL is only required when the account has more than one agent (the hosted endpoint auto-resolves the sole agent at session init).
  • delete_agent / delete_domain: flag the confirm: true required argument.
  • get_attachment_data: corrected from "attachment id" to "0-based attachment index" (the actual schema field is attachment_index: z.number()).
  • E2A_BASE_URL: clarified that the variable has no effect when connecting to the public hosted endpoint.

What's not changing

  • Frontmatter: catalog_title, catalog_description, catalog_icon, catalog_tags: ["mcp"] — all preserved verbatim.
  • Use-cases bullets and the cloud-mode webhook warning — preserved.
  • Existing stdio code blocks — preserved as the first tab under each language.

Verification

  • Tool list count (18) matches the MCP server's actual registerTool calls across mcp/src/tools/agents.ts, messages.ts, domains.ts, and hitl.ts.
  • TypeScript hosted code block uses transportOptions.requestInit.headers (matches the @google/adk StreamableHTTPConnectionParams type definition; the top-level header field is deprecated).
  • Python hosted code block verified against google.adk.tools.mcp_tool.mcp_session_manager.StreamableHTTPConnectionParams.
  • Hosted endpoint reachable: curl https://mcp.e2a.dev/healthz → 200, /.well-known/oauth-protected-resource returns valid metadata.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 22, 2026

Deploy Preview for adk-docs-preview ready!

Name Link
🔨 Latest commit eb4727e
🔍 Latest deploy log https://app.netlify.com/projects/adk-docs-preview/deploys/6a10c4e15149910008729cc3
😎 Deploy Preview https://deploy-preview-1793--adk-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 22, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

The e2a integration page has drifted from what the e2a MCP server
actually ships. Two gaps this PR closes:

1. **Hosted endpoint not documented.** e2a runs a hosted Streamable
   HTTP MCP at https://mcp.e2a.dev/mcp that accepts an API key in
   the Authorization header. The page currently only shows the
   stdio path (npx -y @e2a/mcp-server), which doesn't work for ADK
   agents deployed to Cloud Run since Cloud Run can't host stdio
   MCP child processes. Adds a "Hosted MCP Server" tab to both the
   Python and TypeScript code examples using
   StreamableHTTPConnectionParams.

2. **7 tools missing from the table.** The MCP server now registers
   18 tools but the page lists 11. Adds:
     Identity:  update_agent, delete_agent
     Messages:  get_attachment_data
     Domains:   list_domains, register_domain, verify_domain,
                delete_domain (new section)

Also clarifies a few descriptions:

- `whoami` notes E2A_AGENT_EMAIL is only required for multi-agent
  accounts (the hosted endpoint auto-resolves the sole agent at
  session init).
- `delete_agent` and `delete_domain` flag the `confirm: true`
  required arg.
- `get_attachment_data` uses 0-based `attachment_index`, not an
  attachment ID.
- `E2A_BASE_URL` clarifies the var has no effect when connecting
  to the public hosted endpoint.

Cross-linked the cloud-mode webhook example (already shipped in
the e2a repo, not previously referenced from this page) and the
hosted endpoint URL under Additional resources.

No frontmatter / catalog metadata changes — title, description,
icon, and tags (`["mcp"]`) all unchanged.
google-adk 2.0 stopped re-exporting McpToolset from
`google.adk.tools.mcp_tool`'s package __init__ — only the deep path
`google.adk.tools.mcp_tool.mcp_toolset.McpToolset` still works.

Caught when I actually ran the example against a fresh
google-adk 2.0 install:

  ImportError: cannot import name 'McpToolset' from
  'google.adk.tools.mcp_tool'
  ($VENV/site-packages/google/adk/tools/mcp_tool/__init__.py)

Applies to both the stdio code block and the new hosted code block.
StdioConnectionParams and StreamableHTTPConnectionParams already use
deep paths and continue to work — only McpToolset was broken.
koverholt added 5 commits May 22, 2026 15:43
The claim that google-adk 2.0 stopped re-exporting McpToolset from
google.adk.tools.mcp_tool is incorrect. The __init__.py at
src/google/adk/tools/mcp_tool/__init__.py explicitly re-exports
McpToolset (and MCPToolset) via `from .mcp_toolset import McpToolset`.
It has done so in every release, including v2.0.0.
Copy link
Copy Markdown
Collaborator

@koverholt koverholt left a comment

Choose a reason for hiding this comment

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

Thanks for the updates to the integration page. I made some edits to fix the import paths to match repo conventions, renamed tabs from "Hosted" to "Remote", replaced placeholder patterns to be consistent with other integration pages, and trimmed verbose prerequisites/config/admonition text. Content LGTM, merging.

@koverholt koverholt changed the title docs(integrations): refresh e2a — hosted endpoint + 7 missing tools Update e2a integration page with remote MCP server and 7 tools May 22, 2026
@koverholt koverholt merged commit 7d0a76a into google:main May 22, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants