An MCP (Model Context Protocol) server that provides tools for interacting with the Crisp customer support platform. Use it with Claude Code or any MCP-compatible client to manage support conversations, send messages, and more.
git clone https://github.com/getlate-dev/crisp-mcp.git
cd crisp-mcp
npm install
npm run buildYou'll need to create a Crisp Marketplace plugin to get API credentials. Here's how:
- Go to Crisp Marketplace
- Click "Create a Plugin" (you need a Crisp account)
-
Fill in the basic plugin info:
- Name: Something like "My MCP Integration" (only visible to you)
- Description: "Personal MCP server integration"
- Category: Select "Automation"
- Privacy: Keep it private (unless you want to publish)
-
Click "Create Plugin"
After creating the plugin:
- Go to your plugin's settings page
- Navigate to the "Tokens" section
- You'll find:
- Plugin ID (this is your
CRISP_IDENTIFIER) - Plugin Secret Key (this is your
CRISP_KEY)
- Plugin ID (this is your
- Go to your Crisp Dashboard
- Click on Settings (gear icon)
- Go to Website Settings
- Your Website ID is in the URL:
app.crisp.chat/website/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/ - Or find it under Setup Instructions > Website ID
Back in the Marketplace plugin settings, you need to enable the required scopes:
-
Go to your plugin's "Permissions" tab
-
Enable these scopes:
website:conversation:sessions- Read conversationswebsite:conversation:messages- Read/write messageswebsite:conversation:states- Change conversation stateswebsite:conversation:routing- Assign conversationswebsite:conversation:metas- Read/write metadatawebsite:operators:list- List team memberswebsite:visitors:list- List visitors
-
Click "Save"
- Go to the "Installations" tab in your plugin settings
- Click "Add Installation"
- Select your website
- Confirm the installation
You're now ready to use the MCP server!
Set these environment variables:
| Variable | Description | Example |
|---|---|---|
CRISP_IDENTIFIER |
Your plugin ID from Marketplace | ab1c2d3e-4f5g-6h7i-8j9k-0l1m2n3o4p5q |
CRISP_KEY |
Your plugin secret key | a1b2c3d4e5f6... (long string) |
CRISP_WEBSITE_ID |
Your website ID | 12345678-1234-1234-1234-123456789012 |
Add this to your Claude Code MCP settings (~/.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"
}
}
}
}Then restart Claude Code. You can now use natural language to manage your Crisp conversations:
- "Show me unresolved support tickets"
- "What's the context of conversation session_abc123?"
- "Reply to that customer saying we're looking into it"
- "Mark that conversation as resolved"
| Tool | Description |
|---|---|
list_conversations |
List conversations with optional filtering (page, search, unresolved, unread) |
get_unresolved_conversations |
Get all unresolved conversations (paginated) |
get_conversation |
Get detailed info about a specific conversation |
search_conversations |
Search conversations by text query |
| Tool | Description |
|---|---|
get_messages |
Get messages from a conversation |
get_conversation_with_messages |
Get conversation and messages formatted for analysis |
send_message |
Send a message (text or internal note) to a conversation |
| Tool | Description |
|---|---|
set_conversation_state |
Change state (pending, unresolved, resolved) |
update_conversation_meta |
Update metadata (email, nickname, subject, segments) |
add_segments |
Add tags/segments to a conversation |
remove_segments |
Remove tags/segments from a conversation |
| Tool | Description |
|---|---|
assign_conversation |
Assign to a specific operator |
block_conversation |
Block a conversation |
unblock_conversation |
Unblock a conversation |
delete_conversation |
Permanently delete a conversation |
| Tool | Description |
|---|---|
get_operators |
Get list of support team operators |
get_visitors |
Get list of current website visitors |
| URI | Description |
|---|---|
crisp://conversations/unresolved |
List of all unresolved support conversations |
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- Check that your
CRISP_IDENTIFIERandCRISP_KEYare correct - Make sure you've installed the plugin on your website
- Your plugin may be missing required permissions
- Go to Marketplace > Your Plugin > Permissions and enable the necessary scopes
- Double-check your
CRISP_WEBSITE_ID - Make sure the plugin is installed on that specific website
MIT