Evolution WhatsApp APICAUTION
MCP server for evolution, the non official api for whatsapp
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A Model Context Protocol (MCP) server for Claude that integrates with Evolution API 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
52bbc4fe72a2OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcp-starter --env EVOLUTION_API_KEY=${EVOLUTION_API_KEY} -- npx -y mcp-starter{
"mcpServers": {
"mcp-starter": {
"command": "npx",
"args": [
"-y",
"mcp-starter"
],
"env": {
"EVOLUTION_API_KEY": "${EVOLUTION_API_KEY}"
}
}
}
}Exposed tools (27)
11 read · 14 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
connect_evolution_instance | write | Connect to a WhatsApp instance to start a session |
create_evolution_instance | write | Create a new WhatsApp instance using Evolution API |
delete_evolution_instance | destructive | Permanently delete a WhatsApp instance from the server |
fetch_evolution_instances | read | Get a list of all WhatsApp instances or a specific one by name |
find_chats | read | Find WhatsApp chats with optional filtering by ID, name, or archive status |
find_contacts | read | Find WhatsApp contacts with optional filtering by ID or name |
find_group_by_jid | read | Find a WhatsApp group by its JID (Group ID) |
find_group_members | read | Find all members of a WhatsApp group by its JID (Group ID) |
get_connection_state | read | Check the connection state of a WhatsApp instance (connected or disconnected) |
get_evolution_info | read | Get information about the Evolution API server, including version and status |
get_evolution_settings | read | Retrieve the current behavior settings for a WhatsApp instance including call handling, message receipts, and online status settings |
get_evolution_webhook | read | Retrieve the current webhook configuration for a WhatsApp instance |
logout_evolution_instance | read | Logout from a WhatsApp instance (disconnect without deleting the instance) |
restart_evolution_instance | destructive | Restart a WhatsApp instance to reset connections or apply changes |
send_buttons | write | Send a message with buttons to a WhatsApp number |
send_list | write | Send an interactive list message to a WhatsApp number with selectable options organized in sections |
send_location | write | Send a location message to a WhatsApp number |
send_media | write | Send a media message (image, video, audio, document) to a WhatsApp number |
send_plain_text | write | Send a plain text message to a WhatsApp number |
send_poll | write | Send a poll message to a WhatsApp number with options to vote |
send_status | write | Post a WhatsApp status (story) with text, image, or audio |
send_sticker | write | Send a sticker to a WhatsApp number |
send_whatsapp_audio | write | Send a WhatsApp audio message (PTT/voice note) to a WhatsApp number |
set_evolution_presence | write | Set WhatsApp online/offline presence status for a specific instance |
set_evolution_settings | write | Configure behavior settings for a WhatsApp instance such as call handling, message receipts, and online status |
set_evolution_webhook | write | Configure a webhook for a WhatsApp instance to receive notifications for specified events |
some_function | read | An example tool |
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (10)
bun.lockb
delete_evolution_instance, restart_evolution_instance
import type { ToolRegistration } from "../../types";import { makeJsonSchema } from "../../utils/makeJsonSchema";import { evolutionApi } from "../../utils/evolutionApi";import type { ToolRegistration } from "../../types";import { makeJsonSchema } from "../../utils/makeJsonSchema";@modelcontextprotocol/sdk, @types/json-schema, axios, pretty-js-log, zod, zod-to-json-schema, @types/bun, @types/node
| | **POST Change Session Status** | https://doc.evolution-api.com/v2/api-reference/typebot/change-session-status |
| | **POST Change Status Session** | https://doc.evolution-api.com/v2/api-reference/flowise/change-status-session |
Gates applied: no_behavioural_pass.
52bbc4fe72a2full audit observations/trust-audit/mcp-server/aiteks-ltda__evolution-whatsapp-api.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 52bbc4fe72a2 | CAUTION | B | 89 | first audit |
Questions
What is the Evolution WhatsApp API MCP server?
MCP server for evolution, the non official api for whatsapp
What tools does Evolution WhatsApp API expose?
27 in total: 11 read-only, 14 that write, and 2 that can delete or overwrite (delete_evolution_instance, restart_evolution_instance). Every one is listed on this page with its risk.
Is Evolution WhatsApp API safe to connect to an agent?
With care. The audit graded it B (89/100) and found 10 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Evolution WhatsApp API need?
It reads EVOLUTION_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Evolution WhatsApp API run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as mcp-starter.
How current is this page?
The grade is for one exact copy of the source (52bbc4fe72a2), read on 2026-10-08. The repository is watched and re-audited when it changes.