Crisp MCP服务器
MCP(模型上下文协议)服务器,提供与 脆的 客户支持平台。将其与Claude Code或任何兼容MCP的客户端一起使用,以管理支持对话、发送消息等。
安装
git clone https://github.com/getlate-dev/crisp-mcp.git
cd crisp-mcp
npm install
npm run build获取您的Crisp API证书
您需要创建一个Crisp Marketplace插件来获得API证书。方法如下:
第一步:进入市场
- 首选 Crisp市场
- 点击 “创建插件” (您需要一个Crisp账户)
第二步:创建插件
- 填写插件基本信息:
- 名字:类似于“我的MCP集成”(仅对您可见) - 描述:“个人MCP服务器集成” - 类别:选择“自动化” - 隐私:保持私密(除非你想发布)
- 点击 “创建插件”
步骤3:获取您的凭据
创建插件后:
- 转到插件的设置页面
- 导航到 “代币” 部分
- 你会发现:
- 插件ID (这是你的 CRISP_IDENTIFIER) - 插件密钥 (这是你的 CRISP_KEY)
步骤4:获取您的网站ID
- 去你的 Crisp仪表板
- 点击 设置 (齿轮图标)
- 首选 网站设置
- 你的 网站ID 位于URL中:
app.crisp.chat/website/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/ - 或者在下面找到它 安装说明 > 网站ID
步骤5:配置插件权限
回到Marketplace插件设置中,您需要启用所需的作用域:
- 转到您的插件 “权限” 标签
- 启用这些作用域:
- website:conversation:sessions -阅读对话 - website:conversation:messages -读/写消息 - website:conversation:states -更改对话状态 - website:conversation:routing -分配对话 - website:conversation:metas -读取/写入元数据 - website:operators:list -列出团队成员 - website:visitors:list -列出访问者
- 点击 “保存”
步骤6:在您的网站上安装插件
- 去 “安装” 插件设置中的选项卡
- 点击 “添加安装”
- 选择您的网站
- 确认安装
您现在可以使用MCP服务器了!
配置
设置这些环境变量:
| 变量 | 描述 | 示例 |
|---|---|---|
CRISP_IDENTIFIER | 您在Marketplace中的插件ID | ab1c2d3e-4f5g-6h7i-8j9k-0l1m2n3o4p5q |
CRISP_KEY | 您的插件密钥 | a1b2c3d4e5f6... (长串) |
CRISP_WEBSITE_ID | 您的网站ID | 12345678-1234-1234-1234-123456789012 |
使用Claude代码
将此添加到您的Claude Code MCP设置中(~/.claude/settings.json):
{
"mcpServers": {
"crisp": {
"command": "node",
"args": ["/path/to/crisp-mcp/dist/index.js"],
"env": {
"CRISP_IDENTIFIER": "your-plugin-id",
"CRISP_KEY": "your-plugin-secret-key",
"CRISP_WEBSITE_ID": "your-website-id"
}
}
}
}然后重新启动Claude Code。您现在可以使用自然语言来管理您的Crisp对话:
- “显示未解决的支持票”
- “会话session_abc123的上下文是什么?”
- “回复客户说我们正在调查”
- “将该对话标记为已解决”
可用工具
对话发现
| 工具 | 说明 |
|---|---|
list_conversations | 带过滤器的分页列表:搜索、分段、仅未解析、未读、已分配给、仅未分配、仅提及、订单等待。退货 { conversations, page_number, has_more, next_page }. |
get_unresolved_conversations | 跨多个页面(平面阵列)的所有未解决问题。 |
conversations_awaiting_reply | 最佳分流工具。 未解决,客户正在等待操作员的回复。先排序最长等待时间。 |
conversations_assigned_to_me | 分配给特定操作员的对话(传递user_id)。 |
conversations_by_segment | 标记有特定片段的对话(例如。 refund, bug). |
search_conversations | 纯文本搜索。 |
对话详细信息
| 工具 | 说明 |
|---|---|
get_conversation | 关于特定对话的详细信息。 |
get_messages | 消息历史记录。文件/图像/音频消息的URL清晰地显示出来。 |
get_conversation_with_messages | 用于分析的纯文本格式转录本(小上下文)。 |
get_rich_context | 沉重的背景:对话+消息+Crisp People个人资料+同一客户过去的对话+自定义数据,所有这些都在一次通话中完成。取代4-5次往返。 |
消息传递
| 工具 | 说明 |
|---|---|
send_message | 发送文本或内部注释。支持 mentions 用于@标记运算符。 |
send_file_message | 通过URL附加文件(无需上传——传递任何公开托管的URL)。 |
对话状态
| 工具 | 说明 |
|---|---|
set_conversation_state | 更改状态(待定、未解决、已解决)。 |
update_conversation_meta | 更新元数据(电子邮件、昵称、主题、片段)。 |
add_segments / remove_segments | 添加或删除标签。 |
对话操作
| 工具 | 说明 |
|---|---|
assign_conversation | 分配给特定操作员(按user_id)。 |
resolve_conversation / reopen_conversation | 一枪化名 set_conversation_state. |
block_conversation / unblock_conversation | 阻止/取消阻止对话。 |
delete_conversation | 永久删除。 |
实时导航
| 工具 | 说明 |
|---|---|
set_composing_state | 向客户发送“打字…”指示器(开始/停止)。约6秒后自动过期。 |
mark_messages_read | 将操作员侧的未读计数器标记为已读,这样在分流时对话就不会重新出现。 |
get_conversation_url | 为对话构建Crisp web应用程序URL——这对Slack/Linear升级很有用。 |
人员/联系人
| 工具 | 说明 |
|---|---|
find_person_by_email | 通过电子邮件查找Crisp People的个人资料。如果不匹配,则返回null。 |
find_conversations_for_email | 快捷方式:在一次通话中解析人员+列出他们的对话。 |
get_person | 完整资料由 people_id. |
get_person_conversations | 这个人曾经进行过的所有对话。 |
get_person_data | 自定义数据字典(由您的应用程序推送的计划、订阅等)。 |
团队与访客
| 工具 | 说明 |
|---|---|
get_operators | 键入操作员列表(user_id、电子邮件、角色、可用性)。 |
find_operator_by_email | 从操作员的电子邮件中解析其user_id(在之前很有用 assign_conversation). |
get_visitors | 具有地理位置+页面上下文的活跃网站访问者。 |
可靠性
HTTP客户端在指数回退的情况下自动重试 429 (价格有限)和 5xx 回应,尊重 Retry-After 标题(如果存在)。默认情况下最多重试4次。防止Crisp加载时操作员回复的无声下降。
可用资源
| URI | 描述 |
|---|---|
crisp://conversations/awaiting-reply | 客户当前正在等待操作员回复的未解决对话(最长等待时间优先)。 |
crisp://conversations/unresolved | 所有未解决的支持对话列表。 |
示例
列出未解决的对话
Use the list_conversations tool with unresolved_only: true获得完整上下文的支持票
Use the get_conversation_with_messages tool with the session_id回复客户
Use the send_message tool with session_id and content添加内部注释(客户不可见)
Use the send_message tool with type: "note"将票标记为已解决
Use the set_conversation_state tool with state: "resolved"发展
# Watch mode for development
npm run dev
# Build for production
npm run build
# Run the server directly
npm start故障排除
“Crisp API错误:401未经授权”
- 检查你的
CRISP_IDENTIFIER和CRISP_KEY是正确的 - 确保您已在网站上安装了该插件
“Crisp API错误:403禁止”
- 您的插件可能缺少所需的权限
- 转到Marketplace>您的插件>权限并启用必要的作用域
“找不到网站”
- 仔细检查你的
CRISP_WEBSITE_ID - 确保插件安装在特定网站上
许可证
麻省理工学院

