Skip to main content
Glama

mcp-a2a-bridge

一个 MCP 服务器,可让编码代理 — GitHub Copilot CLI、Claude Code、Codex 和 Hermes — 调用远程 A2A 代理。它还包含一个可选的只读活动仪表板。

仓库:https://github.com/TonPC64/mcp-a2a-bridge

采用 MIT 许可证 授权。

关于编码代理的说明,请先阅读 AGENTS.md,然后使用 skills/setup/SKILL.md 进行安装,或使用 skills/contribute/SKILL.md 进行更改和提交 PR。

仪表板 UI 展示

可选的仪表板采用未来感 Liquid Glass 界面,包含紧凑的代理卡片、实时任务活动、双栏任务摘要、状态指示器和响应式布局。此截图使用选用式前端模拟数据模式,因此无需连接真实代理或暴露日志即可安全重现。

A2A Bridge 仪表板桌面展示

要在本地运行相同的模拟 UI:

cd /absolute/path/to/mcp-a2a-bridge/dashboard
npm ci
npm run dev:mock -- --host 127.0.0.1

模拟模式仅用于 UI 开发和截图;正常构建使用实时仪表板 API 和 SSE。

Related MCP server: agentkit-mesh

快速开始

选择你的安装配置

两种配置都需要 Python 3.11 或更高版本以及 uv。可选的仪表板前端需要 Node.js 24.15 或更高版本;CI 使用最新的 Node.js 24 版本。

仅 MCP

仅安装并运行 MCP 桥接器。这不需要 Node.js/npm 或仪表板前端构建。

git clone https://github.com/TonPC64/mcp-a2a-bridge.git mcp-a2a-bridge
cd mcp-a2a-bridge
uv sync --locked

MCP + 仪表板

安装可选的仪表板 Web 运行时,然后构建其打包的前端资源。Node.js 和 npm 仅在此构建(或前端开发)时需要,运行已构建好的仪表板则不需要。

git clone https://github.com/TonPC64/mcp-a2a-bridge.git mcp-a2a-bridge
cd mcp-a2a-bridge
uv sync --extra dashboard --locked
npm --prefix dashboard ci
npm --prefix dashboard run build

对于开发与测试,请使用 uv sync --all-extras --locked;它包含仪表板测试套件所需的 Python 包。下面的命令使用 /absolute/path/to/mcp-a2a-bridge。请将其替换为你克隆的绝对路径;不要复制其他用户的路径。

配置 A2A 代理

在仓库根目录创建 .a2a-agents.json:

{
  "agents": {
    "example-agent": {
      "url": "https://agent.example.invalid",
      "headers": {
        "Authorization": "Bearer REPLACE_WITH_YOUR_TOKEN"
      }
    }
  }
}

使用 A2A 代理的基本 URL;桥接器会自动请求其 /.well-known/agent-card.json。当代理不需要身份验证时,请移除 Authorization(或使用空的 headers 对象)。注册表可能包含机密信息,因此请勿提交它,并在适当情况下限制其文件权限。

注册表位置按以下顺序解析:

  1. A2A_BRIDGE_CONFIG

  2. 桥接器进程当前目录中的 .a2a-agents.json

  3. ~/.config/a2a-bridge/agents.json

对于在仓库之外启动 MCP 命令的主机,请在该主机的 MCP 环境中将 A2A_BRIDGE_CONFIG 设置为绝对路径。你也可以在运行时使用 a2a_add_agent 添加已验证的代理;默认情况下它会写入已解析的注册表文件。

注册 MCP 服务器

每个主机都应运行相同的本地检出命令:

uv run --directory /absolute/path/to/mcp-a2a-bridge mcp-a2a-bridge

这会使用上面创建的可编辑(editable)安装。请使用以下可移植路径占位符配置主机。

GitHub Copilot CLI — 将此服务器添加到 ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "a2a": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/mcp-a2a-bridge",
        "mcp-a2a-bridge"
      ]
    }
  }
}

Claude Code:

claude mcp add a2a -- uv run --directory /absolute/path/to/mcp-a2a-bridge mcp-a2a-bridge

Codex — 将此添加到 ~/.codex/config.toml:

[mcp_servers.a2a]
command = "uv"
args = ["run", "--directory", "/absolute/path/to/mcp-a2a-bridge", "mcp-a2a-bridge"]

**Hermes:**使用其 MCP 服务器注册 UI 或命令,选择 stdio 服务器,并提供命令 uv 及以下参数:

run --directory /absolute/path/to/mcp-a2a-bridge mcp-a2a-bridge

