aircall-mcp
Provides read-only access to Aircall's API, enabling listing and retrieving calls, users, contacts, numbers, teams, tags, and conversation intelligence data such as transcriptions, sentiment, topics, summaries, and action items.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aircall-mcp show me the last 10 calls"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aircall-mcp
A local, read-only Model Context Protocol server for the official Aircall REST API.
This is an independent open-source project. It is not built, maintained, or endorsed by Aircall.
Why this server
Aircall provides an official REST API but does not provide a client-facing MCP server for reading calls and transcripts. aircall-mcp provides that MCP layer while keeping credentials and Aircall data on the local machine:
Read-only by construction: only documented
GETendpoints are implemented.Local stdio transport: no web server, hosted proxy, account, or subscription.
Fixed API origin: credentials are sent only to
https://api.aircall.io.No persistence: responses, transcripts, and contacts are not written to disk.
Bounded output: pagination, compact call results, and transcript slicing limit context usage.
Sensitive media URLs omitted by default: recording, voicemail, asset, and number-message URLs require explicit opt-in.
Related MCP server: slack-readonly-mcp
Tools
All 21 tools are annotated as read-only, non-destructive, and idempotent.
Tool | Aircall endpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Conversation Intelligence tools require the applicable Aircall AI feature and data to be available for that call.
Install
Requirements: Node.js 20 or newer and an Aircall API key pair.
git clone https://github.com/growth-box/aircall-mcp.git
cd aircall-mcp
npm install
npm run buildCreate API credentials in Aircall Dashboard → Integrations → API keys. Aircall shows the API token only once.
Configure an MCP client
The server reads credentials from its process environment:
{
"mcpServers": {
"aircall": {
"command": "node",
"args": ["/absolute/path/to/aircall-mcp/dist/index.js"],
"env": {
"AIRCALL_API_ID": "your-api-id",
"AIRCALL_API_TOKEN": "your-api-token"
}
}
}
}Do not commit or share a configuration containing real credentials.
Pi with macOS Keychain
Pi's MCP adapter can resolve environment values from commands when the value starts with !. This keeps secrets out of JSON configuration.
Store the credentials interactively:
./scripts/macos-keychain-setup.shThen add this server to ~/.config/mcp/mcp.json:
{
"mcpServers": {
"aircall": {
"command": "node",
"args": ["/absolute/path/to/aircall-mcp/dist/index.js"],
"env": {
"AIRCALL_API_ID": "!security find-generic-password -s aircall-mcp -a AIRCALL_API_ID -w",
"AIRCALL_API_TOKEN": "!security find-generic-password -s aircall-mcp -a AIRCALL_API_TOKEN -w"
},
"lifecycle": "lazy"
}
}
}Reload Pi, then connect or call aircall_ping.
Aircall API constraints
At the time of implementation, Aircall documents:
120 API requests per minute per company.
A maximum page size of 50.
A maximum of 10,000 paginated calls or contacts; use date windows to go beyond that.
Six months of call history through the Public API.
The client retries one 429 response using Aircall's retry/reset headers. It otherwise leaves request scheduling to the MCP client.
Data handling
Call records, contacts, phone numbers, and transcripts may contain personal or confidential information. This server does not store them, but its results are sent to the connected MCP client and ultimately to that client's language-model provider. Review that provider's privacy and retention controls.
Media URLs are omitted by default because they can grant access to recordings or voicemail. Pass the relevant explicit include_*_urls option only when needed. On call-list and call-search tools, opting into media URLs returns full call records even when compact is left at its default.
Set AIRCALL_TIMEOUT_MS to a positive integer to override the default 30-second request timeout.
See SECURITY.md for the full security model.
Development
npm test
npm run typecheckTests use mocked Aircall responses and never require live credentials.
License
MIT
Available Tools
21 toolsaircall_get_action_itemsGet Aircall call action itemsARead-onlyIdempotent
Get AI-extracted action items for one Aircall call. Requires the applicable Aircall AI feature.
Inputs: call_id (required).
aircall_get_callGet Aircall callBRead-onlyIdempotent
Get full metadata for one Aircall call.
Inputs: call_id (required), fetch_contact, fetch_aiva_conv, include_media_urls, +1 more.
aircall_get_companyGet Aircall companyARead-onlyIdempotent
Get basic information about the authenticated Aircall company.
Inputs: no named parameters.
aircall_get_contactGet Aircall contactARead-onlyIdempotent
Get one shared Aircall contact.
Inputs: contact_id (required).
aircall_get_numberGet Aircall numberARead-onlyIdempotent
Get one Aircall phone number and its assigned users.
Inputs: number_id (required), include_message_urls.
aircall_get_sentimentsGet Aircall call sentimentsARead-onlyIdempotent
Get sentiment analysis for one Aircall call. Requires the applicable Aircall AI feature.
Inputs: call_id (required).
aircall_get_summaryGet Aircall call summaryARead-onlyIdempotent
Get AI-generated summary for one Aircall call. Requires the applicable Aircall AI feature.
Inputs: call_id (required).
aircall_get_tagGet Aircall tagARead-onlyIdempotent
Get one Aircall call tag.
Inputs: tag_id (required).
aircall_get_teamGet Aircall teamARead-onlyIdempotent
Get one Aircall team and its members.
Inputs: team_id (required).
aircall_get_topicsGet Aircall call topicsBRead-onlyIdempotent
Get AI-detected topics for one Aircall call. Requires the applicable Aircall AI feature.
Inputs: call_id (required).
aircall_get_transcriptionGet Aircall call transcriptionARead-onlyIdempotent
Get an AI-generated call transcription. Utterances are paginated locally to keep responses bounded.
Inputs: call_id (required), mode, limit, format, +2 more.
aircall_get_userGet Aircall userARead-onlyIdempotent
Get one Aircall user by numeric ID or email address using the v2 Users API.
Inputs: identifier (required).
aircall_list_callsList Aircall callsARead-onlyIdempotent
List calls from Aircall's available six-month history. Results default to compact newest-first metadata; retrieve a call by ID for complete details.
Inputs: to, from, page, order, +6 more.
aircall_list_contactsList Aircall contactsARead-onlyIdempotent
List shared Aircall contacts.
Inputs: to, from, page, order, +2 more.
aircall_list_numbersList Aircall numbersBRead-onlyIdempotent
List phone numbers owned by the Aircall company.
Inputs: to, from, page, order, +2 more.
aircall_list_tagsList Aircall tagsARead-onlyIdempotent
List call tags configured for the Aircall company.
Inputs: page, per_page.
aircall_list_teamsList Aircall teamsARead-onlyIdempotent
List Aircall teams and their members.
Inputs: page, order, per_page.
aircall_list_usersList Aircall usersBRead-onlyIdempotent
List Aircall users/agents using the current v2 Users API.
Inputs: to, from, page, order, +1 more.
aircall_pingPing AircallARead-onlyIdempotent
Verify that Aircall is reachable and the configured API credentials are valid.
Inputs: no named parameters.
aircall_search_callsSearch Aircall callsARead-onlyIdempotent
Search calls by date, direction, user, phone number, and tag IDs. Aircall applies multiple tags as an AND condition.
Inputs: to, from, page, tags, +8 more.
aircall_search_contactsSearch Aircall contactsARead-onlyIdempotent
Search shared Aircall contacts by phone number or email address.
Inputs: to, from, page, email, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Each tool targets a distinct resource and action combination (ping, get_company, list/get users, teams, calls, numbers, contacts, tags, and separate AI analytics for calls). The AI-related tools (transcription, sentiments, topics, summary, action_items) are clearly differentiated by name and description, leaving no ambiguity about what each returns.
All tools follow a consistent 'aircall_<verb>_<resource>' pattern using lowercase snake_case. Verbs are limited to ping, get, list, and search, and nouns are uniformly singular or plural as appropriate. This is a model of consistent naming.
With 21 tools, the set is on the heavier side but still well-scoped for the Aircall domain. It covers company, users, teams, calls, AI features, numbers, contacts, and tags without feeling bloated. The count is appropriate for a comprehensive read-focused API wrapper.
The tool surface is almost entirely read-only: it provides list/get/search for all resources but lacks create, update, or delete operations for users, contacts, numbers, tags, or teams. This is a significant gap for a domain where management actions are expected, limiting the server to analytics and lookup use cases.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Official Airtable MCP server — database and operations layer for agents.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRemote MCP server that exposes Airspeed/Glyphic call data to Claude web, enabling tools to list, retrieve, and query calls, transcripts, snippets, and playbooks.ISC
- AlicenseAqualityDmaintenanceA self-hosted, read-only Slack MCP server that runs locally and provides read-only access to Slack channels, messages, and users via the Slack Web API, with no third-party intermediary.7MIT
- FlicenseAqualityDmaintenanceLocal, read-only MCP server that connects to Discord via REST API, allowing listing guilds, channels, and messages with strict access controls and no write operations.5-
- AlicenseAqualityDmaintenanceRead-only MCP server for Twilio call data, providing tools to search calls, fetch recordings and transcripts, list agents, and generate summaries while explicitly handling timezone and duration measurement discrepancies.6MIT