跳过安装。2 分钟内即可运行。
在 cloud.anythingmcp.com 开始免费试用,一键添加 Chatwoot,然后将你的 AI 客户端(Claude、ChatGPT、Copilot 或 Cursor)指向生成的 MCP 端点。无需 Docker,无需 git clone,无需任何工程经验。
摘要
Chatwoot 全渠道客服收件箱,支持云端版和自托管版:来自 WhatsApp、电子邮件、网页聊天和社交渠道的会话与消息,以及联系人、标签、客服人员、团队、快捷回复和客服报表(首次响应、解决时间和回复时间)。回复、私密备注和新建会话也已包含,但安装时处于关闭状态。
试试这样问
Chatwoot 的示例提示
点击任意提示即可复制,然后粘贴到 Claude、ChatGPT、Cursor、Gemini、Copilot 或 OpenClaw 中,在该连接器上运行。
Claude 是 AI,可能会出错。请核对回答。
💡 无需安装? 直接使用 cloud.anythingmcp.com。 登录、点击 Connectors → Chatwoot、粘贴凭证、生成 MCP API key,即可完成。无 Docker、无
git clone、无本地服务器。
Chatwoot + Cursor
Chatwoot 全渠道客服收件箱,支持云端版和自托管版:来自 WhatsApp、电子邮件、网页聊天和社交渠道的会话与消息,以及联系人、标签、客服人员、团队、快捷回复和客服报表(首次响应、解决时间和回复时间)。回复、私密备注和新建会话也已包含,但安装时处于关闭状态。
前提条件
完整的设置说明已内置在连接器中 (在 store 中选择连接器时可见)。所需环境变量:
CHATWOOT_URL, CHATWOOT_API_TOKEN, CHATWOOT_ACCOUNT_ID
步骤 1 — 获取凭证
设置大约需要 2 分钟。你需要一个 Chatwoot 账号(Chatwoot Cloud 或自托管均可),以及 AI 要代为操作的那个用户的访问令牌。
- 用该用户登录 Chatwoot。客服人员只能看到自己所属收件箱的会话,也无法读取报表,所以想看到全貌请使用管理员。
- 点击头像,进入 Profile Settings,把页面底部的 Access Token 复制到
CHATWOOT_API_TOKEN。它不会过期,可以在同一页面重置。 - 把
CHATWOOT_URL设为你打开 Chatwoot 的地址:Chatwoot Cloud 用https://app.chatwoot.com,自托管则用你自己的域名,例如https://chat.example.com。不要带路径,不要/app,也不要/api。 - 把
CHATWOOT_ACCOUNT_ID设为浏览器地址栏中/app/accounts/后面的数字:https://app.chatwoot.com/app/accounts/3/dashboard就是 3。 - 安装连接器并运行
chatwoot_get_profile:它会显示令牌对应的用户、其角色,以及令牌能访问的所有账号及其 ID。
账号令牌,不是 Platform API:自托管超级管理员的 Platform App 令牌(/platform/api)在这里无效。连接器使用的是单个账号的 Chatwoot Application API。
自托管且位于 nginx 之后:令牌通过 api_access_token 请求头传递,而 nginx 默认会丢弃带下划线的请求头,除非设置了 underscores_in_headers on;。这时即使令牌正确,每次调用也都会返回 401。只在私有网络中运行的自托管 Chatwoot,AnythingMCP Cloud 无法访问;这种情况下请在该网络内部署自托管的 AnythingMCP。
可读取的内容:账号以及令牌对应的用户;你的收件箱(WhatsApp、电子邮件、网页小部件、API、Instagram、Telegram 等)及其成员;客服人员和管理员及其在线状态;团队及其成员;标签、快捷回复(canned responses)和自定义属性定义;会话的状态、优先级、收件箱、标签、联系人、负责人和团队,可以列表查看、只统计数量,或按条件筛选,例如某日期之后创建且分配给某位客服的会话;会话中的消息,包括私密备注和附件;按姓名、邮箱、电话或标识符查找联系人,以及他们在所有收件箱中的会话;还有客服报表:某时段的汇总并附上一时段对比、某项指标随时间的变化、客服人员、收件箱或团队的横向对比,以及当前仍未处理的开放会话。收件箱的渠道密钥和用户本人的访问令牌会从返回结果中移除。
时间和数值:会话和消息的时间以及报表的时段都是以秒为单位的 Unix 时间戳(UTC),AI 在告诉你具体时间前会先换算。报表中的首次响应、解决时间和回复时间以秒为单位。
每次修改前都会询问:chatwoot_set_conversation_labels。Chatwoot 会替换会话的整个标签列表,所以 AI 会先读取当前标签,再连同新标签一起提交(要移除时则去掉那一个再提交)。标签必须已在账号中存在。AI 会先展示会话和新的标签列表,等你同意后再执行。
安装时关闭:chatwoot_send_message(回复,或只有客服能看到的私密备注)和 chatwoot_create_conversation。回复或首条消息会立即通过 WhatsApp、电子邮件或聊天发给客户,因此需要管理员有意识地开启。即便开启后,AI 也会先展示文本和收件人,等你同意。在 WhatsApp Cloud API 收件箱中,自由文本只能在联系人最后一条消息后的 24 小时内送达;超出这个时间窗口,Chatwoot 需要已审核的模板,而本连接器不发送模板。
限制:会话每页 25 条,联系人每页 15 条,消息每次 20 条,所以 AI 会逐页翻阅;如果只需要一个数字,它会直接统计而不是列出全部。报表和实时统计需要管理员令牌。
常见错误:401 表示令牌错误或已被重置,或者 nginx 丢弃了请求头。每次调用都返回 404,通常是 CHATWOOT_URL 或 CHATWOOT_ACCOUNT_ID 填错了;只有某个会话返回 404,说明该用户看不到这个 ID。对于不是管理员的客服人员,报表会返回 401 或 403。
该连接器不使用 Platform API,不发送 WhatsApp 模板,不会解决、重新分配或删除已有会话,也不会编辑或删除联系人。
步骤 2 — 安装 adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
步骤 3 — 在 Cursor 中添加连接器
你的服务器 URL: 在 AnythingMCP 中打开 MCP Servers → 此连接器所在的服务器,复制它的 URL(
https://cloud.anythingmcp.com/mcp/…)。本指南中出现YOUR_SERVER_ID的地方都用它替换。
Cursor 从 ~/.cursor/mcp.json 读取 MCP 服务器。添加以下条目:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- 在 AnythingMCP 的 MCP Servers → 你的服务器 → API keys 中创建 MCP API 密钥,并用它替换
YOUR_MCP_API_KEY。 - 保存文件并重启 Cursor。
- 打开 Cursor → Settings → MCP,确认
anythingmcp已列出并处于已连接状态。 - 开始对话,智能体现在可以调用
Chatwoot的工具。
可用工具
| Tool | What it does |
|---|---|
chatwoot_get_profile | Get the user behind the access token: id, name, email, role, availability and every account the token can reach (accounts[].id and name) |
chatwoot_get_account | Get the Chatwoot account configured in CHATWOOT_ACCOUNT_ID: name, locale, domain, support e-mail, status, enabled features and custom… |
chatwoot_list_inboxes | List the inboxes (channels) of the account: id, name, channel type (WhatsApp, API, web widget, e-mail, Instagram, Telegram...), phone… |
chatwoot_list_inbox_agents | List the agents who are members of one inbox (id, name, email, role, availability) |
chatwoot_list_agents | List the agents and administrators of the account: id, name, email, role (agent or administrator), availability (online, busy, offline) and… |
chatwoot_list_teams | List the teams of the account (id, name, description, whether auto-assignment is on) |
chatwoot_list_team_members | List the agents in one team (id, name, email, role, availability) |
chatwoot_list_labels | List the labels defined in the account: id, title, description and color |
chatwoot_list_canned_responses | List the canned responses (saved replies) of the account: id, short code and content |
chatwoot_list_custom_attributes | List the custom attribute definitions of the account for conversations (attribute_model 0) or contacts (1): key, display name, type and… |
chatwoot_list_conversations | List conversations, 25 per page, newest activity first, with counts (mine, assigned, unassigned, all) |
chatwoot_count_conversations | Count conversations without listing them: mine_count, assigned_count, unassigned_count and all_count for a status, inbox, team or label |
chatwoot_filter_conversations | Filter conversations with Chatwoot's advanced filter, 25 per page: a list of conditions on status, assignee_id, inbox_id, team_id… |
chatwoot_get_conversation | Get one conversation by its id (the number shown in the Chatwoot URL): status, priority, inbox, labels, contact, assignee, team, custom and… |
chatwoot_list_messages | List the messages of a conversation, oldest first: the latest 20 by default, or 20 older than before. message_type 0 = incoming (from the… |
chatwoot_list_contacts | List contacts with an e-mail, phone number or identifier, 15 per page: id, name, e-mail, phone, identifier, custom and additional… |
chatwoot_search_contacts | Search contacts by name, e-mail, phone number or identifier (case-insensitive, partial), 15 per page. meta.has_more tells whether another… |
chatwoot_get_contact | Get one contact: name, e-mail, phone, identifier, custom and additional attributes, last activity and the inboxes the contact is reachable… |
chatwoot_list_contact_conversations | List the conversations of one contact across all inboxes, with status, labels, assignee and last message |
chatwoot_get_report_summary | Get the totals of a period for the account, an agent, an inbox, a label or a team: conversations, incoming and outgoing messages… |
chatwoot_get_report_timeseries | Get one metric over time as [{value, timestamp}] buckets, for the account, an agent, an inbox, a label or a team, grouped by hour, day… |
chatwoot_get_summary_by | Compare agents, inboxes or teams over a period, one row each: conversations, resolved and handled conversations, average resolution, first… |
chatwoot_get_live_conversation_stats | Right now: how many conversations are open, unattended (no reply yet) and unassigned for the whole account (type account), or open and… |
chatwoot_send_message | Send a reply in an existing conversation, or add a private note that only agents see (private true) |
chatwoot_set_conversation_labels | Set the labels of a conversation |
chatwoot_create_conversation | Start a new conversation with an existing contact in an inbox, optionally with a first message, status, assignee and team |
示例提示
- “现在有多少开放会话还没有分配给任何人?哪些客服手上有未回复的聊天?”
- “读一下会话 1284,帮我总结客户想要什么,以及我们已经答应了他什么。”
- “找到联系人 [email protected],列出她在 WhatsApp 和邮件中的所有会话。”
- “对比我们客服过去 30 天的表现:处理的会话数、首次响应时间和解决时间。”
- “给会话 1284 加上‘退款’标签,保留其他标签不变。先把新的标签列表给我看。”
FAQ
Cursor 免费套餐支持自定义 MCP 服务器吗? 支持,Hobby、Pro 和 Business 套餐均可使用 MCP。
下一步
这份指南对你有帮助吗?