agent-builder.build (and any long-running skill) takes minutes — LLM
loop + sandbox tests + deploy + wait-for-live-card. A plain JSON POST
to /mcp gets killed by ingress idle timeouts (~60s on traefik) and the
gateway sees "fetch failed" while the upstream is still running.
UpstreamAgent.callTool now negotiates ``Accept: text/event-stream`` on
tools/call. We drain SSE frames, return the final tools/call result,
and fall back to plain JSON if the upstream doesn't speak SSE (older
a2a-pack). Elicit relaying isn't wired yet; for now any
elicitation/create frame is ignored.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
On login the gateway now captures user.id from /v1/auth/login, derives
the user's MinIO bucket (user-<id>-files), and persists both in
~/.a2a/credentials.json. UpstreamAgent.callTool injects
``params._meta = { cp_jwt, cp_url, bucket }`` on every tools/call so
upstream agents see the same caller context the platform orchestrator
provides. Unauthenticated clients omit _meta — back-compat preserved.
Requires a2a-pack with the matching _meta handler in
``a2a_pack/mcp/server.py`` (companion change in apps/a2a).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds an "a2amcp" bin (alongside the existing "a2a-mcp" for back-compat)
so that npx -y a2amcp resolves the binary by package name. Without it
npx fell back unreliably when no bin matched.
Also rips the hardcoded "0.1.0" out of cli.ts and gateway.ts and reads
the version from package.json — that was why serverInfo lagged behind
the published tag. Renames the user-facing command in help / error
strings / README from a2a-mcp to a2amcp; the legacy bin stays for
existing scripts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drops the @a2amcp/mcp scope so the npx invocation collapses to
`npx -y a2amcp` — one token instead of two, no scope to register or
remember.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The @a2a scope on npm is owned by a different account, so PUT against
the registry 404'd. Move to @a2amcp/mcp (scope we control) and bump the
version so the publish workflow has a fresh tag to push.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Local MCP server that exposes any number of deployed A2A agents to
Claude Code, Cursor, Windsurf, and other MCP clients. Reuses the
~/.a2a/credentials.json token written by the Python a2a CLI. Adding
or removing agents is a single ~/.a2a/mcp.json edit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>