Skip to main content
Glama
tesla0225

A2A Client MCP Server

by tesla0225
README.md
# 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

## Installation

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

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

## Configuration

### 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

```bash
npm run build
npm link
```

```json
{
  "mcpServers": {
    "a2a-client": {
      "command": "npx",
      "args": ["-y", "a2a-client-mcp-server"],
      "env": {
        "A2A_ENDPOINT_URL": "http://localhost:41241"
      }
    }
  }
}
```

### Docker

Build the Docker image:

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

Configure Claude Desktop:

```json
{
  "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

```bash
# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run watch
```

## License

MIT

TDQS

A3.5/5.0

Scored across 5 tools

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