注册后重启主机,然后调用 a2a_list_agents 以确认注册表可用且代理可访问。

工具

工具

用途

a2a_list_agents

列出代理及其技能和可达性

a2a_send_message

发送消息;使用 task_id 继续任务

a2a_get_task

轮询之前启动的任务

a2a_cancel_task

取消正在运行的任务

a2a_add_agent

通过 URL 注册代理

a2a_send_message 最多等待 timeout_s(默认 60 秒)。如果任务仍在运行,它会返回 done: false 并附带 task_id;可使用 a2a_get_task 进行轮询。如果代理返回 state: "input_required",请使用相同的 task_id 再次调用 a2a_send_message。

仪表板

可选的独立仪表板显示已配置的代理、其状态/技能,以及同一台机器上桥接器进程的实时任务活动。它是只读的:绝不会向代理发送消息。

在启动之前安装 dashboard 配置并构建资源:

cd /absolute/path/to/mcp-a2a-bridge
uv sync --extra dashboard --locked
npm --prefix dashboard ci
npm --prefix dashboard run build
uv run mcp-a2a-bridge-dashboard

默认情况下,它只监听 127.0.0.1:9100。请在同一个机器上打开 http://127.0.0.1:9100。

前端模拟数据

要在没有 Python 服务或 SSE 的情况下运行仪表板 UI,请使用选用式模拟模式。它包含用于截图的代表性代理和任务活动:

cd /absolute/path/to/mcp-a2a-bridge/dashboard
npm ci
npm run dev:mock -- --host 0.0.0.0

在同一网络上打开 Vite URL。VITE_USE_MOCK_DATA=true 仅由前端构建/开发服务器使用;正常的 npm run dev 和生产构建继续使用实时仪表板 API 和 SSE。

对于每个希望其活动显示在仪表板中的桥接器进程,请启用上报。将此环境变量添加到 MCP 服务器配置中(或在手动启动时添加):

A2A_BRIDGE_DASHBOARD=1 uv run --directory /absolute/path/to/mcp-a2a-bridge mcp-a2a-bridge

没有该标志的桥接器进程会将活动保存在内存中,并且不会出现在共享仪表板中。仪表板可以在此之前或之后启动。

环境变量

默认值

用途

A2A_BRIDGE_CONFIG

—

代理 JSON 注册表的绝对路径

A2A_BRIDGE_DASHBOARD

未设置(关闭)

设置为 1 以持久化此桥接器进程的活动

A2A_BRIDGE_ACTIVITY_DB

~/.config/a2a-bridge/activity.sqlite3

共享 SQLite 活动数据库

A2A_BRIDGE_ACTIVITY_SOURCE

remote

兼容进程写入活动的来源标签

A2A_BRIDGE_DASHBOARD_HOST

127.0.0.1

仪表板绑定地址

A2A_BRIDGE_DASHBOARD_PORT

9100

仪表板端口

A2A_BRIDGE_DASHBOARD_TOKEN

未设置(关闭)

可选的不记名令牌,用于保护仪表板和 API

A2A_BRIDGE_HERMES_AUDIT

未设置

对 Hermes 的 a2a_audit.jsonl 的只读覆盖

HERMES_HOME

未设置

当未设置覆盖时,用于查找 $HERMES_HOME/a2a_audit.jsonl

LAN 部署

可以通过设置明确的非回环(non-loopback)绑定,有意将仪表板暴露在受信任的 LAN 上而无需令牌。此模式没有身份验证,因此仅在私有、受信任的网络上使用;切勿将其暴露到公共互联网。

对于受保护的 LAN 访问,请设置强令牌,并将服务置于具有自身网络访问控制的 TLS 终止反向代理之后:

export A2A_BRIDGE_DASHBOARD_HOST=0.0.0.0
export A2A_BRIDGE_DASHBOARD_TOKEN="$(openssl rand -hex 32)"
uv run mcp-a2a-bridge-dashboard

设置令牌后,仪表板 HTML、静态资源、API 路由和 SSE 路由都需要它。浏览器用户只需在 /login 输入一次;由此产生的 HttpOnly、同站(same-site)会话 cookie 让 EventSource 可以正常重新连接。API 客户端也可以改为发送 Authorization: Bearer <token>。该服务绝不会记录令牌。令牌可验证访问身份,但不会加密流量,因此请勿在不受信任的网络中使用直接的 HTTP LAN 端点;请在反向代理处使用 HTTPS。

