Gong MCP Server
The Gong MCP Server provides programmatic access to Gong.io sales call data through the Model Context Protocol, enabling AI assistants to query and analyze recorded conversations.
Core Capabilities:
List and search calls - Browse calls with date range filtering, workspace filtering, call IDs, and call hosts (primary users), with pagination support
Get call details - Access comprehensive information including participants, topics, trackers, and action items
Access call transcripts - Retrieve full speaker-attributed, timestamped transcripts with optional character offset and maximum length for pagination
Get AI-generated summaries - Obtain call summaries with key points, topics, and action items
List workspace users - View all users with details like name, email, title, and avatar URLs, with pagination support
Access user resource - Directly fetch a markdown-formatted list of all users via
gong://usersURI
Key Use Cases:
Analyze sales call conversations and performance
Extract specific information from transcripts
Track action items and follow-ups from customer conversations
Monitor team activities and search historical call data
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., "@Gong MCP Server list my Gong calls from last week"
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.
Gong MCP Server
An MCP (Model Context Protocol) server that provides access to your Gong.io data. Query calls, transcripts, users, keyword trackers, and more directly from Claude or any MCP-compatible client.
Tools Quick Reference
Tool | Description |
List calls with date/workspace filtering | |
Get metadata for a specific call | |
AI summary: key points, topics, action items | |
Full speaker-attributed transcript (paginated) | |
Rich call search — participant, customer, tracker, scope, duration, title, and more | |
Find calls involving a specific account/company by email domain | |
Find calls linked to specific CRM Opportunities | |
Free-text keyword search across transcript sentences | |
List keyword trackers (competitors, topics, etc.) | |
List workspaces and get IDs for use in other tools | |
List public call library folders | |
Get calls saved in a specific library folder | |
Get a specific user's profile | |
Search/filter users by IDs or creation date | |
List all workspace users |
Related MCP server: gong-mcp
Response Size & Context Limits
search_calls can return a lot of data. Under the hood it:
Auto-paginates up to ~5000 calls (50 API pages) per query
Applies client-side filters (participant, customer, tracker, duration, etc.) after pagination
Returns a rich per-call format (metadata + summary + topics + participants) by default
Guardrails built in:
If the formatted output would exceed
MAX_MCP_OUTPUT_LENGTH(default50000chars, configurable via env var), the tool automatically falls back to a compact table with a warning. You still get every call ID and title — drill in withget_call_summaryon specific ones.include: ["outline"]is expensive (~80KB per call). Avoid it in multi-call searches.Tracker data is filtered to only show trackers matching your
trackersfilter (or non-zero trackers if no filter) — no more walls of(0x)noise.
If your query hits the output cap, narrow it:
Tighten
fromDateTime/toDateTimeAdd
scope: "External"orscope: "Internal"Add
minDuration: 600to skip short no-showsAdd
customerNameortrackersfilterDrop heavy
includeoptions likeoutline
Prerequisites
Node.js 18+ or Docker
Gong API credentials (Access Key and Secret)
Log into Gong as an admin
Go to Company Settings → Ecosystem → API
Click Create API Key
Save both the Access Key and Secret (the secret is only shown once)
Option 1: npx (no install required)
npx gongio-mcpOption 2: Global npm install
npm install -g gongio-mcp
gongio-mcpOption 3: From source
git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
npm install
npm run build
node dist/index.jsOption 4: Docker (build locally)
git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
docker build -t gongio-mcp .
docker run --rm -i \
-e GONG_ACCESS_KEY=your-access-key \
-e GONG_ACCESS_KEY_SECRET=your-secret-key \
gongio-mcpSet your Gong credentials as environment variables:
export GONG_ACCESS_KEY="your-access-key"
export GONG_ACCESS_KEY_SECRET="your-secret-key"Or pass them inline:
GONG_ACCESS_KEY=your-key GONG_ACCESS_KEY_SECRET=your-secret npx gongio-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Using npx:
{
"mcpServers": {
"gong": {
"command": "npx",
"args": ["gongio-mcp"],
"env": {
"GONG_ACCESS_KEY": "your-access-key",
"GONG_ACCESS_KEY_SECRET": "your-secret-key"
}
}
}
}Using Docker:
{
"mcpServers": {
"gong": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "GONG_ACCESS_KEY",
"-e", "GONG_ACCESS_KEY_SECRET",
"gongio-mcp"],
"env": {
"GONG_ACCESS_KEY": "your-access-key",
"GONG_ACCESS_KEY_SECRET": "your-secret-key"
}
}
}
}Claude Code
Using npx:
claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- npx gongio-mcpUsing Docker (after docker build -t gongio-mcp .):
claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- docker run --rm -i -e GONG_ACCESS_KEY -e GONG_ACCESS_KEY_SECRET gongio-mcpAvailable Tools
List calls with optional date range and workspace filters. Returns minimal call metadata (ID, title, date, duration).
Parameters:
Parameter | Required | Description |
| No | Start date in ISO 8601 format (e.g., |
| No | End date in ISO 8601 format (e.g., |
| No | Filter calls by workspace ID (use |
| No | Pagination cursor for next page |
Get the URL, timing, direction, scope, system, and other metadata for one call. Faster than get_call_summary when you only need call metadata.
Parameters:
Parameter | Required | Description |
| Yes | Gong call ID (numeric string) |
Get an AI-generated summary including brief overview, key points, topics, action items, and detailed outline. This is the recommended way to understand a call — use get_call_transcript only if you need exact quotes.
Parameters:
Parameter | Required | Description |
| Yes | Gong call ID (numeric string) |
Get the raw transcript with speaker attribution. Transcripts are paginated (default 10KB) to prevent context overflow — use maxLength and offset to navigate.
Parameters:
Parameter | Required | Description |
| Yes | Gong call ID (numeric string) |
| No | Maximum characters to return (default: 10000, max: 100000) |
| No | Character offset to start from for pagination (default: 0) |
Search calls with advanced filters including participant lookup, customer name search, and rich content selection. Automatically paginates through all results and returns participant info, brief summary, and topics by default.
Parameters:
Date & workspace
Parameter | Description |
| Start date in ISO 8601 format |
| End date in ISO 8601 format |
| Filter by workspace ID (use |
| Array of specific call IDs to retrieve |
Host / participant
Parameter | Description |
| Host user IDs (server-side) |
| Host emails (case-insensitive) |
| Exclude these host user IDs |
| Any participant (host/attendee/invitee) user IDs |
| Exclude calls where any participant has these user IDs |
| Any participant emails (case-insensitive) |
| Exclude calls where any participant has these emails |
Content & customer
Parameter | Description |
| Fuzzy match against CRM account name, external email domains, and titles |
| Substring match on call title (case-insensitive) |
| Calls where matching tracker(s) fired (count > 0). Workspace-specific — use |
Metadata
Parameter | Description |
|
|
|
|
| Conferencing platform (e.g., |
| Language code (e.g., |
| Minimum duration in seconds |
| Maximum duration in seconds |
Response shape
Parameter | Description |
| Additional data to return — see table below |
include options:
Value | What it adds | Size |
| AI-extracted key points as bullets | ~5KB/call |
| Keyword/smart tracker hits with counts | ~3KB/call |
| AI-curated highlight clips grouped by theme | ~3KB/call |
| Talk time per participant | ~1KB/call |
| Public comments left on the call | varies |
| CRM account/opportunity linkage (HubSpot, Salesforce) | ~1KB/call |
| Full section-by-section outline with items | ~80KB/call (large) |
| Audio/video URLs (valid 8 hours) | ~3KB/call |
Defaults (always returned): participants, brief summary, and topics — ~3KB per call.
Filter behavior notes:
Filters combine with AND logic.
primaryUserIds+participantUserIdscompose: primary narrows server-side, participant post-filters.customerNamematches any of: CRM account Name field, external participant email domain, or call title (case-insensitive substring).trackersnames are workspace-specific — callget_trackersfirst to see what's configured. Match is case-insensitive substring (so"competitor"matches both"Competitors"and"Competitor Mentions").When
trackersfilter is set, the relevant tracker content is auto-included and the output shows only the trackers you asked about. Without a filter, only non-zero trackers are shown.An empty result returns
"No calls found"rather than an error.
See Response Size & Context Limits for how large-result fallback works.
Find calls involving a specific account or company by matching the email domains of external participants. The Gong API does not natively support filtering by account name (a known gap) — this tool fetches calls in the date range and post-filters on parties[].emailAddress. Auto-paginates the underlying /v2/calls/extensive endpoint up to maxCalls.
Use this when:
A prospect has multiple email domains (
acme.com,acme.io, regional TLDs) and you need them allYou need to join external enrichment data (e.g., "all prospects on Klaviyo" from BuiltWith / Clearbit / a vendor-stack graph) — resolve to a domain list upstream and pass it here
Domain-based matching is more reliable than CRM Account names that drift across systems
Parameters:
Parameter | Required | Description |
| Yes | Email domains, e.g. |
| No | Start date in ISO 8601 format |
| No | End date in ISO 8601 format |
| No | Filter by workspace ID |
| No | Pre-narrow by call host user IDs (faster, server-side) |
| No | Also match where a CRM Account context object name contains a domain root (e.g. |
| No | Max calls to fetch & filter (default: 500, max: 5000). Auto-paginates underlying API. |
| No | Pagination cursor (advanced) |
Cost note: This is fetch-then-filter. A 90-day window with no other narrowing typically pages through 1–5 API calls. Combine with primaryUserIds to bound cost on long ranges.
Find calls linked to specific CRM Opportunities by ID or name substring. Requires Gong-CRM integration (Salesforce / HubSpot) — calls without CRM linkage will not match.
Use this when:
You want every call on a specific deal —
opportunityIds: ["006xxxxx"]is the most precise optionOpportunity names are descriptive (e.g.
"Acme Q4 Renewal") and you want fuzzy matching across renamed/duplicated opportunities
Parameters:
Parameter | Required | Description |
| At least one of | CRM Opportunity IDs (e.g., Salesforce 18-character IDs) |
| At least one of | Name substrings (case-insensitive) matched against the Name field of Opportunity context objects |
| No | Start date in ISO 8601 format |
| No | End date in ISO 8601 format |
| No | Filter by workspace ID |
| No | Pre-narrow by call host user IDs |
| No | Max calls to fetch & filter (default: 500, max: 5000) |
| No | Pagination cursor (advanced) |
Cost note: Uses the same fetch-then-filter pattern as search_calls_by_account. CRM context lookup adds no extra API calls — it rides on the same /v2/calls/extensive request with context: "Extended".
Free-text keyword search across call transcript sentences within a bounded date range. Two-phase: (1) /v2/calls/extensive narrows the call set by date + optional primaryUserIds / domains, (2) /v2/calls/transcript fetches transcripts for the narrowed set and returns sentence-level matches with speaker attribution and timestamps.
Prefer Gong Trackers for recurring terms. For competitor names, ESP/tech terms (Klaviyo, Braze, Iterable, Postscript, Attentive, Sendgrid, Customer.io, etc.), and other terms you'll search for repeatedly — set them up as Gong Trackers in the UI (one-time, ~30 minutes for ~20 terms). Then use get_trackers + search_calls + get_call_summary instead. Trackers are server-side, the cost is dramatically lower, and they surface counts and timestamps natively. Use search_transcripts for ad-hoc one-offs.
Cost guard: Date ranges greater than 30 days require additional narrowing via primaryUserIds or domains. A 6-month unbounded scan would burn API quota and is rejected at the schema level.
Parameters:
Parameter | Required | Description |
| Yes | Keywords to search for. Each must be at least 2 characters. |
| Yes | Start of date window (ISO 8601). |
| Yes | End of date window (ISO 8601). |
| Required if window > 30 days and | Narrow to calls hosted by these users before scanning |
| Required if window > 30 days and | Narrow to calls with external parties from these domains before scanning |
| No | Filter by workspace ID |
| No | Default |
| No | Default |
| No | Max calls to scan (default: 500). |
| No | Max sentence matches returned per call (default: 10) — prevents context overflow on calls with many hits. |
Returns: Sentence-level matches grouped by call, including speaker name and affiliation (when available), keyword matched, timestamp (mm:ss), and the sentence snippet.
List all keyword tracker definitions including tracked phrases, affiliation (whose speech is tracked), and filter queries. Explains tracker hits visible in get_call_summary output.
Parameters:
Parameter | Required | Description |
| No | Filter trackers by workspace ID (use |
List all Gong workspaces with their IDs and names. Use these IDs as filters in list_calls, search_calls, get_trackers, and other tools. Most companies have 1–3 workspaces (e.g., by region or product line).
Parameters: None
Get a specific user's profile including name, email, title, phone, and settings. Useful for resolving user IDs returned from call data.
Parameters:
Parameter | Required | Description |
| Yes | Gong user ID (numeric string) |
Search and filter users by IDs or creation date. More flexible than list_users for resolving specific user IDs from call data in bulk.
Parameters:
Parameter | Required | Description |
| No | Array of specific user IDs to look up |
| No | Filter users created after this datetime (ISO 8601) |
| No | Filter users created before this datetime (ISO 8601) |
| No | Pagination cursor |
List all Gong users in your workspace. Returns name, email, and title for each user.
Parameters:
Parameter | Required | Description |
| No | Pagination cursor |
| No | Whether to include user avatar URLs |
List all public Gong call library folders for a workspace. Returns folder IDs and names used with get_library_folder_calls. Private and archived folders are not returned.
Parameters:
Parameter | Required | Description |
| Yes | Workspace ID to list folders for (use |
Get all calls saved in a specific Gong library folder. Returns call IDs, titles, curator notes, and snippet timing for clips. Call IDs can be passed directly to get_call_summary or get_call_transcript.
Parameters:
Parameter | Required | Description |
| Yes | Library folder ID (numeric string, from |
Available Resources
Returns a markdown-formatted list of all users in your Gong workspace. Useful for resolving user IDs found in call data.
Parameters: None
Example Prompts
Once connected to Claude, you can ask:
"List my Gong calls from last week"
"Get the details for call 123456789"
"Show me a summary of call 123456789"
"Get the transcript for call 789012"
"What workspaces do we have in Gong?"
"What keywords is Gong tracking for competitors?"
"What call library folders do we have in Gong?"
"Show me the calls in the 'Best Discovery Calls' library folder"
"Who are all the users in our Gong workspace?"
"Search for calls hosted by Justin (user ID 232255198215877499) in July 2025"
"Look up these user IDs: 111, 222, 333"
"Show me all calls from the past 60 days with anyone at acme.com or acme.io"
"Find every call attached to opportunity 006xxxxx"
"Find Q3 calls where prospects mentioned Klaviyo or Braze, narrowed to John's calls"
Contributing
Interested in contributing? Check out CONTRIBUTING.md for development setup, testing instructions, and guidelines.
The repository includes gong-openapi.json — a local copy of the Gong API OpenAPI spec. It's useful as a reference when adding new tools: use it to look up endpoint paths, parameter names, and response shapes without leaving your editor. The latest spec can be downloaded from the Gong API documentation.
Available Tools
15 toolsget_callARead-only
Get metadata for a specific Gong call including URL, direction, scope, system, and duration. Faster than get_call_summary when you only need call metadata.
Inputs: callId (required).
get_call_summaryARead-only
Get an AI-generated summary of a single call including brief overview, key points, topics, action items, and detailed outline. This is the recommended way to understand a call - use get_call_transcript only if you need exact quotes.
Inputs: callId (required).
get_call_transcriptARead-only
Get the raw transcript for a single call with speaker-attributed text. Only use this when you need exact quotes - prefer get_call_summary for understanding call content. Transcripts are truncated by default (10KB) to prevent context overflow - use maxLength and offset to paginate.
Inputs: callId (required), offset, maxLength.
get_library_folder_callsARead-only
Get all calls saved in a specific Gong library folder. Returns call IDs, titles, curator notes, and snippet timing. Use list_library_folders to find folder IDs. Call IDs can be passed to get_call_summary or get_call_transcript.
Inputs: folderId (required).
get_trackersARead-only
List keyword tracker definitions configured in a workspace, including every tracked phrase and which side is tracked (company/customer). Call this before using the trackers filter on search_calls so you know what names exist — workspace admins set these up and naming varies (e.g., "Competitors" vs "Competitor Mentions"). Also useful to explain tracker hits that appear in call summaries.
Inputs: workspaceId.
get_userARead-only
Get a specific user profile including name, email, title, phone, and settings. Use to resolve user IDs returned from call data.
Inputs: userId (required).
list_callsARead-only
List Gong calls with optional date filtering. Returns minimal call metadata (ID, title, date, duration). Use get_call_summary for details or get_call_transcript for full transcript.
Inputs: cursor, toDateTime, workspaceId, fromDateTime.
list_library_foldersARead-only
List all public Gong call library folders for a workspace. Returns folder IDs and names to use with get_library_folder_calls. Use list_workspaces to find workspace IDs.
Inputs: workspaceId (required).
list_usersARead-only
List all Gong users in the organization. Returns name, email, title, and user IDs. Useful when you need a Gong user ID for search_calls filters like primaryUserIds, though for most "find calls by this person" cases you can pass their email directly to primaryUserEmails or participantEmails instead.
Inputs: cursor, includeAvatars.
list_workspacesARead-only
List all Gong workspaces with their IDs and names. Use workspace IDs as filters in list_calls, search_calls, get_trackers, and other tools.
Inputs: no named parameters.
search_callsARead-only
Search Gong calls with rich filters. The primary tool for narrowing down calls before drilling in with get_call_summary or get_call_transcript.
Supported filters:
When: fromDateTime, toDateTime (ISO 8601). Always prefer a date range — unbounded queries pull every call in the workspace.
Who hosted: primaryUserIds, primaryUserEmails, excludePrimaryUserIds.
Who participated (host OR attendee OR invitee): participantUserIds, participantEmails, excludeParticipantUserIds, excludeParticipantEmails.
Customer/topic: customerName (CRM account name, email domain, or title substring), titleContains, trackers (see note below).
Metadata: scope (External/Internal), direction, system (Zoom/Meet/…), language (eng/jpn/…), minDuration and maxDuration in seconds.
Output shape: include (array of keyPoints, trackers, highlights, speakers, comments, context, outline, media). Parties + brief + topics are always returned.
Behavior:
Auto-paginates up to ~5000 calls. If a user asks for a broad question, guide them to narrow with a date range, scope, minDuration, or customerName first.
trackers filter does case-insensitive substring match on tracker names. Names are workspace-specific — call get_trackers first to see what's configured before guessing.
When the rich output would exceed the output cap, the tool auto-falls back to a compact table showing all IDs/titles. Use get_call_summary on specific IDs to go deeper.
Filters compose with AND logic (primaryUserIds + customerName = hosted by user X on customer Y calls).
Usage pattern: narrow with search_calls → drill into specific calls with get_call_summary (AI summary) or get_call_transcript (exact quotes).
Inputs: scope, system, callIds, include, +17 more.
search_calls_by_accountARead-only
Find calls involving a specific account/company by matching email domains of external participants. The Gong API does not natively support filtering by account name — this tool fetches calls in the date range and post-filters on parties[].emailAddress. Auto-paginates up to maxCalls. For external tech-stack joins (e.g., "all calls with prospects on Klaviyo"), resolve domains upstream and pass them here.
Inputs: domains (required), cursor, maxCalls, toDateTime, +4 more.
search_calls_by_opportunityARead-only
Find calls linked to specific CRM Opportunities by ID or name substring. Requires Gong-CRM integration (Salesforce/HubSpot) — calls without CRM linkage will not match. Provide opportunityIds OR opportunityNames (or both).
Inputs: cursor, maxCalls, toDateTime, workspaceId, +4 more.
search_transcriptsARead-only
Free-text keyword search across call transcripts within a bounded date range. Use for ad-hoc searches like "calls mentioning competitor X". For recurring terms, prefer setting up Gong Trackers in the UI and using search_calls + get_call_summary — Trackers are server-side and dramatically cheaper. Date ranges > 30 days require additional narrowing via primaryUserIds or domains. Returns sentence-level matches with speaker attribution and timestamps.
Inputs: keywords (required), toDateTime (required), fromDateTime (required), domains, +6 more.
search_usersARead-only
Search and filter users by IDs or creation date. More flexible than list_users for resolving specific user IDs from call data.
Inputs: cursor, userIds, createdToDateTime, createdFromDateTime.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools have clearly distinct purposes, but search_calls and search_calls_by_account overlap somewhat since search_calls already supports customerName filtering via email domain. However, the custom account search tool explicitly explains its unique post-filtering role, reducing confusion.
All tools follow a consistent verb_noun pattern using snake_case: list_*, get_*, search_*. Multi-word names like search_calls_by_account and get_library_folder_calls are consistent with this pattern. There are no mixed conventions or vague verbs.
15 tools is within the well-scoped range for a comprehensive read-only API integration. Each tool covers a specific need such as call search, summary, transcript, user lookup, trackers, workspaces, and library folders, without unnecessary bloat.
The tool set covers the full lifecycle of exploring Gong call data: searching/filtering calls, retrieving metadata/summaries/transcripts, resolving users, managing trackers, and accessing library folders. There are no obvious dead ends—every tool feeds into others or serves a standalone purpose.
Maintenance
Related MCP Connectors
Read calls, contacts, users, teams and numbers; tag calls and create or update contacts.
Connects your AI assistant to a living playbook distilled from your team's sales calls.
One gateway, every app: Gmail, GitHub, Notion and more. Connect once, call any tool. Managed auth.
Search your SalesEQ meetings, read transcripts and summaries, and retrieve frames from recordings.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for the Gong API, enabling search and retrieval of calls, transcripts, attendees, next steps, and more.71,409 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Gong calls and transcripts through natural language, allowing users to list calls with date filtering and retrieve detailed transcripts with participant context.MIT
- AlicenseAqualityDmaintenanceProvides tools to access Gong call data, including listing calls, retrieving details and transcripts, searching across transcripts, and listing users.512 npmMIT
- AlicenseNot gradedqualityCmaintenancea full-surface Model Context Protocol gateway to the Gong REST API (calls, transcripts, users, activity, scorecards, coaching, CRM). Full API coverage, zero prerequisites, bring your own credentials.100 npm1MIT