PluginBench
MCP Server
Active
MIT

io.github.JustinBeckwith/gongio-mcp MCP Server

io.github.JustinBeckwith/gongio-mcp

Access Gong.io calls, transcripts, and users directly from Claude with advanced search and AI summaries.

What is the io.github.JustinBeckwith/gongio-mcp MCP server?

The Gong MCP Server is an MCP (Model Context Protocol) server that provides access to your Gong.io data, including calls, transcripts, users, and keyword trackers. It enables Claude and other MCP-compatible clients to query call metadata, retrieve AI-generated summaries, search transcripts, and filter calls by participant, customer, scope, and other criteria.

This server connects Claude to your Gong.io account, letting you search and analyze sales calls without leaving your AI assistant. Query calls by date, participant, customer, or keyword; retrieve full transcripts with speaker attribution; get AI-generated summaries with key points and action items; and access user and tracker data. Built-in guardrails prevent context overflow by auto-paginating results and falling back to compact tables when output exceeds limits.

How to install io.github.JustinBeckwith/gongio-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "gongio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "gongio-mcp"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • list_calls — List calls with date/workspace filtering and minimal metadata (ID, title, date, duration)
  • get_call — Get metadata for a specific call including URL, timing, direction, scope, and system
  • get_call_summary — AI-generated call summary with overview, key points, topics, action items, and detailed outline
  • get_call_transcript — Full speaker-attributed transcript with pagination support (default 10KB, max 100KB)
  • search_calls — Advanced call search with filters for participant, customer, tracker, scope, duration, title, and optional rich content (key points, highlights, speakers, outline, media)
  • search_calls_by_account — Find calls involving a specific account/company by matching email domains of external participants
  • search_calls_by_opportunity — Find calls linked to specific CRM Opportunities by ID or name substring (requires Gong-CRM integration)
  • search_transcripts — Free-text keyword search across call transcript sentences with speaker attribution and timestamps
  • get_trackers — List keyword trackers (competitors, topics, etc.) configured in the workspace
  • list_workspaces — List workspaces and get IDs for use in other tools
  • list_library_folders — List public call library folders
  • get_library_folder_calls — Get calls saved in a specific library folder
  • get_user — Get a specific user's profile
  • search_users — Search/filter users by IDs or creation date
  • list_users — List all workspace users

Use cases

  • Search all calls with a specific prospect by email domain and retrieve AI summaries to understand deal progress
  • Find calls linked to a CRM opportunity and extract key points, action items, and competitor mentions to prepare for next steps
  • Search transcripts for mentions of specific competitors or product features across your entire call library
  • Analyze talk time and participant engagement by retrieving call metadata and speaker statistics for coaching
  • Retrieve full transcripts with pagination to find exact quotes or verify what was discussed in a particular call

io.github.JustinBeckwith/gongio-mcp MCP server FAQ

What is the Gong MCP Server?

It's an MCP server that connects Claude to your Gong.io account, letting you search calls, retrieve transcripts, get AI summaries, and access user/tracker data without leaving Claude.

Is it free to use?

The server itself is open-source (MIT license). You need a Gong.io account with API credentials (Access Key and Secret) to use it.

How do I install it in Claude Desktop?

Add the server to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows) with your Gong API credentials as environment variables. You can use npx or Docker.

How do I install it in Cursor?

Use the `claude mcp add` command with your Gong API credentials: `claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- npx gongio-mcp`

What authentication is required?

You need Gong.io admin access to generate API credentials (Access Key and Secret) from Company Settings → Ecosystem → API. Pass these as environment variables GONG_ACCESS_KEY and GONG_ACCESS_KEY_SECRET.

How does it handle large result sets?

The server auto-paginates up to ~5000 calls per query and includes built-in guardrails: if formatted output exceeds 50,000 characters (configurable), it automatically falls back to a compact table with call IDs and titles. You can then drill into specific calls with get_call_summary.

README (reference)

Source of truth, from the repository.

Gong MCP Server

npm version License: MIT

<img src="gong.png" alt="A cute red panda hitting a gong" width="300" />

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