对于 macOS,launchd/com.example.a2a-bridge-dashboard.plist 模板可以在登录时运行仪表板。在将其作为 LaunchAgent 安装之前,请替换其中的 __REPO__ 和 __HOME__ 占位符。

仪表板前端开发

只有在前端开发或重建其打包资源时才需要 Node.js 24.15+ 和 npm:

cd /absolute/path/to/mcp-a2a-bridge/dashboard
npm ci
npm run dev

Vite 会打印开发 URL(通常是 http://localhost:5173)。使用 npm run build 构建 Python 仪表板所需的资源。

Copilot A2A 服务器

捆绑的服务器需要经过身份验证的 copilot CLI:

copilot-a2a-agent --port 9002 --cwd /path/to/default/repository

它绑定到 127.0.0.1,因为它使用 --allow-all-tools 运行 Copilot。其传入活动可以使用相同的选用式共享 SQLite 存储,并在仪表板中显示来源和目标字段。

仪表板还可以在不修改 Hermes 的情况下读取 Hermes 的原生审计文件。它首先检查 A2A_BRIDGE_HERMES_AUDIT,然后检查 $HERMES_HOME/a2a_audit.jsonl,最后检查 ~/.hermes/a2a_audit.jsonl。

开发与测试

在仓库根目录运行 Python 测试套件:

uv sync --all-extras --locked
uv run pytest -v

从 dashboard/ 运行仪表板测试或进行生产仪表板构建:

npm test
npm run build

CI 在 Python 3.11 上运行 Python 测试套件,验证 uv.lock,并在最新的 Node.js 24 版本上运行仪表板安装、测试和生产构建。

tests/test_integration.py 在进程内运行一个 A2A 代理,并端到端地测试桥接器。

Available Tools

5 tools
a2a_add_agentA

Register a new A2A agent by its base URL.

The agent card is fetched first, so an unreachable URL is rejected instead of being saved. With persist=true the agent is written to the shared registry file and stays available in future sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
nameYes
headersNo
persistNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and it does meaningful work: it discloses that the agent card is fetched first, unreachable URLs are rejected instead of saved, and persist=true writes to a shared registry file. It does not cover every edge case, but it provides substantial insight into the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded sentences with no filler. The core action comes first, and the following sentences provide useful behavioral details without repeating the schema or wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the main registration flow and persistence behavior, which is enough for a basic call. But it omits important context such as the purpose of headers, what the tool returns after successful registration, and the exact behavior when persist is false, leaving it short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for missing parameter explanations. It adds real meaning for 'url' (base URL) and 'persist' (shared registry file), but it leaves 'name' and especially 'headers' entirely unexplained, and does not clarify what persist=false means for session lifetime.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a concrete action ('Register') and a specific resource ('a new A2A agent'), and adds the mechanism ('by its base URL'). This makes the tool's purpose immediately clear and it is obviously distinct from sibling tools like list, send, get, and cancel, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool through 'Register a new A2A agent,' and it gives some context about persistence across sessions. However, it never explicitly contrasts this tool with alternatives or states when not to use it, so the agent has to infer the usage boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

a2a_cancel_taskB

Cancel a running A2A task and return its final state.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
task_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose that cancellation returns a final state, which is useful, but it omits side effects, idempotency, error behavior, or whether cancellation is irreversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the core operation and the return value without any filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-changing tool with no annotations and no output schema, this description is too thin. Missing details include parameter semantics, handling of non-running tasks, failure modes, and any irreversible consequences, leaving the agent to guess important call behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the 'agent' or 'task_id' parameters beyond their names. Neither the schema nor the description explains what values these accept or how they relate to the cancellation operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('cancel') and a specific resource ('A2A task'), and clarifies that it returns the task's final state. This clearly distinguishes it from sibling tools like a2a_get_task or a2a_send_message, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for active/running tasks, giving reasonable contextual usage. However, it does not explicitly state when not to use it, mention alternatives, or explain what to do if the task is already completed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

a2a_get_taskA

Get the current state and output of a previously started A2A task.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
task_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns state and output, and 'get' implies a read-only operation. However, it does not mention error behavior for unknown task IDs, whether the call is idempotent, or whether it affects task execution in any way.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff. It efficiently communicates the tool's purpose and the key precondition that the task must already exist.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and zero parameter descriptions, the tool description is too sparse. An agent cannot reliably know what value 'agent' expects, what the returned state/output structure looks like, or what happens when a task does not exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The task_id parameter is reasonably inferable from the tool purpose, but 'agent' is ambiguous: it is not explained as an identifier, name, or what agent list it refers to. The description adds no parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a specific resource ('current state and output of a previously started A2A task'). It is clearly distinguishable from siblings like a2a_send_message, a2a_cancel_task, a2a_list_agents, and a2a_add_agent, none of which retrieve task state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously started' implies this should be used to poll or inspect tasks that were already kicked off, which gives a minimal context. However, it provides no explicit guidance about when to choose this over sibling tools, when not to use it, or whether it is intended for polling workflows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

a2a_list_agentsA

List configured A2A agents with their skills and reachability.

Set refresh=true to re-fetch agent cards that were previously cached.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It usefully discloses caching behavior and the effect of refresh, but it does not state that the operation is read-only, describe the return structure, or mention any potential side effects or prerequisites. Some relevant behavior remains implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the tool's purpose and result scope; the second explains the only parameter. No filler or duplication of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single optional-parameter list operation, this description is largely complete. It identifies what the result includes, notes the caching behavior, and explains the parameter. A fully explicit return-format statement would be nice, but it is not essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does by explaining that refresh=true re-fetches cached agent cards. It stops short of explaining the exact behavior when refresh is false (e.g., serving from cache), but the meaning is strongly implied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List'), a clear resource ('configured A2A agents'), and the relevant output facets ('skills and reachability'). It is immediately distinguishable from its siblings, which send messages or manage tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The refresh guidance is clear operational context ('Set refresh=true to re-fetch agent cards that were previously cached'). However, there is no explicit statement about when to prefer this tool over alternatives such as a2a_send_message or a2a_get_task; the distinction is only implied by the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

