AgentStack
MCP verified MIT Self-run

Intercom Mcp

mcp-kaosensei-intercom-mcp · by kaosensei

A Model Context Protocol (MCP) server for reading Intercom Help Center articles

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add mcp-kaosensei-intercom-mcp

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Intercom Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Intercom MCP Server

Intercom MCP server for Help Center content management and CS workflow automation.

Version

v0.9.0 - Added send_outbound_email — start a NEW outbound email to a contact by email address (resolves/creates the contact, retries on the post-create 404 propagation delay). Complements reply_conversation, which only replies within an existing conversation.

v0.8.4 - Internal cleanup: removed the unused zod dependency; extracted shared ok() (tool-result wrapper) and clamp() (pagination) helpers to cut ~140 lines of repetition; dropped four decorative pass-through interfaces. No tool, schema, or output changes.

v0.8.3 - get_conversation no longer drops message-bearing open parts (customer email replies that reopen a closed conversation) or assignment parts (the first admin reply); also surfaces per-part attachments and lifts ticket-form content into explicit ticket.title / ticket.description — fixes triage missing the latest customer message or screenshots

v0.8.2 - get_conversation keeps triage essentials (source/delivered_as, ticket-form attributes, contacts, per-part from_quick_reply flag) instead of stripping them — needed to tell "typed a reply" from "tapped a quick-reply button"

v0.8.1 - Fix: search_conversations accepts the query even when the MCP client serializes the object as a JSON string (Intercom rejected the stringified form)

v0.8.0 - Added search_conversations & get_conversation; slimmed all action-tool responses (reply/close/note/article/ticket) to return only confirmation fields instead of the full Intercom object — prevents flooding the MCP client's context window

v0.7.0 - Added deletearticle, createcollection, listadmins; optimized searcharticles response

Features

Articles

  • get_article - Get a single article by ID
  • list_articles - List articles with pagination
  • search_articles - Search articles by keywords with highlighting support
  • create_article - Create new articles with multilingual content
  • update_article - Update existing articles with partial updates
  • delete_article - Delete an article permanently

Collections

  • list_collections - List all Help Center collections
  • get_collection - Get a single collection by ID
  • update_collection - Update collection info and translations
  • delete_collection - Delete a collection (permanent)
  • create_collection - Create new Help Center collections

Admin

  • list_admins - List workspace admins (useful for finding valid author_id)

Conversations

  • search_conversations - Search conversations (slim list: id/state/contact/timestamps, no parts)
  • get_conversation - Get one conversation with message history (slim: keeps comment/note/quick_reply plus any message-bearing open/assignment part + attachments; pure system events filtered out)

CS Workflow

  • reply_conversation - Reply to a conversation as an admin (returns slim confirmation)
  • send_outbound_email - Start a NEW outbound email to a contact by email address (resolves/creates contact, returns new conversation_id)
  • add_conversation_note - Add an internal note to a conversation
  • close_conversation - Close a conversation
  • update_ticket_state - Update a ticket's state

Installation

  1. Clone the repository:
git clone https://github.com/kaosensei/intercom-mcp.git
cd intercom-mcp
  1. Install dependencies:
npm install
  1. Build the project:
npm run build

Configuration

Get Intercom Access Token

  1. Go to Intercom Settings → Developers → Developer Hub
  2. Create a new app or use existing one
  3. Get an Access Token with Articles and Conversations read and write permissions

Environment Variables

| Variable | Required | Description | |---|---|---| | INTERCOM_ACCESS_TOKEN | ✅ Always | Your Intercom API access token | | INTERCOM_ADMIN_ID | ✅ For CS tools | Admin ID used for reply_conversation, add_conversation_note and send_outbound_email when admin_id parameter is not provided |

Configure with Claude Code (Recommended)

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= \
  --env INTERCOM_ADMIN_ID= \
  -- node /ABSOLUTE/PATH/TO/intercom-mcp/dist/index.js

Replace:

  • `` with your Intercom Access Token
  • /ABSOLUTE/PATH/TO/ with your actual project path

To verify it's configured:

claude mcp list

Configure Claude Desktop Manually

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:

  • Replace /ABSOLUTE/PATH/TO/intercom-mcp with your actual project path
  • Replace your_intercom_access_token_here with your actual token
  • Replace your_admin_id_here with your Intercom admin ID (required for CS tools)

Restart Claude Desktop

Completely quit Claude Desktop and restart it.

Usage

Once configured, you can use these commands in Claude Desktop:

List Articles

List Intercom articles

or

Show me the first 20 Intercom articles

Get Article Details

Get Intercom article with ID 9876543

Search Articles

Search for Intercom articles about "subscription"

or

Search published articles containing "播客" with highlighted matches

or

Find articles with keyword "訂閱" in Chinese

Create Article

Create a new Intercom article titled "Getting Started Guide" with content "Welcome to our platform" by author ID 123456, save as draft

Update Article

Update article 9876543 and change its state to published

List Collections

List all Intercom Help Center collections

Get Collection

Get collection with ID 14608214

Update Collection

Update collection 14608214 and add Japanese translation

Delete Collection

Delete collection 16036040

Use Case: Translation Management

One of the key features of v0.4.0 is the ability to manage multilingual collections efficiently.

Add Missing Translations

You can easily add translations to collections that are missing certain languages:

Update collection 14608214 and add the missing Japanese translation: name "アカウント管理", description "アカウント設定を管理する"

Bulk Translation Updates

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.

Verify Translations

After updating, verify the changes:

Get collection 14608214 and show me all available translations

Tools Reference

get_article

Get a single article by ID.