ToolDescription
list_callsList calls with date/workspace filtering
get_callGet metadata for a specific call
get_call_summaryAI summary: key points, topics, action items
get_call_transcriptFull speaker-attributed transcript (paginated)
search_callsRich call search — participant, customer, tracker, scope, duration, title, and more
search_calls_by_accountFind calls involving a specific account/company by email domain
search_calls_by_opportunityFind calls linked to specific CRM Opportunities
search_transcriptsFree-text keyword search across transcript sentences
get_trackersList keyword trackers (competitors, topics, etc.)
list_workspacesList workspaces and get IDs for use in other tools
list_library_foldersList public call library folders
get_library_folder_callsGet calls saved in a specific library folder
get_userGet a specific user's profile
search_usersSearch/filter users by IDs or creation date
list_usersList all workspace users

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 (default 50000 chars, 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 with get_call_summary on 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 trackers filter (or non-zero trackers if no filter) — no more walls of (0x) noise.

If your query hits the output cap, narrow it:

  1. Tighten fromDateTime / toDateTime
  2. Add scope: "External" or scope: "Internal"
  3. Add minDuration: 600 to skip short no-shows
  4. Add customerName or trackers filter
  5. Drop heavy include options like outline

Prerequisites

  • Node.js 18+ or Docker
  • Gong API credentials (Access Key and Secret)
<details> <summary><strong>Getting API Credentials</strong></summary>
  1. Log into Gong as an admin
  2. Go to Company Settings → Ecosystem → API
  3. Click Create API Key
  4. Save both the Access Key and Secret (the secret is only shown once)
</details> <details> <summary><strong>Installation</strong></summary>

Option 1: npx (no install required)

npx gongio-mcp

Option 2: Global npm install

npm install -g gongio-mcp
gongio-mcp

Option 3: From source

git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
npm install
npm run build
node dist/index.js

Option 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-mcp
</details> <details> <summary><strong>Configuration</strong></summary>

Set 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-mcp
</details> <details> <summary><strong>Client Setup</strong></summary>

Claude 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-mcp

Using 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-mcp
</details>

Available Tools

<a name="list_calls"></a>

<details> <summary><code>list_calls</code> — List Gong calls with date filtering</summary>

List calls with optional date range and workspace filters. Returns minimal call metadata (ID, title, date, duration).

Parameters:

ParameterRequiredDescription
fromDateTimeNoStart date in ISO 8601 format (e.g., 2024-01-01T00:00:00Z)
toDateTimeNoEnd date in ISO 8601 format (e.g., 2024-01-31T23:59:59Z)
workspaceIdNoFilter calls by workspace ID (use list_workspaces to find IDs)
cursorNoPagination cursor for next page
</details>

<a name="get_call"></a>

<details> <summary><code>get_call</code> — Get metadata for a specific call</summary>

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:

ParameterRequiredDescription
callIdYesGong call ID (numeric string)
</details>

<a name="get_call_summary"></a>

<details> <summary><code>get_call_summary</code> — AI-generated call summary</summary>

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:

ParameterRequiredDescription
callIdYesGong call ID (numeric string)
</details>

<a name="get_call_transcript"></a>

<details> <summary><code>get_call_transcript</code> — Full speaker-attributed transcript</summary>

Get the raw transcript with speaker attribution. Transcripts are paginated (default 10KB) to prevent context overflow — use maxLength and offset to navigate.

Parameters:

ParameterRequiredDescription
callIdYesGong call ID (numeric string)
maxLengthNoMaximum characters to return (default: 10000, max: 100000)
offsetNoCharacter offset to start from for pagination (default: 0)
</details>

<a name="search_calls"></a>

<details> <summary><code>search_calls</code> — Advanced call search</summary>

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

ParameterDescription
fromDateTimeStart date in ISO 8601 format
toDateTimeEnd date in ISO 8601 format
workspaceIdFilter by workspace ID (use list_workspaces to find IDs)
callIdsArray of specific call IDs to retrieve

Host / participant

ParameterDescription
primaryUserIdsHost user IDs (server-side)
primaryUserEmailsHost emails (case-insensitive)
excludePrimaryUserIdsExclude these host user IDs
participantUserIdsAny participant (host/attendee/invitee) user IDs
excludeParticipantUserIdsExclude calls where any participant has these user IDs
participantEmailsAny participant emails (case-insensitive)
excludeParticipantEmailsExclude calls where any participant has these emails

Content & customer

ParameterDescription
customerNameFuzzy match against CRM account name, external email domains, and titles
titleContainsSubstring match on call title (case-insensitive)
trackersCalls where matching tracker(s) fired (count > 0). Workspace-specific — use get_trackers to discover

Metadata

ParameterDescription
scopeExternal, Internal, or Unknown
directionInbound, Outbound, Conference, or Unknown
systemConferencing platform (e.g., Zoom) — case-insensitive substring
languageLanguage code (e.g., eng) — case-insensitive exact match
minDurationMinimum duration in seconds
maxDurationMaximum duration in seconds

Response shape

ParameterDescription
includeAdditional data to return — see table below

include options:

ValueWhat it addsSize
keyPointsAI-extracted key points as bullets~5KB/call
trackersKeyword/smart tracker hits with counts~3KB/call
highlightsAI-curated highlight clips grouped by theme~3KB/call
speakersTalk time per participant~1KB/call
commentsPublic comments left on the callvaries
contextCRM account/opportunity linkage (HubSpot, Salesforce)~1KB/call
outlineFull section-by-section outline with items~80KB/call (large)
mediaAudio/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 + participantUserIds compose: primary narrows server-side, participant post-filters.
  • customerName matches any of: CRM account Name field, external participant email domain, or call title (case-insensitive substring).
  • trackers names are workspace-specific — call get_trackers first to see what's configured. Match is case-insensitive substring (so "competitor" matches both "Competitors" and "Competitor Mentions").
  • When trackers filter 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.

</details>

<a name="search_calls_by_account"></a>

<details> <summary><code>search_calls_by_account</code> — Find calls by account/company (email domain)</summary>

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 all
  • You 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:

ParameterRequiredDescription
domainsYesEmail domains, e.g. ["acme.com", "acme.io"]. A call matches if any external participant has an email at one of these domains.
fromDateTimeNoStart date in ISO 8601 format
toDateTimeNoEnd date in ISO 8601 format
workspaceIdNoFilter by workspace ID
primaryUserIdsNoPre-narrow by call host user IDs (faster, server-side)
matchCrmAccountNoAlso match where a CRM Account context object name contains a domain root (e.g. "acme" from "acme.com"). Requires CRM integration. Default false.
maxCallsNoMax calls to fetch & filter (default: 500, max: 5000). Auto-paginates underlying API.
cursorNoPagination 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.

</details>

<a name="search_calls_by_opportunity"></a>

<details> <summary><code>search_calls_by_opportunity</code> — Find calls linked to a CRM Opportunity</summary>

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 option
  • Opportunity names are descriptive (e.g. "Acme Q4 Renewal") and you want fuzzy matching across renamed/duplicated opportunities

Parameters:

ParameterRequiredDescription
opportunityIdsAt least one of opportunityIds or opportunityNames is requiredCRM Opportunity IDs (e.g., Salesforce 18-character IDs)
opportunityNamesAt least one of opportunityIds or opportunityNames is requiredName substrings (case-insensitive) matched against the Name field of Opportunity context objects
fromDateTimeNoStart date in ISO 8601 format
toDateTimeNoEnd date in ISO 8601 format
workspaceIdNoFilter by workspace ID
primaryUserIdsNoPre-narrow by call host user IDs
maxCallsNoMax calls to fetch & filter (default: 500, max: 5000)
cursorNoPagination 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".

</details>

<a name="search_transcripts"></a>

<details> <summary><code>search_transcripts</code> — Free-text keyword search across transcripts</summary>

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:

ParameterRequiredDescription
keywordsYesKeywords to search for. Each must be at least 2 characters.
fromDateTimeYesStart of date window (ISO 8601).
toDateTimeYesEnd of date window (ISO 8601).
primaryUserIdsRequired if window > 30 days and domains not setNarrow to calls hosted by these users before scanning
domainsRequired if window > 30 days and primaryUserIds not setNarrow to calls with external parties from these domains before scanning
workspaceIdNoFilter by workspace ID
caseSensitiveNoDefault false.
wholeWordNoDefault true — "ai" will not match "said" or "again". Set false for substring matching.
maxCallsNoMax calls to scan (default: 500).
maxMatchesPerCallNoMax 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.

</details>

<a name="get_trackers"></a>

<details> <summary><code>get_trackers</code> — List keyword trackers</summary>

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:

ParameterRequiredDescription
workspaceIdNoFilter trackers by workspace ID (use list_workspaces to find IDs)
</details>

<a name="list_workspaces"></a>

<details> <summary><code>list_workspaces</code> — List all workspaces</summary>

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

</details>

<a name="get_user"></a>

<details> <summary><code>get_user</code> — Get a user's profile</summary>

Get a specific user's profile including name, email, title, phone, and settings. Useful for resolving user IDs returned from call data.

Parameters:

ParameterRequiredDescription
userIdYesGong user ID (numeric string)
</details>

<a name="search_users"></a>

<details> <summary><code>search_users</code> — Search users by filter</summary>

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:

ParameterRequiredDescription
userIdsNoArray of specific user IDs to look up
createdFromDateTimeNoFilter users created after this datetime (ISO 8601)
createdToDateTimeNoFilter users created before this datetime (ISO 8601)
cursorNoPagination cursor
</details>

<a name="list_users"></a>

<details> <summary><code>list_users</code> — List all workspace users</summary>

List all Gong users in your workspace. Returns name, email, and title for each user.

Parameters:

ParameterRequiredDescription
cursorNoPagination cursor
includeAvatarsNoWhether to include user avatar URLs
</details>

<a name="list_library_folders"></a>

<details> <summary><code>list_library_folders</code> — List public call library folders</summary>

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:

ParameterRequiredDescription
workspaceIdYesWorkspace ID to list folders for (use list_workspaces to find IDs)
</details>

<a name="get_library_folder_calls"></a>

<details> <summary><code>get_library_folder_calls</code> — Get calls in a library folder</summary>

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:

ParameterRequiredDescription
folderIdYesLibrary folder ID (numeric string, from list_library_folders)
</details>

Available Resources

<a name="gong-users"></a>

<details> <summary><code>gong://users</code> — All workspace users</summary>

Returns a markdown-formatted list of all users in your Gong workspace. Useful for resolving user IDs found in call data.

Parameters: None

</details>

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.

Related MCP servers

MCP server for link checking using linkinator

3
TypeScript
MIT
View repository →

MCP server for Pylon customer support platform

4
JavaScript
MIT
View repository →

Manage Instagram and Facebook automations, conversations, templates, and analytics with AI.

Gives Claude the ability to analyze audio files directly—spectral, harmonic, rhythm, stereo, and structural analysis without images or guessing.

41
Rust
MIT
View repository →

Read-only SEO and GEO audits with Google Search Console, Bing, and website crawling.

0
TypeScript
MIT
View repository →

Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

0
TypeScript
MIT
View repository →