a2a_send_messageA

Send a message to an A2A agent and return its reply.

Set provider to "litellm-auto" or "github" when the target agent supports provider selection. The selected provider is carried in the message for the local Copilot A2A agent; other agents may ignore it. Pass task_id to continue an existing task, for example to answer an agent that returned state="input_required". If the agent is still working when timeout_s elapses, this returns done=false with a task_id to poll rather than blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
messageYes
task_idNo
providerNo
timeout_sNo
context_idNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the full behavioral burden. It discloses the asynchronous/non-blocking timeout behavior, the done=false + task_id polling contract, and the nuance that the provider field may be ignored by non-local agents. It does not mention auth, error cases, or side effects, but it covers the most important behavioral traits for correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then supplies only high-value operational details: provider selection, task continuation, and polling behavior. Every sentence earns its place, and the length is appropriate for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is useful for a complex async tool, but there is no output schema and no annotations, so the description must explain the return contract. It partially does by mentioning 'reply,' 'done=false,' and 'task_id,' yet it never describes the full response shape, error behavior, or the purpose of context_id. An agent could still be uncertain about the exact payload format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning for provider, task_id, and timeout_s, and the required agent and message parameters are inferable from 'send a message to an A2A agent.' However, context_id is never explained, leaving one of six parameters semantically undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Send a message to an A2A agent and return its reply.' This clearly distinguishes the tool from its siblings (a2a_list_agents, a2a_get_task, a2a_cancel_task, a2a_add_agent), all of which serve different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use it: sending messages, continuing existing tasks via task_id, responding to state="input_required", and handling non-blocking timeouts. It does not explicitly name a2a_get_task as the polling alternative, but strongly implies the polling workflow by mentioning 'to poll rather than blocking.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observeda2a_add_agent
    • First observeda2a_cancel_task
    • First observeda2a_get_task
    • First observeda2a_list_agents
    • First observeda2a_send_message

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: listing agents, sending messages, getting task state, cancelling tasks, and adding agents. No overlap or ambiguity between them.

Naming Consistency5/5

All tools follow a consistent 'a2a_' prefix followed by a verb_noun pattern (list_agents, send_message, get_task, cancel_task, add_agent). Naming is predictable and uniform.

Tool Count5/5

Five tools is well-scoped for an A2A bridge: listing, messaging, task management, and agent registration cover the core functionality without being excessive or sparse.

Completeness4/5

The tool surface covers the essential operations for an A2A bridge. A remove_agent or update_agent tool is missing, but it's not critical; the set supports the primary workflows adequately.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that gives AI agents the ability to discover, match with, and build relationships with other autonomous agents. Supports agent registration, matchmaking, messaging, shared goals, relationship lifecycle management, and real-time event subscriptions.
    22 npm
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables agent-to-agent discovery and delegation via MCP, with tools for registering agents, discovering them by keyword matching, and delegating tasks over HTTP.
    4
    9 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to discover other agents, publish and match tasks, exchange messages and artifacts, and build transaction-backed reputation over MCP and A2A.
    -