loading…
Search for a command to run...
loading…
An MCP server that enables full CRUD operations for Intercom Help Center articles, including support for multilingual content and state management. It allows us
An MCP server that enables full CRUD operations for Intercom Help Center articles, including support for multilingual content and state management. It allows users to list, retrieve, create, and update articles through natural language commands in MCP-compatible clients.
Intercom MCP server for Help Center content management and CS workflow automation.
v0.7.0 - Added delete_article, create_collection, list_admins; optimized search_articles response
get_article - Get a single article by IDlist_articles - List articles with paginationsearch_articles - Search articles by keywords with highlighting supportcreate_article - Create new articles with multilingual contentupdate_article - Update existing articles with partial updatesdelete_article - Delete an article permanentlylist_collections - List all Help Center collectionsget_collection - Get a single collection by IDupdate_collection - Update collection info and translationsdelete_collection - Delete a collection (permanent)create_collection - Create new Help Center collectionslist_admins - List workspace admins (useful for finding valid author_id)reply_conversation - Reply to a conversation as an adminadd_conversation_note - Add an internal note to a conversationclose_conversation - Close a conversationupdate_ticket_state - Update a ticket's stategit clone https://github.com/kaosensei/intercom-mcp.git
cd intercom-mcp
npm install
npm run build
| Variable | Required | Description |
|---|---|---|
INTERCOM_ACCESS_TOKEN |
✅ Always | Your Intercom API access token |
INTERCOM_ADMIN_ID |
✅ For CS tools | Admin ID used for reply_conversation and add_conversation_note when admin_id parameter is not provided |
If you're using Claude Code CLI, you can easily add the MCP server:
claude mcp add --transport stdio intercom-mcp \
--env INTERCOM_ACCESS_TOKEN=<your_token> \
--env INTERCOM_ADMIN_ID=<your_admin_id> \
-- node /ABSOLUTE/PATH/TO/intercom-mcp/dist/index.js
Replace:
<your_token> with your Intercom Access Token/ABSOLUTE/PATH/TO/ with your actual project pathTo verify it's configured:
claude mcp list
Alternatively, edit your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this configuration:
{
"mcpServers": {
"intercom-mcp": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/intercom-mcp/dist/index.js"
],
"env": {
"INTERCOM_ACCESS_TOKEN": "your_intercom_access_token_here",
"INTERCOM_ADMIN_ID": "your_admin_id_here"
}
}
}
}
Important:
/ABSOLUTE/PATH/TO/intercom-mcp with your actual project pathyour_intercom_access_token_here with your actual tokenyour_admin_id_here with your Intercom admin ID (required for CS tools)Completely quit Claude Desktop and restart it.
Once configured, you can use these commands in Claude Desktop:
List Intercom articles
or
Show me the first 20 Intercom articles
Get Intercom article with ID 9876543
Search for Intercom articles about "subscription"
or
Search published articles containing "播客" with highlighted matches
or
Find articles with keyword "訂閱" in Chinese
Create a new Intercom article titled "Getting Started Guide" with content "Welcome to our platform" by author ID 123456, save as draft
Update article 9876543 and change its state to published
List all Intercom Help Center collections
Get collection with ID 14608214
Update collection 14608214 and add Japanese translation
Delete collection 16036040
One of the key features of v0.4.0 is the ability to manage multilingual collections efficiently.
You can easily add translations to collections that are missing certain languages:
Update collection 14608214 and add the missing Japanese translation: name "アカウント管理", description "アカウント設定を管理する"
Check which collections are missing translations:
List all collections and show me which ones are missing Japanese translations
Then update them one by one or create a plan to update multiple collections.
After updating, verify the changes:
Get collection 14608214 and show me all available translations
get_articleGet a single article by ID.
Parameters:
id (string, required): Article IDExample:
{
"id": "9876543"
}
list_articlesList articles with pagination.
Parameters:
page (number, optional): Page number (default: 1)per_page (number, optional): Articles per page (default: 10, max: 50)Example:
{
"page": 1,
"per_page": 20
}
search_articlesSearch for articles using keywords. Supports full-text search across article content with multilingual support (English, Chinese, Japanese, etc.).
Parameters:
phrase (string, optional): Search keywords/phrase to find in articlesstate (string, optional): Filter by article state - "published", "draft", or "all" (default: "all")help_center_id (string, optional): Filter by specific Help Center IDExample (Search by keyword):
{
"phrase": "subscription"
}
Example (List all drafts, no keyword needed):
{
"state": "draft"
}
Example (Chinese keyword search):
{
"phrase": "訂閱制",
"state": "all"
}
Response includes:
total_count: Total number of matching articlesarticles: Array of summary fields per article (id, title, description, state, url, author_id, created_at, updated_at, parent_id, parent_type)Use get_article to fetch the full content of a specific article.
Use Cases:
create_articleCreate a new article with multilingual support.
Parameters:
title (string, required): Article titlebody (string, required): Article content in HTML formatauthor_id (number, required): Author ID (must be a valid Intercom team member)description (string, optional): Article descriptionstate (string, optional): "draft" or "published" (default: "draft")parent_id (string, optional): Collection or section IDparent_type (string, optional): "collection" (default)translated_content (object, optional): Multilingual contentExample (Simple):
{
"title": "Getting Started Guide",
"body": "<p>Welcome to our platform</p>",
"author_id": 123456,
"state": "draft"
}
Example (Multilingual):
{
"title": "Getting Started Guide",
"body": "<p>Welcome to our platform</p>",
"author_id": 123456,
"state": "published",
"translated_content": {
"zh-TW": {
"title": "入門指南",
"body": "<p>歡迎使用我們的平台</p>",
"author_id": 123456,
"state": "published"
},
"ja": {
"title": "スタートガイド",
"body": "<p>プラットフォームへようこそ</p>",
"author_id": 123456,
"state": "published"
}
}
}
update_articleUpdate an existing article. Only provided fields will be updated.
Parameters:
id (string, required): Article IDtitle (string, optional): Updated titlebody (string, optional): Updated contentdescription (string, optional): Updated descriptionstate (string, optional): "draft" or "published"author_id (number, optional): Updated author IDtranslated_content (object, optional): Updated translationsExample (Change state):
{
"id": "9876543",
"state": "published"
}
Example (Update content):
{
"id": "9876543",
"title": "Updated Title",
"body": "<p>Updated content</p>"
}
Example (Add translation):
{
"id": "9876543",
"translated_content": {
"zh-TW": {
"title": "更新的標題",
"body": "<p>更新的內容</p>"
}
}
}
list_collectionsList all Help Center collections (top-level categories).
Parameters:
page (number, optional): Page number (default: 1)per_page (number, optional): Collections per page (default: 50, max: 150)Example:
{
"page": 1,
"per_page": 50
}
get_collectionGet a single collection by ID.
Parameters:
id (string, required): Collection IDExample:
{
"id": "14608214"
}
update_collectionUpdate an existing collection. Only provided fields will be updated. Perfect for adding missing translations!
Parameters:
id (string, required): Collection IDname (string, optional): Updated collection name (updates default language)description (string, optional): Updated description (updates default language)parent_id (string, optional): Parent collection ID (null for top-level)translated_content (object, optional): Updated translationsExample (Update name and description):
{
"id": "14608214",
"name": "Account Management",
"description": "Manage your account settings"
}
Example (Add missing Japanese translation):
{
"id": "14608214",
"translated_content": {
"ja": {
"name": "アカウント管理",
"description": "アカウント設定を管理"
}
}
}
Example (Update multiple language translations):
{
"id": "14608214",
"translated_content": {
"ja": {
"name": "アカウント管理",
"description": "アカウント設定を管理する"
},
"id": {
"name": "Manajemen Akun",
"description": "Kelola pengaturan akun Anda"
}
}
}
delete_collectionDelete a collection permanently. WARNING: This action cannot be undone!
Parameters:
id (string, required): Collection ID to deleteExample:
{
"id": "16036040"
}
⚠️ Important Notes:
delete_articleDelete an article permanently. WARNING: This action cannot be undone!
Parameters:
id (string, required): Article ID to deleteExample:
{
"id": "9876543"
}
create_collectionCreate a new Help Center collection.
Parameters:
name (string, required): Collection namedescription (string, optional): Collection descriptionparent_id (string, optional): Parent collection ID for nesting (omit for top-level)translated_content (object, optional): Multilingual content by locale codeExample (Simple):
{
"name": "Getting Started"
}
Example (With translation):
{
"name": "Getting Started",
"translated_content": {
"zh-TW": {
"name": "入門指南",
"description": "開始使用我們的平台"
}
}
}
list_adminsList all workspace admins. Useful for finding valid author_id values when creating or updating articles.
Parameters: None
Response includes:
id: Admin ID (use this as author_id)name: Display nameemail: Email addresshas_inbox_seat: Whether the admin has an inbox seatreply_conversationReply to a conversation as an admin. The reply is visible to the customer.
Parameters:
conversation_id (string, required): The conversation ID to reply tobody (string, required): The reply message body (supports HTML)admin_id (string, optional): Admin ID to reply as (defaults to INTERCOM_ADMIN_ID env var)Example:
{
"conversation_id": "12345678",
"body": "<p>Thank you for reaching out. We'll look into this right away.</p>"
}
add_conversation_noteAdd an internal note to a conversation. Notes are only visible to team members, not customers.
Parameters:
conversation_id (string, required): The conversation ID to add a note tobody (string, required): The note content (supports HTML)admin_id (string, optional): Admin ID adding the note (defaults to INTERCOM_ADMIN_ID env var)Example:
{
"conversation_id": "12345678",
"body": "<p>Customer has been refunded. Follow up in 3 days.</p>"
}
close_conversationClose a conversation.
Parameters:
conversation_id (string, required): The conversation ID to closeExample:
{
"conversation_id": "12345678"
}
update_ticket_stateUpdate the state of a ticket.
Parameters:
ticket_id (string, required): The ticket ID to updatestate (string, required): The new ticket state — one of in_progress, waiting_on_customer, resolvedExample:
{
"ticket_id": "87654321",
"state": "resolved"
}
npm run build
npm run watch
dist/index.jsnode_modules and dist, then:npm install && npm run build
intercom-mcp/
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
├── src/
│ └── index.ts # Main server code
├── dist/ # Compiled output
└── README.md # This file
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"intercom-articles-mcp-server": {
"command": "npx",
"args": []
}
}
}