mcp-api-adapter-for-intercom-support
Facilitates querying and evaluation of customer service interactions stored within Intercom, supporting granular specification via customer identity, resolution state, temporal bounds, and textual markers. Leverages Intercom's backend search mechanisms for optimized data retrieval.
Author

raoulbia-ai
Quick Info
Actions
Tags
MCP Data Bridge for Intercom Services
A mechanism compliant with the Multi-Communication Protocol (MCP) designed to grant AI agents access to and analytical capabilities over customer interaction records sourced from Intercom.
Core Capabilities
- Execute sophisticated searches against conversation archives and reported issues, incorporating refined filtering criteria.
- Apply constraints based on associated user, current handling status, defined time window, and content relevance.
- Capability to probe message bodies even when a formal contact entity is absent.
- Maximizes data retrieval efficiency by performing filtering operations on Intercom's servers.
- Guarantees smooth interoperability with MCP-conformant intelligent systems.
Deployment Guide
Prerequisites
- Runtime environment: Node.js version 18.0.0 or newer.
- Active Intercom subscription granting API access rights.
- Possession of your unique Intercom authorization credential (token, found in account settings).
Rapid Initialization Procedure
Using NPM Package Manager
bash
Global installation of the utility package
npm install -g mcp-server-for-intercom
Set the required authorization variable in the shell environment
export INTERCOM_ACCESS_TOKEN="your_token_here"
Initiate the server process
intercom-mcp
Utilizing Containerization (Docker)
The standard Docker configuration is tailored for seamless operation within the Glama ecosystem:
bash
Ensure the container runtime is active
On Windows: Launch Docker Desktop
On Linux: sudo systemctl start docker
Produce the local image
docker build -t mcp-intercom .
Start the container, mapping necessary ports and injecting the API key
docker run --rm -it -p 3000:3000 -p 8080:8080 -e INTERCOM_ACCESS_TOKEN="your_token_here" mcp-intercom:latest
Verification Sequence: bash
Confirm server health and configuration handshake
curl -v http://localhost:8080/.well-known/glama.json
Invoke an MCP capability check
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"mcp.capabilities"}' http://localhost:3000
Alternate Streamlined Build
For environments where Glama-specific dependencies are not required, a leaner version is available:
bash
Build the image using the standard Dockerfile
docker build -t mcp-intercom-standard -f Dockerfile.standard .
Execute the standard container
docker run --rm -it -p 3000:3000 -p 8080:8080 -e INTERCOM_ACCESS_TOKEN="your_token_here" mcp-intercom-standard:latest
The default build incorporates enhancements necessary for Glama platform alignment, whereas the standard option provides a minimized operational footprint.
Enumerated MCP Operations
1. list_conversations
Fetches dialogue records within a specified temporal window, subject to content inclusion/exclusion criteria.
Input Arguments:
- startDate (Format: DD/MM/YYYY) – The commencement date (mandatory).
- endDate (Format: DD/MM/YYYY) – The conclusion date (mandatory).
- keyword (text string) – Textual content that must be present for inclusion.
- exclude (text string) – Textual content that must cause exclusion.
Constraints: - The duration between start and end dates must not surpass one week (7 days). - Utilizes Intercom's search API for backend processing efficiency.
Usage Example (JSON Payload):
{ "startDate": "15/01/2025", "endDate": "21/01/2025", "keyword": "billing" }
2. search_conversations_by_customer
Locates all dialogue threads linked to a particular user.
Input Arguments:
- customerIdentifier (text string) – User's email address or internal Intercom identifier (mandatory).
- startDate (Format: DD/MM/YYYY) – Optional boundary for the start of the search period.
- endDate (Format: DD/MM/YYYY) – Optional boundary for the end of the search period.
- keywords (list of strings) – Optional list of terms to filter conversation content against.
Notes: - Can identify communication records based on email address even if a contact record doesn't formally exist. - Internally maps email addresses to corresponding user IDs for query optimization.
Usage Example (JSON Payload):
{ "customerIdentifier": "customer@example.com", "startDate": "15/01/2025", "endDate": "21/01/2025", "keywords": ["billing", "refund"] }
3. search_tickets_by_status
Retrieves documented issues filtered by their current handling status.
Input Arguments:
- status (text string) – Permissible values: "open", "pending", or "resolved" (mandatory).
- startDate (Format: DD/MM/YYYY) – Optional starting point for ticket activity review.
- endDate (Format: DD/MM/YYYY) – Optional ending point for ticket activity review.
Usage Example (JSON Payload):
{ "status": "open", "startDate": "15/01/2025", "endDate": "21/01/2025" }
4. search_tickets_by_customer
Identifies formal support tickets associated with a given user profile.
Input Arguments:
- customerIdentifier (text string) – User's registered email or Intercom record reference (mandatory).
- startDate (Format: DD/MM/YYYY) – Optional start date boundary.
- endDate (Format: DD/MM/YYYY) – Optional end date boundary.
Usage Example (JSON Payload):
{ "customerIdentifier": "customer@example.com", "startDate": "15/01/2025", "endDate": "21/01/2025" }
Configuration for Claude Desktop Integration
Insert the following object into your claude_desktop_config.json file:
{ "mcpServers": { "intercom-mcp": { "command": "intercom-mcp", "args": [], "env": { "INTERCOM_ACCESS_TOKEN": "your_intercom_api_token" } } } }
Technical Documentation References
Comprehensive technical specifics regarding the mapping between this server's interface and the underlying Intercom API methods, endpoint utilization, and implementation nuances can be found in the file src/services/INTERCOM_API_NOTES.md.
