Skip to main content
Glama
tesla0225

A2A Client MCP Server

by tesla0225

A2A Client MCP Server

An MCP server that acts as a client to the Agent-to-Agent (A2A) protocol, allowing LLMs to interact with A2A agents through the Model Context Protocol (MCP).

Features

  • Connect to any A2A-compatible agent

  • Send and receive messages

  • Track and manage tasks

  • Support for streaming responses

  • Query agent capabilities and metadata

Related MCP server: agentloop

Installation

# Install globally
npm install -g a2a-client-mcp-server

# Or run directly with npx
npx a2a-client-mcp-server

Configuration

Environment Variables

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

NPX

npm run build
npm link
{
  "mcpServers": {
    "a2a-client": {
      "command": "npx",
      "args": ["-y", "a2a-client-mcp-server"],
      "env": {
        "A2A_ENDPOINT_URL": "http://localhost:41241"
      }
    }
  }
}

Docker

Build the Docker image:

docker build -t a2a-client-mcp-server .

Configure Claude Desktop:

{
  "mcpServers": {
    "a2a-client": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "A2A_ENDPOINT_URL",
        "a2a-client-mcp-server"
      ],
      "env": {
        "A2A_ENDPOINT_URL": "http://localhost:41241"
      }
    }
  }
}

Available Tools

a2a_send_task

Send a task to an A2A agent

  • message (string): Message to send to the agent

  • taskId (string, optional): Task ID (generated if not provided)

a2a_get_task

Get the current state of a task

  • taskId (string): ID of the task to retrieve

a2a_cancel_task

Cancel a running task

  • taskId (string): ID of the task to cancel

a2a_send_task_subscribe

Send a task and subscribe to updates (streaming)

  • message (string): Message to send to the agent

  • taskId (string, optional): Task ID (generated if not provided)

  • maxUpdates (number, optional): Maximum updates to receive (default: 10)

a2a_agent_info

Get information about the connected A2A agent

  • No parameters required

Resources

The server provides access to two MCP resources:

  • a2a://agent-card: Information about the connected A2A agent

  • a2a://tasks: List of recent A2A tasks

Example Usage

This example shows how to use A2A Client MCP Server to interact with a Coder Agent:

First, let me explore what A2A agent we're connected to.

I'll use the a2a_agent_info tool to check the agent details.

The agent provides a coding service that can generate files based on natural language instructions. Let's create a simple Python script.

I'll use the a2a_send_task tool to send a request:

Task: "Create a Python function that calculates the Fibonacci sequence"

Now I can check the task status using a2a_get_task with the task ID from the previous response.

The agent has created the requested Python code. I can now retrieve and use this code in my project.

Development

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run watch

License

MIT

Available Tools

5 tools
a2a_agent_infoC

Get information about the connected A2A agents

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNoOptional agent ID. If not provided, information for all agents will be returned

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool retrieves information but lacks details on permissions, rate limits, response format, or whether it's a read-only operation. This is a significant gap for a tool with no annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized, making it easy to parse quickly.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what information is returned, how agents are defined, or any behavioral traits like error handling. For a tool with no structured data support, this leaves too many gaps for effective agent use.

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?

The input schema has 100% description coverage, clearly documenting the optional 'agentId' parameter. The description doesn't add any parameter semantics beyond what the schema provides, such as examples or constraints, so it meets the baseline score of 3 where the schema does the heavy lifting.

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 description clearly states the tool's purpose with a specific verb ('Get') and resource ('information about the connected A2A agents'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate itself from sibling tools like 'a2a_get_task', which might also retrieve information but about tasks rather than agents.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where this tool is preferred, such as for agent-specific queries versus task-related ones, leaving the agent to infer usage from tool names alone.

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

a2a_cancel_taskC

Cancel a running task

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesID of the task to cancel
agentIdYesID of the agent that is handling the task

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It doesn't disclose whether cancellation is reversible, what permissions are needed, how the system responds to cancellation requests, or any side effects on the agent or task state.

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, efficient sentence with zero wasted words. It's appropriately sized for a simple cancellation operation and front-loads the essential action.

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 mutation tool (cancellation) with no annotations and no output schema, the description is incomplete. It should explain what happens after cancellation, success/failure indicators, or error conditions, but provides only the basic action.

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 100%, so the schema fully documents both parameters (taskId and agentId). The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high coverage.

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 description clearly states the action ('Cancel') and target ('a running task'), providing specific verb+resource. However, it doesn't distinguish this tool from potential sibling alternatives like 'a2a_get_task' or 'a2a_send_task' in terms of purpose differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., task must be running), exclusions, or relationships to sibling tools like 'a2a_get_task' for checking task status before cancellation.

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

a2a_get_taskC

Get the current state of a task

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesID of the task to retrieve
agentIdYesID of the agent that handled the task

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. While 'Get' implies a read operation, it doesn't specify if this requires authentication, has rate limits, returns error states, or what the output format looks like (e.g., JSON structure). For a tool with two required parameters and no output schema, this is a significant gap in transparency.

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, efficient sentence ('Get the current state of a task') that is front-loaded and wastes no words. It directly communicates the core purpose without unnecessary elaboration, making it easy to parse quickly.

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?

