MCP Evolution API
# MCP Evolution API
A Model Context Protocol (MCP) server for Claude that integrates with [Evolution API](https://doc.evolution-api.com/) for WhatsApp automation.
## Overview
This MCP server allows Claude to interact with WhatsApp through the Evolution API, enabling capabilities like:
- Managing WhatsApp instances
- Sending various types of messages
- Working with contacts and groups
- Configuring webhooks and settings
## π Project Structure
```
mcp-evo-api/
βββ src/
β βββ tools/ # MCP tools implementation for Evolution API
β βββ utils/ # Shared utilities, including Evolution API client
β βββ main.ts # Server entry point
β βββ types.ts # Shared type definitions
βββ scripts/ # Helper scripts
βββ biome.json # Linting configuration
βββ tsconfig.json # TypeScript configuration
βββ docker-compose.yml # Docker Compose configuration
βββ Dockerfile # Docker build configuration
βββ package.json # Project dependencies
```
## π Quick Setup
### Environment Setup
Create a `.env` file with your Evolution API credentials:
```
EVOLUTION_API_URL=https://evo-api.decisao.ai/
EVOLUTION_API_KEY=REPLACE_WITH_YOUR_REAL_KEY
```
Note: you provided the API URL and a key. For security, never commit real API keys to the repository or share them publicly. Use a local `.env` file or a secrets manager in production.
### π Deployment Options
| Environment | Steps | Command |
|-------------|-------|---------|
| **Local Development** | 1. Clone and install<br>2. Run in dev mode | `git clone https://github.com/aiteks-ltda/mcp-evo-api.git && cd mcp-evo-api && bun install`<br>`bun run dev` |
| **Local Production** | 1. Clone and install<br>2. Build and run | `git clone https://github.com/aiteks-ltda/mcp-evo-api.git && cd mcp-evo-api && bun install`<br>`bun run build && bun run dist/main.js` |
| **Docker Compose** | Run with Docker Compose | `git clone https://github.com/aiteks-ltda/mcp-evo-api.git && cd mcp-evo-api`<br>`docker-compose up -d` |
| **Docker** | Build and run container | `docker run -d -p 3000:3000 -e EVOLUTION_API_URL=yoururl -e EVOLUTION_API_KEY=yourkey --name mcp-evo-api ghcr.io/aiteks-ltda/mcp-evo-api:latest` |
### Claude Desktop Configuration
Add this to your Claude Desktop config file (typically located at `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"evo-api": {
"command": "node",
"args": [
"/path/to/your/mcp-evo-api/dist/main.js"
]
}
}
}
```
If using the Docker deployment:
```json
{
"mcpServers": {
"evo-api": {
"url": "http://localhost:3000"
}
}
}
```
## π Implementation Status
| Category | Implemented | Pending Implementation |
|----------|-------------|------------------------|
| **Core API** | β
Get Information<br>β
Create Instance<br>β
Fetch Instances<br>β
Instance Connect<br>β
Restart Instance<br>β
Connection State<br>β
Logout Instance<br>β
Delete Instance<br>β
Set Presence | β Check is WhatsApp |
| **Webhook & Settings** | β
Set Webhook<br>β
Find Webhook<br>β
Set Settings<br>β
Find Settings | |
| **Messaging** | β
Send Plain Text<br>β
Send Status<br>β
Send Media<br>β
Send WhatsApp Audio<br>β
Send Sticker<br>β
Send Location<br>β
Send Contact<br>β
Send Reaction<br>β
Send Poll<br>β
Send List<br>β
Send Buttons | β Mark Message As Read<br>β Mark Message As Unread<br>β Archive Chat<br>β Delete Message for Everyone<br>β Update Message<br>β Send Presence (Chat Ctrl) |
| **Chat & Contacts** | β
Find Contacts<br>β
Find Chats | β Update Block Status<br>β Fetch Profile Picture URL<br>β Get Base64<br>β Find Messages<br>β Find Status Message |
| **Groups** | β
Find Group by JID<br>β
Fetch All Groups<br>β
Find Group Members | β Create Group<br>β Update Group Picture<br>β Update Group Subject<br>β Update Group Description<br>β Fetch Invite Code<br>β Revoke Invite Code<br>β Send Group Invite<br>β Find Group by Invite Code<br>β Update Group Members<br>β Update Group Setting<br>β Toggle Ephemeral<br>β Leave Group |
| **Profile Settings** | | β Fetch Business Profile<br>β Fetch Profile<br>β Update Profile Name<br>β Update Profile Status<br>β Update Profile Picture<br>β Remove Profile Picture<br>β Fetch Privacy Settings<br>β Update Privacy Settings |
| **Bot Integrations** | | β Typebot Integrations<br>β OpenAI Integrations<br>β Evolution Bot<br>β Dify Bot<br>β Flowise Bot |
| **Other Integrations** | | β Chatwoot<br>β Websocket<br>β SQS<br>β RabbitMQ |
For more information, refer to the [Evolution API Documentation](https://doc.evolution-api.com/).
## Examples
- `examples/hono-bun/` - pequeno servidor Hono para Bun (exemplo salvo). Veja `examples/hono-bun/README.md` para instruΓ§Γ΅es de execuΓ§Γ£o.
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools, as there are no other tools to compare it against. The single tool's purpose is inherently distinct by default.
A single tool cannot demonstrate inconsistency, as there are no other tool names to compare it to. The naming pattern for 'hello_tool' (snake_case) is consistent within the set, albeit trivially so.
A single tool is generally too few for most server purposes, as it limits functionality and suggests an incomplete or trivial implementation. While it might be appropriate for a minimal 'hello world' server, it is inadequate for any substantive domain coverage.
With only one tool named 'hello_tool', it is impossible to infer a meaningful domain or assess coverage. There are obvious gaps, as no CRUD operations, lifecycle management, or typical API interactions are present, making the surface severely incomplete for any practical purpose.