Chatwoot
БесплатноНе проверенWraps the complete Chatwoot API into 51 tools for managing customer support workflows.
Описание
Wraps the complete Chatwoot API into 51 tools for managing customer support workflows.
README
A complete Model Context Protocol server that wraps all Chatwoot Application APIs into 51 MCP tools. Connect it to n8n, Claude Desktop, Cursor, or any MCP-compatible client to manage customer conversations, contacts, agents, and more through natural language.
Includes a built-in dashboard UI for configuration, tool exploration, and live testing.
Features
- 51 MCP tools covering every Chatwoot Application API endpoint
- Dual transport — SSE (HTTP, for n8n / remote clients) and stdio (for local CLI / Claude Desktop)
- Dashboard UI — configure credentials, browse all tools, and live-test from the browser
- Conversation Filter Builder — advanced multi-condition filtering with AND/OR logic
- File attachments — send files in messages via URL or direct upload
- Webhook event streaming — receive Chatwoot events in real-time via SSE
- Docker-ready — single
docker compose upto deploy (API + UI + MongoDB)
Quick Start
1. Clone & configure
cp .env.example .env
Edit .env with your Chatwoot credentials:
CHATWOOT_URL=https://app.chatwoot.com
CHATWOOT_API_TOKEN=your_access_token
CHATWOOT_ACCOUNT_ID=1
2. Run with Docker Compose
docker compose up --build -d
This starts:
- MCP Server + Dashboard UI on
http://localhost:8001 - MongoDB on port 27017
Open http://localhost:8001 in your browser to access the dashboard.
3. Run without Docker
# Backend
cd backend
pip install -r requirements.docker.txt
cp ../.env.example .env # then edit with your credentials
uvicorn server:app --host 0.0.0.0 --port 8001
# Frontend (separate terminal, for development)
cd frontend
yarn install
REACT_APP_BACKEND_URL=http://localhost:8001 yarn start
Accessing the Dashboard UI
| Deployment | URL |
|---|---|
| Docker Compose | http://localhost:8001 |
| Without Docker (dev) | http://localhost:3000 (React dev server) |
The dashboard has three tabs:
- Tools — Browse all 51 MCP tools by category, search, select and execute with the live testing terminal
- Filters — Visual conversation filter builder with attribute/operator/value dropdowns and AND/OR logic
- Webhooks — Real-time feed of incoming Chatwoot webhook events
MCP Tools Reference
Account (2)
| Tool | Description |
|---|---|
get_account |
Get account details (name, locale, features, settings) |
update_account |
Update account name or locale |
Agents (4)
| Tool | Description |
|---|---|
list_agents |
List all agents (ID, name, email, role, availability) |
add_agent |
Add a new agent (name, email, role) |
update_agent |
Update agent name, role, or availability |
remove_agent |
Remove an agent by ID |
Contacts (7)
| Tool | Description |
|---|---|
list_contacts |
List contacts with pagination and sorting |
create_contact |
Create a contact (name, email, phone, identifier) |
get_contact |
Get contact details by ID |
update_contact |
Update contact name, email, or phone |
delete_contact |
Delete a contact |
search_contacts |
Search by name, email, phone, or identifier |
get_contact_conversations |
Get all conversations for a contact |
Conversations (9)
| Tool | Description |
|---|---|
list_conversations |
List with filters (assignee, status, inbox, team, search) |
create_conversation |
Create new conversation (inbox, contact, assignee, message) |
get_conversation |
Get conversation details by ID |
get_conversation_counts |
Get counts by status and assignee type |
toggle_conversation_status |
Set status: open, resolved, pending, snoozed |
assign_conversation |
Assign to agent and/or team |
get_conversation_labels |
Get labels on a conversation |
add_conversation_labels |
Set labels on a conversation |
filter_conversations_advanced |
Multi-condition filter (status, assignee, inbox, priority, etc.) |
Messages (4)
| Tool | Description |
|---|---|
get_messages |
Get messages in a conversation (with pagination) |
create_message |
Send a text message (outgoing/incoming, private notes) |
delete_message |
Delete a message and its attachments |
create_message_with_attachment |
Send a message with a file attachment via URL |
Inboxes (4)
| Tool | Description |
|---|---|
list_inboxes |
List all inboxes with channel details |
get_inbox |
Get inbox details by ID |
create_inbox |
Create inbox (web_widget, api, etc.) |
update_inbox |
Update inbox name or auto-assignment |
Teams (5)
| Tool | Description |
|---|---|
list_teams |
List all teams |
create_team |
Create a team (name, description) |
get_team |
Get team details |
update_team |
Update team name or description |
delete_team |
Delete a team |
Labels (4)
| Tool | Description |
|---|---|
list_labels |
List all labels |
create_label |
Create label (title, color, sidebar visibility) |
update_label |
Update label title, description, or color |
delete_label |
Delete a label |
Canned Responses (4)
| Tool | Description |
|---|---|
list_canned_responses |
List pre-written message templates |
create_canned_response |
Create template (short_code + content) |
update_canned_response |
Update template short_code or content |
delete_canned_response |
Delete a template |
Custom Attributes (2)
| Tool | Description |
|---|---|
list_custom_attributes |
List attribute definitions (conversation or contact) |
create_custom_attribute |
Create attribute (text, number, date, list, etc.) |
Webhooks (5)
| Tool | Description |
|---|---|
list_webhooks |
List configured webhooks |
create_webhook |
Create webhook (URL + event subscriptions) |
update_webhook |
Update webhook URL or subscriptions |
delete_webhook |
Delete a webhook |
setup_webhook_listener |
Quick-setup: register a webhook for real-time events |
Reports (1)
| Tool | Description |
|---|---|
get_account_reports |
Get analytics (account, agent, inbox, label, team) |
Connecting to n8n
- In n8n, add an MCP Client node
- Set the SSE URL to:
http://<your-server>:8001/api/mcp/sse - The node will auto-discover all 51 tools
Connecting to Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"chatwoot": {
"command": "python",
"args": ["mcp_stdio.py"],
"cwd": "/path/to/backend",
"env": {
"CHATWOOT_URL": "https://app.chatwoot.com",
"CHATWOOT_API_TOKEN": "your_token",
"CHATWOOT_ACCOUNT_ID": "1"
}
}
}
}
Or use the SSE transport:
{
"mcpServers": {
"chatwoot": {
"url": "http://localhost:8001/api/mcp/sse"
}
}
}
Webhook Events
To receive real-time Chatwoot events:
- Register a webhook in Chatwoot (or use the
setup_webhook_listenertool) pointing to:http://<your-server>:8001/api/webhooks/receive - Events are stored in MongoDB (last 500) and streamed via SSE at:
GET /api/webhooks/events - View event history:
GET /api/webhooks/events/history?limit=50
API Endpoints
| Method | Path | Description |
|---|---|---|
GET |
/api/config |
Get current configuration |
POST |
/api/config |
Save Chatwoot configuration |
POST |
/api/config/test |
Test Chatwoot connection |
GET |
/api/tools |
List all 51 MCP tools with metadata |
POST |
/api/tools/execute |
Execute a tool { tool_name, parameters } |
POST |
/api/tools/execute-with-file |
Execute tool with file upload (multipart) |
GET |
/api/mcp/info |
MCP server status and transport info |
GET |
/api/mcp/sse |
MCP SSE transport endpoint |
POST |
/api/webhooks/receive |
Chatwoot webhook receiver |
GET |
/api/webhooks/events |
SSE stream of webhook events |
GET |
/api/webhooks/events/history |
Recent webhook events from DB |
Environment Variables
| Variable | Required | Description |
|---|---|---|
CHATWOOT_URL |
Yes | Chatwoot instance URL (e.g. https://app.chatwoot.com) |
CHATWOOT_API_TOKEN |
Yes | API access token from Chatwoot |
CHATWOOT_ACCOUNT_ID |
Yes | Numeric account ID |
MONGO_URL |
Yes | MongoDB connection string |
DB_NAME |
No | Database name (default: chatwoot_mcp) |
CORS_ORIGINS |
No | Allowed CORS origins (default: *) |
Project Structure
├── Dockerfile # Multi-stage build (Node + Python)
├── docker-compose.yml # Docker Compose with MongoDB
├── .dockerignore # Docker build exclusions
├── .env.example # Environment variable template
├── backend/
│ ├── server.py # FastAPI app + REST API + MCP SSE + static file serving
│ ├── mcp_tools.py # 51 MCP tool definitions
│ ├── mcp_stdio.py # Standalone stdio transport entry point
│ ├── chatwoot_client.py # Async HTTP client for Chatwoot APIs
│ ├── requirements.docker.txt # Python dependencies (Docker)
│ └── .env # Local environment variables
└── frontend/
├── package.json # React dependencies
└── src/
├── App.js # Main app with tab routing
└── components/
├── Sidebar.js # Config panel + MCP status + navigation
├── ToolExplorer.js # Tool browser with categories and search
├── TestTerminal.js # Live testing terminal (dark theme)
├── FilterBuilder.js # Visual conversation filter builder
└── WebhookEvents.js # Real-time webhook event feed
License
MIT
Установка Chatwoot
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/drmoyassine/mcphubFAQ
Chatwoot MCP бесплатный?
Да, Chatwoot MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Chatwoot?
Нет, Chatwoot работает без API-ключей и переменных окружения.
Chatwoot — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Chatwoot в Claude Desktop, Claude Code или Cursor?
Открой Chatwoot на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Chatwoot with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