Given the complexity (2 required parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like authentication needs, error handling, or return values, which are crucial for a tool that retrieves task states. This leaves significant gaps for an AI agent to understand how to use it effectively.

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?

The input schema has 100% description coverage, with clear documentation for taskId and agentId. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain why both IDs are required or how they relate). Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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 description 'Get the current state of a task' clearly states the verb ('Get') and resource ('task'), specifying it retrieves the 'current state' rather than just the task itself. However, it doesn't differentiate from sibling tools like a2a_agent_info (which might get agent info) or a2a_send_task (which sends tasks), leaving room for ambiguity about when to use this versus others.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a taskId from a previous operation) or exclusions (e.g., not for creating or modifying tasks). With siblings like a2a_cancel_task and a2a_send_task, this lack of context could lead to incorrect tool selection.

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

a2a_send_taskC

Send a task to an A2A agent

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesMessage to send to the agent
taskIdNoOptional task ID. If not provided, a new UUID will be generated
agentIdNoOptional agent ID. If not provided, the first available agent will be used

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Send a task') but does not explain what happens after sending—e.g., whether it's asynchronous, if it returns a response, or any error conditions. This leaves significant gaps in understanding 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 a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core action without unnecessary elaboration.

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?

Given the complexity of sending tasks in an A2A system, no annotations, and no output schema, the description is insufficient. It fails to address key aspects like response format, error handling, or interaction with sibling tools, leaving the agent with incomplete context for effective use.

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?

The input schema has 100% description coverage, so the schema already documents all parameters (message, taskId, agentId) with details like optionality and defaults. The description adds no additional semantic meaning beyond what the schema provides, resulting in a baseline score of 3.

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 description clearly states the action ('Send') and the resource ('a task to an A2A agent'), making the purpose understandable. However, it does not differentiate this tool from its sibling 'a2a_send_task_subscribe', which likely has a similar purpose but with subscription functionality, leaving room for improvement in specificity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'a2a_send_task_subscribe' or other siblings. The description lacks context on prerequisites, such as agent availability or task management scenarios, offering minimal usage direction.

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

a2a_send_task_subscribeB

Send a task and subscribe to updates (streaming)

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesMessage to send to the agent
taskIdNoOptional task ID. If not provided, a new UUID will be generated
agentIdNoOptional agent ID. If not provided, the first available agent will be used
maxUpdatesNoMaximum number of updates to receive (default: 10)

TDQS

B3.2/5.0
Behavior2/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 the streaming behavior, which is a key trait, but lacks details on permissions, rate limits, error handling, or what 'updates' entail (e.g., format, frequency). For a tool with mutation ('send') and streaming, this is a significant gap in behavioral context.

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, efficient sentence that front-loads the core action and key feature (streaming). There is no wasted text, making it highly concise and well-structured for quick understanding.

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?

Given the tool's complexity (mutation + streaming) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., stream format, success indicators) or provide sufficient behavioral details, leaving gaps for an AI agent to operate effectively.

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 100%, so the schema fully documents all 4 parameters. The description adds no parameter-specific information beyond what's in the schema, such as examples or usage tips. Baseline 3 is appropriate when the schema handles all parameter semantics.

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 description clearly states the action ('Send a task and subscribe to updates') and specifies the streaming nature, which distinguishes it from the sibling 'a2a_send_task'. However, it doesn't explicitly mention what resource (e.g., agent, task system) is involved, leaving some ambiguity about the context.

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 usage by mentioning 'subscribe to updates (streaming)', suggesting it's for real-time monitoring, but it doesn't explicitly state when to use this tool versus alternatives like 'a2a_send_task' (which likely doesn't stream) or 'a2a_get_task' (which might fetch static results). No exclusions or prerequisites are provided.

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. Dates show when Glama detected each change.

  1. 5 tool updates
    • First observeda2a_agent_info
    • First observeda2a_cancel_task
    • First observeda2a_get_task
    • First observeda2a_send_task
    • First observeda2a_send_task_subscribe

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: a2a_agent_info retrieves agent metadata, a2a_send_task initiates a task, a2a_send_task_subscribe adds streaming, a2a_get_task checks status, and a2a_cancel_task stops execution. No overlap exists—the descriptions and names make the boundaries unambiguous.

Naming Consistency5/5

All tools follow a consistent 'a2a_verb_noun' pattern with snake_case, using clear verbs like get, send, and cancel. This predictable naming helps agents easily understand and select the right tool for each operation.

Tool Count5/5

With 5 tools, this server is well-scoped for managing A2A agent tasks. It covers core operations (info, send, get, cancel) plus an advanced streaming option, avoiding bloat while providing essential functionality for the domain.

Completeness4/5

The toolset covers the basic task lifecycle (send, monitor, cancel) and agent discovery, with a2a_send_task_subscribe adding streaming for real-time updates. A minor gap is the lack of tools for listing or managing multiple tasks or agents beyond basic info, but agents can work around this with the provided tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides agent-powered tools, each using an LLM agent loop to iteratively call FlowMCP schema tools to solve complex problems. It can be mounted as Express middleware and supports A2A protocol for agent-to-agent communication.
    14
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server that enables AI agents to run a deterministic orchestration loop with decomposition, subagent execution, and review feedback across multiple LLM backends.
    55
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables agents to dynamically switch between multiple AI models (OpenAI, Anthropic, Google, etc.) with unified protocol-driven configuration and capability discovery.
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tesla0225/mcp-a2a'

If you have feedback or need assistance with the MCP directory API, please join our Discord server