Community SDK Submission: a2a-to-mcp (A2A v1.0.1 agents as MCP 2026-07-28 tools)
- Dominant language
- Shell
- Stars
- 25.7k
- Forks
- 2.6k
- Avg merge
- 3d 6h
- Merged PRs (30d)
- 16
Description
Submitting `a2a-to-mcp` for the ecosystem lists in `docs/community.md`, following the "Want to add your SDK?" note in that file.
**Repository:** https://github.com/AmirK-S/a2a-to-mcp
**Published package:** https://www.npmjs.com/package/a2a-to-mcp (`a2a-to-mcp`, version 0.1.0)
### What it is
`a2a-to-mcp` exposes A2A v1.0.1 agents as tools on a stateless MCP 2026-07-28 server. It is pointed at one or more agents by their agent card, and any MCP client then sees four tools, each taking the agent alias as an argument: discover the agent, send it a message, read a task, cancel a task. It translates parts, artifacts, task states and typed errors between the two protocols, and reports in the result envelope what a mapping could not carry.
- A2A side: client only, `1.0` (`A2A-Version: 1.0`), JSON-RPC binding, on `@a2a-js/sdk` 1.1.0 pinned exactly.
- MCP side: `2026-07-28` through `server/discover`, no session, per-request `_meta`, on `@modelcontextprotocol/server` 2.0.0 pinned exactly; `2025-11-25` through `initialize` on the same endpoint for older clients.
- The `io.modelcontextprotocol/tasks` extension is served on the modern route for long-running A2A tasks, with the A2A `TaskState` to MCP `TaskStatus` mapping documented row by row, including why `AUTH_REQUIRED` is deliberately not mapped to `input_required`.
### One thing for the maintainers to decide first
This is a protocol bridge, not a language SDK: it does not help anyone build an A2A agent, and the language it is written in is already covered by the official `a2a-js` SDK, so "Community SDKs" may be the wrong list for it. If that is the case, the natural home would be a line in the "A2A Integrations" list, or any tools list the maintainers prefer to open. Happy to be placed wherever it fits, or to be told it does not belong on the page at all.
### The six requirements
1. **Spec compliance.** A2A client conformance to v1.0.1 through the official JavaScript SDK, exercised against the official `helloworld` sample from `a2aproject/a2a-samples` in CI, and against a deterministic in-repository fixture agent that drives every task state, the two-turn input-required cycle, cancellation, the four part kinds and the nine typed errors. On the MCP side, the official conformance suite (`@modelcontextprotocol/conformance` 0.2.0-alpha.11) is replayed for both revisions, with a committed baseline where every expected failure carries its reason; the protocol checks that apply to a bridge are green, `wire-schema-valid` included on both wires. The A2A TCK is not applicable here: it validates A2A servers, and this package is an A2A client.
2. **Published package on a standard registry.** npm, `a2a-to-mcp`, version 0.1.0, Node 20 or later.
3. **Documentation.** A README covering configuration, the four tools, the result contract, the state and part mapping tables and what is deliberately not carried; an end-of-life note stating what breaks at the next revision of either protocol; an annotated end-to-end session trace; and a conformance report with its baseline.
4. **Tests with CI.** GitHub Actions on every push and pull request: typecheck, build, unit and integration suites on Node 20, 22 and 24, plus a job that starts the official `helloworld` A2A sample and runs the bridge against it. The conformance replay is a committed report regenerated by `npm run conformance`.
5. **Apache 2.0 license.** Yes, Apache-2.0, declared in `LICENSE` and in `package.json`.
6. **Active maintenance.** First release, 0.1.0. Both protocol dependencies are pinned to exact versions on purpose, and the repository states in writing what each future revision of either protocol will break.
### Suggested entry, in the format of the existing ones
```markdown
### 🔌 TypeScript, a2a-to-mcp
 [](https://www.npmjs.com/package/a2a-to-mcp)
[AmirK-S/a2a-to-mcp](https://github.com/AmirK-S/a2a-to-mcp) · A2A spec v1.0.1 · Bridge exposing A2A agents as MCP 2026-07-28 tools, with the MCP tasks extension for long-running tasks.
```
Or, as a single line for the "A2A Integrations" list:
```markdown
- [a2a-to-mcp](https://github.com/AmirK-S/a2a-to-mcp): exposes A2A v1.0.1 agents as MCP 2026-07-28 tools
```
Tell me which list you want it in and I will open the `docs:` pull request against `docs/community.md`.
- [x] I agree to follow this project's Code of Conduct
Contributor guide
Assessment
This issue has not been assessed yet.