Parameters:

  • id (string, required): Article ID

Example:

{
  "id": "9876543"
}

list_articles

List 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_articles

Search 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 articles
  • state (string, optional): Filter by article state - "published", "draft", or "all" (default: "all")
  • help_center_id (string, optional): Filter by specific Help Center ID

Example (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 articles
  • articles: Array of summary fields per article (id, title, description, state, url, authorid, createdat, updatedat, parentid, parent_type)

Use get_article to fetch the full content of a specific article.

Use Cases:

  • Find all articles about a specific topic
  • Search for Chinese/Japanese content in multilingual help centers
  • Locate articles that need updating
  • Discover related content for cross-linking

create_article

Create a new article with multilingual support.

Parameters:

  • title (string, required): Article title
  • body (string, required): Article content in HTML format
  • author_id (number, required): Author ID (must be a valid Intercom team member)
  • description (string, optional): Article description
  • state (string, optional): "draft" or "published" (default: "draft")
  • parent_id (string, optional): Collection or section ID
  • parent_type (string, optional): "collection" (default)
  • translated_content (object, optional): Multilingual content

Example (Simple):

{
  "title": "Getting Started Guide",
  "body": "Welcome to our platform",
  "author_id": 123456,
  "state": "draft"
}

Example (Multilingual):

{
  "title": "Getting Started Guide",
  "body": "Welcome to our platform",
  "author_id": 123456,
  "state": "published",
  "translated_content": {
    "zh-TW": {
      "title": "入門指南",
      "body": "歡迎使用我們的平台",
      "author_id": 123456,
      "state": "published"
    },
    "ja": {
      "title": "スタートガイド",
      "body": "プラットフォームへようこそ",
      "author_id": 123456,
      "state": "published"
    }
  }
}

update_article

Update an existing article. Only provided fields will be updated.

Parameters:

  • id (string, required): Article ID
  • title (string, optional): Updated title
  • body (string, optional): Updated content
  • description (string, optional): Updated description
  • state (string, optional): "draft" or "published"
  • author_id (number, optional): Updated author ID
  • translated_content (object, optional): Updated translations

Example (Change state):

{
  "id": "9876543",
  "state": "published"
}

Example (Update content):

{
  "id": "9876543",
  "title": "Updated Title",
  "body": "Updated content"
}

Example (Add translation):

{
  "id": "9876543",
  "translated_content": {
    "zh-TW": {
      "title": "更新的標題",
      "body": "更新的內容"
    }
  }
}

list_collections

List 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_collection

Get a single collection by ID.

Parameters:

  • id (string, required): Collection ID

Example:

{
  "id": "14608214"
}

update_collection

Update an existing collection. Only provided fields will be updated. Perfect for adding missing translations!

Parameters:

  • id (string, required): Collection ID
  • name (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 translations

Example (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_collection

Delete a collection permanently. WARNING: This action cannot be undone!

Parameters:

  • id (string, required): Collection ID to delete

Example:

{
  "id": "16036040"
}

⚠️ Important Notes:

  • Deleted collections cannot be restored
  • All content within the collection may be affected
  • Always backup important data before deletion

delete_article

Delete an article permanently. WARNING: This action cannot be undone!

Parameters:

  • id (string, required): Article ID to delete

Example:

{
  "id": "9876543"
}

create_collection

Create a new Help Center collection.

Parameters:

  • name (string, required): Collection name
  • description (string, optional): Collection description
  • parent_id (string, optional): Parent collection ID for nesting (omit for top-level)
  • translated_content (object, optional): Multilingual content by locale code

Example (Simple):

{
  "name": "Getting Started"
}

Example (With translation):

{
  "name": "Getting Started",
  "translated_content": {
    "zh-TW": {
      "name": "入門指南",
      "description": "開始使用我們的平台"
    }
  }
}

list_admins

List 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 name
  • email: Email address
  • has_inbox_seat: Whether the admin has an inbox seat

search_conversations

Search conversations with an Intercom query object. Returns a slim list (no conversation parts) — call get_conversation for full content.

Parameters:

  • query (object, required): Intercom search query object, e.g. {"operator":"AND","value":[{"field":"state","operator":"=","value":"open"}]}. Add {"field":"admin_assignee_id","operator":"=","value":} to filter by assignee, or source.author.email by contact. Also accepts the object serialized as a JSON string.
  • per_page (number, optional): Results per page (default: 20, max: 50)
  • starting_after (string, optional): Pagination cursor from a previous response's next

Example (all open conversations):

{
  "query": {"operator":"AND","value":[{"field":"state","operator":"=","value":"open"}]},
  "per_page": 50
}

Response includes:

  • total_count: Total matching conversations
  • next: Pagination cursor (present if more pages)
  • conversations: Array of slim items (id, state, open, title, subject, contact, adminassigneeid, timestamps) — no parts

get_conversation

Get a single conversation with message history, slimmed for triage: pure system-event parts filtered out, but every message-bearing part (including reopen email replies and the first admin reply) and its attachments kept.

Parameters:

  • id (string, required): Conversation ID

Example:

{
  "id": "12345678"
}

Response includes:

  • Top level: id, state, open, title, timestamps, waiting_since
  • source: incl. delivered_as (identifies the real asker), subject, body, author
  • ticket: ticket-form essentials — type, state, and title / description (the real request, pulled out of the internal _default_title_ / _default_description_ keys; present only when the ticket has them)
  • ticket_attributes: all ticket-form custom attributes with non-empty values
  • contacts: contact references
  • total_parts / included_parts: counts before / after filtering
  • parts: comment / note / `quic

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.