A2A Client MCP Server
Enables interaction with a Coder Agent to generate code based on natural language instructions, as shown in the example where it creates a Python function for calculating Fibonacci sequences.
Supports running the MCP server in a Docker container, allowing for containerized deployment with proper environment configuration.
Enables installation and management of the A2A Client MCP Server through the npm package manager, supporting global installation or direct execution with npx.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@A2A Client MCP Serverask the agent to summarize this document about climate change"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-serverConfiguration
Environment Variables
A2A_ENDPOINT_URL: URL of the A2A agent to connect to (default: "http://localhost:41241")
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 agenttaskId(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 agenttaskId(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 agenta2a://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 watchLicense
MIT
Available Tools
5 toolsa2a_agent_infoC
Get information about the connected A2A agents
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | No | Optional agent ID. If not provided, information for all agents will be returned |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ID of the task to cancel | |
| agentId | Yes | ID of the agent that is handling the task |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ID of the task to retrieve | |
| agentId | Yes | ID of the agent that handled the task |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to send to the agent | |
| taskId | No | Optional task ID. If not provided, a new UUID will be generated | |
| agentId | No | Optional agent ID. If not provided, the first available agent will be used |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to send to the agent | |
| taskId | No | Optional task ID. If not provided, a new UUID will be generated | |
| agentId | No | Optional agent ID. If not provided, the first available agent will be used | |
| maxUpdates | No | Maximum number of updates to receive (default: 10) |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
- First observed
a2a_agent_info - First observed
a2a_cancel_task - First observed
a2a_get_task - First observed
a2a_send_task - First observed
a2a_send_task_subscribe
TDQS
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.
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.
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.
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
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn 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.14MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to run a deterministic orchestration loop with decomposition, subagent execution, and review feedback across multiple LLM backends.55MIT
- AlicenseAqualityCmaintenanceMCP server for multi-agent AI systems providing mailbox messaging, A2A task delegation, resource coordination, and a web dashboard.2117MIT
- AlicenseNot gradedqualityBmaintenanceMCP 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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