关于 gongio-mcp
gongio-mcp 是面向 Gong.io 数据的 MCP 服务,可从 Claude 或其他 MCP 客户端查询通话、转录文本、用户和关键词追踪器。适合需要分析销售通话的团队。
主要功能
- 01按日期和工作区列出通话
- 02获取通话 AI 摘要与行动项
- 03按说明人归属的完整转录分页读取
- 04按参与者、客户、追踪器等条件搜索通话
- 05在转录文本中进行关键词搜索
- 06输出超长时自动回退为紧凑表格
适用场景
- 01汇总某一客户相关的通话要点
- 02查找提及竞争对手的通话记录
- 03在通话转录中核对具体原话
MCP 相关
该项目是 MCP 服务,向 Claude 等 MCP 客户端暴露 15 个工具,用于读取 Gong 的通话、转录、用户、库文件夹和追踪器数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gong MCP 服务
一个 MCP(Model Context Protocol)服务,可访问你的 Gong.io 数据。直接通过 Claude 或任何兼容 MCP 的客户端查询通话、转录文本、用户、关键词追踪器等。
工具速查
| 工具 | 描述 |
|---|---|
list_calls | 按日期/工作区筛选并列出通话 |
get_call | 获取特定通话的元数据 |
get_call_summary | AI 摘要:关键要点、主题、行动项 |
get_call_transcript | 完整的发言人标注转录文本(分页) |
search_calls | 丰富的通话搜索——参与者、客户、追踪器、范围、时长、标题等 |
search_calls_by_account | 按电子邮件域名查找涉及特定客户/公司的通话 |
search_calls_by_opportunity | 查找与特定 CRM 机会相关联的通话 |
search_transcripts | 在转录文本句子中进行自由文本关键词搜索 |
get_trackers | 列出关键词追踪器(竞争对手、主题等) |
list_workspaces | 列出工作区并获取可用于其他工具的 ID |
list_library_folders | 列出公开的通话库文件夹 |
get_library_folder_calls | 获取保存在特定通话库文件夹中的通话 |
get_user | 获取特定用户的个人资料 |
search_users | 按 ID 或创建日期搜索/筛选用户 |
list_users | 列出所有工作区用户 |
响应大小与上下文限制
search_calls 可能会返回大量数据。它在底层会:
- 每次查询自动分页,最多获取 约 5000 条通话(50 个 API 页面)
- 分页后应用客户端筛选器(参与者、客户、追踪器、时长等)
- 默认返回丰富的单条通话格式(元数据 + 摘要 + 主题 + 参与者)
内置防护机制:
- 如果格式化后的输出超过
MAX_MCP_OUTPUT_LENGTH(默认值为50000个字符,可通过环境变量配置),工具会自动回退为精简表格并发出警告。你仍会获得每条通话的 ID 和标题——可对特定通话使用get_call_summary深入查看。 include: ["outline"]开销很大(每条通话约 80KB)。请避免在多通话搜索中使用。- 追踪器数据仅显示与你的
trackers筛选条件匹配的追踪器(如果没有筛选条件,则仅显示非零追踪器)——不再有满屏的(0x)噪声。
如果查询触及输出上限,请缩小范围:
- 缩短
fromDateTime/toDateTime的时间范围 - 添加
scope: "External"或scope: "Internal" - 添加
minDuration: 600以跳过简短的未出席通话 - 添加
customerName或trackers筛选条件 - 移除
outline等开销较大的include选项
前置条件
- Node.js 18+ 或 Docker
- Gong API 凭据(Access Key 和 Secret)
获取 API 凭据
- 以管理员身份登录 Gong
- 前往 Company Settings → Ecosystem → API
- 点击 Create API Key
- 保存 Access Key 和 Secret(Secret 只会显示一次)
安装
选项 1:npx(无需安装)
npx gongio-mcp
选项 2:全局 npm 安装
npm install -g gongio-mcp
gongio-mcp
选项 3:从源代码安装
git clone https://github.com/JustinBeckwith/gongio-mcp.git
cd gongio-mcp
npm install
npm run build
node dist/index.js
选项 4:Docker(本地构建)
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
配置
将 Gong 凭据设置为环境变量:
export GONG_ACCESS_KEY="your-access-key"
export GONG_ACCESS_KEY_SECRET="your-secret-key"
也可以直接传入:
GONG_ACCESS_KEY=your-key GONG_ACCESS_KEY_SECRET=your-secret npx gongio-mcp
客户端设置
### Claude Desktop添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
使用 npx:
{
"mcpServers": {
"gong": {
"command": "npx",
"args": ["gongio-mcp"],
"env": {
"GONG_ACCESS_KEY": "your-access-key",
"GONG_ACCESS_KEY_SECRET": "your-secret-key"
}
}
}
}
使用 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
使用 npx:
claude mcp add gong -e GONG_ACCESS_KEY=your-key -e GONG_ACCESS_KEY_SECRET=your-secret -- npx gongio-mcp
使用 Docker(执行 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
可用工具
list_calls — 按日期筛选 Gong 通话
按可选的日期范围和工作区筛选条件列出通话。返回最简通话元数据(ID、标题、日期、时长)。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
fromDateTime | 否 | ISO 8601 格式的开始日期(例如:2024-01-01T00:00:00Z) |
toDateTime | 否 | ISO 8601 格式的结束日期(例如:2024-01-31T23:59:59Z) |
workspaceId | 否 | 按工作区 ID 筛选通话(使用 list_workspaces 查找 ID) |
cursor | 否 | 下一页的分页游标 |
get_call — 获取特定通话的元数据
获取单次通话的 URL、时间、方向、范围、系统及其他元数据。只需要通话元数据时,此工具比 get_call_summary 更快。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
callId | 是 | Gong 通话 ID(数字字符串) |
get_call_summary — AI 生成的通话摘要
获取 AI 生成的摘要,包括简要概述、要点、主题、行动项和详细大纲。这是了解通话内容的推荐方式——只有需要准确引述时才使用 get_call_transcript。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
callId | 是 | Gong 通话 ID(数字字符串) |
get_call_transcript — 完整的发言者归属转录文本
获取带有发言者归属信息的原始转录文本。转录文本采用分页方式(默认 10 KB),以防止上下文溢出——使用 maxLength 和 offset 浏览内容。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
callId | 是 | Gong 通话 ID(数字字符串) |
maxLength | 否 | 返回的最大字符数(默认值:10000,最大值:100000) |
offset | 否 | 分页起始字符偏移量(默认值:0) |
search_calls — 高级通话搜索
使用高级筛选条件搜索通话,包括参与者查询、客户名称搜索和丰富的内容选择。自动遍历所有结果,默认返回参与者信息、简要摘要和主题。
参数:
日期和工作区
| 参数 | 说明 |
|---|---|
fromDateTime | ISO 8601 格式的开始日期 |
toDateTime | ISO 8601 格式的结束日期 |
workspaceId | 按工作区 ID 筛选(使用 list_workspaces 查找 ID) |
callIds | 要检索的特定通话 ID 数组 |
主持人 / 参与者
| 参数 | 说明 |
|---|---|
primaryUserIds | 主持人用户 ID(服务端) |
primaryUserEmails | 主持人邮箱(不区分大小写) |
excludePrimaryUserIds | 排除这些主持人用户 ID |
participantUserIds | 任意参与者(主持人 / 出席者 / 邀请者)的用户 ID |
excludeParticipantUserIds | 排除任意参与者包含这些用户 ID 的通话 |
participantEmails | 任意参与者的邮箱(不区分大小写) |
excludeParticipantEmails | 排除任意参与者包含这些邮箱的通话 |
内容和客户
| 参数 | 描述 |
|---|---|
customerName | 模糊匹配 CRM 账户名称、外部邮箱域名和标题 |
titleContains | 按通话标题子字符串匹配(不区分大小写) |
trackers | 触发了匹配的追踪器(计数 > 0)的通话。因工作区而异——使用 get_trackers 进行发现 |
元数据
| 参数 | 描述 |
|---|---|
scope | External、Internal 或 Unknown |
direction | Inbound、Outbound、Conference 或 Unknown |
system | 会议平台(例如 Zoom)——按子字符串匹配,不区分大小写 |
language | 语言代码(例如 eng)——精确匹配,不区分大小写 |
minDuration | 最短时长(秒) |
maxDuration | 最长时长(秒) |
响应结构
| 参数 | 描述 |
|---|---|
include | 要返回的附加数据——参见下表 |
include 选项:
| 值 | 添加的内容 | 大小 |
|---|---|---|
keyPoints | AI 提取的要点列表 | 约 5KB/通话 |
trackers | 关键词/智能追踪器命中项及计数 | 约 3KB/通话 |
highlights | 按主题分组、由 AI 精选的精彩片段 | 约 3KB/通话 |
speakers | 每位参与者的发言时长 | 约 1KB/通话 |
comments | 留在通话中的公开评论 | 不定 |
context | CRM 账户/商机关联(HubSpot、Salesforce) | 约 1KB/通话 |
outline | 完整的分节大纲及条目 | 约 80KB/通话(较大) |
media | 音频/视频 URL(有效期 8 小时) | 约 3KB/通话 |
默认值(始终返回):参与者、简要摘要和主题——每次通话约 3KB。
筛选行为说明:
- 筛选条件采用 AND 逻辑组合。
primaryUserIds+participantUserIds会共同生效:主用户筛选在服务端进行,参与者筛选在之后进行。 customerName会匹配以下任一项:CRM 账户的 Name 字段、外部参与者的邮箱域名,或通话标题(不区分大小写的子字符串匹配)。trackers名称因工作区而异——先调用get_trackers查看已配置的追踪器。匹配采用不区分大小写的子字符串方式(因此,"competitor"会同时匹配"Competitors"和"Competitor Mentions")。- 设置
trackers筛选条件后,相关追踪器内容会自动包含在结果中,且输出只显示你指定的追踪器。不设置筛选条件时,只显示计数非零的追踪器。 - 没有匹配结果时会返回
"No calls found",而不是错误。
有关大结果的回退处理方式,请参阅响应大小和上下文限制。
search_calls_by_account — 按账户/公司查找通话(电子邮件域名)
通过匹配外部参与者的电子邮件域名,查找涉及特定账户或公司的通话。Gong API 原生不支持按账户名称筛选(这是一个已知的缺陷)——此工具会获取指定日期范围内的通话,然后按 parties[].emailAddress 进行后置筛选。该工具会自动对底层的 /v2/calls/extensive 端点分页,最多获取 maxCalls 条通话。
适用场景:
- 潜在客户有多个电子邮件域名(
acme.com、acme.io、地区顶级域名),而你需要查找所有域名 - 你需要合并外部丰富数据(例如,从 BuiltWith / Clearbit / 供应商技术栈图谱中获取“所有使用 Klaviyo 的潜在客户”)——先在上游解析出域名列表,再传入此工具
- 与会在不同系统中发生变化的 CRM 账户名称相比,基于域名的匹配更可靠
参数:
| 参数 | 必需 | 描述 |
|---|---|---|
domains | 是 | 电子邮件域名,例如 ["acme.com", "acme.io"]。如果任意外部参与者的电子邮件地址属于其中一个域名,则调用匹配。 |
fromDateTime | 否 | ISO 8601 格式的开始日期 |
toDateTime | 否 | ISO 8601 格式的结束日期 |
workspaceId | 否 | 按工作区 ID 筛选 |
primaryUserIds | 否 | 预先按通话主持人用户 ID 缩小范围(速度更快,在服务端执行) |
matchCrmAccount | 否 | 同时匹配 CRM Account 上下文对象名称中包含域名根名称的情况(例如,从 "acme.com" 得到 "acme")。需要 CRM 集成。默认值为 false。 |
maxCalls | 否 | 要获取和筛选的最大通话数(默认值:500,最大值:5000)。会自动对底层 API 进行分页。 |
cursor | 否 | 分页游标(高级) |
成本说明: 此操作会先获取数据再筛选。对于 90 天的时间范围,如果没有其他缩小范围的条件,通常会分页调用 1–5 次 API。长时间范围内可结合 primaryUserIds 来控制成本。
search_calls_by_opportunity — 查找与 CRM Opportunity 关联的通话
按 ID 或名称子字符串查找与特定 CRM Opportunity 关联的通话。需要 Gong-CRM 集成(Salesforce / HubSpot)——没有 CRM 关联的通话将无法匹配。
适用于以下情况:
- 你想获取特定交易中的所有通话——
opportunityIds: ["006xxxxx"]是最精确的选项 - Opportunity 名称具有描述性(例如
"Acme Q4 Renewal"),且你想通过模糊匹配查找已重命名或重复的 Opportunity
参数:
| 参数 | 必需 | 描述 |
|---|---|---|
opportunityIds | opportunityIds 或 opportunityNames 至少需要一个 | CRM Opportunity ID(例如 Salesforce 的 18 位 ID) |
opportunityNames | opportunityIds 或 opportunityNames 至少需要一个 | 名称子字符串(不区分大小写),与 Opportunity 上下文对象的 Name 字段进行匹配 |
fromDateTime | 否 | ISO 8601 格式的开始日期 |
toDateTime | 否 | ISO 8601 格式的结束日期 |
workspaceId | 否 | 按工作区 ID 筛选 |
primaryUserIds | 否 | 预先按通话主持人用户 ID 缩小范围 |
maxCalls | 否 | 要获取和筛选的最大通话数(默认值:500,最大值:5000) |
cursor | 否 | 分页游标(高级) |
成本说明: 使用与 search_calls_by_account 相同的先获取数据再筛选模式。CRM 上下文查询不会增加 API 调用——它会复用同一个 /v2/calls/extensive 请求,并设置 context: "Extended"。
search_transcripts — 在转录文本中进行自由文本关键词搜索
在限定日期范围内,对通话转录文本中的句子进行自由文本关键词搜索。分两个阶段执行:(1) /v2/calls/extensive 按日期和可选的 primaryUserIds / domains 缩小通话范围;(2) /v2/calls/transcript 获取缩小范围内的转录文本,并返回包含发言者归属信息和时间戳的句子级匹配结果。
对于需要重复搜索的词语,优先使用 Gong Trackers。 对于竞争对手名称、ESP/技术术语(Klaviyo、Braze、Iterable、Postscript、Attentive、Sendgrid、Customer.io 等)以及其他你会反复搜索的词语,可在界面中将其设置为 Gong Trackers(一次性设置,约 20 个词语需 30 分钟)。然后改用 get_trackers + search_calls + get_call_summary。Trackers 在服务端运行,成本大幅降低,并且会原生显示计数和时间戳。临时的一次性搜索请使用 search_transcripts。
成本保护: 日期范围超过 30 天时,必须使用 primaryUserIds 或 domains 进一步缩小范围。对 6 个月范围进行无约束扫描会消耗 API 配额,因此会在架构层面被拒绝。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
keywords | 是 | 要搜索的关键词。每个关键词至少为 2 个字符。 |
fromDateTime | 是 | 日期范围的开始时间(ISO 8601)。 |
toDateTime | 是 | 日期范围的结束时间(ISO 8601)。 |
primaryUserIds | 如果时间范围超过 30 天且未设置 domains,则必填 | 扫描前,将范围缩小到由这些用户主持的通话 |
domains | 如果时间范围超过 30 天且未设置 primaryUserIds,则必填 | 扫描前,将范围缩小到包含这些域名外部人员的通话 |
workspaceId | 否 | 按工作区 ID 筛选 |
caseSensitive | 否 | 默认值为 false。 |
wholeWord | 否 | 默认值为 true——"ai" 不会匹配 "said" 或 "again"。设为 false 可进行子字符串匹配。 |
maxCalls | 否 | 要扫描的最大通话数(默认值:500)。 |
maxMatchesPerCall | 否 | 每通话返回的句子匹配结果上限(默认值:10)——避免匹配过多的通话导致上下文溢出。 |
返回: 按通话分组的句子级匹配结果,包括说话人姓名和所属方(如有)、匹配的关键词、时间戳(mm:ss)以及句子片段。
get_trackers — 列出关键词跟踪器
列出所有关键词跟踪器定义,包括跟踪的短语、所属方(跟踪谁的发言)和筛选查询。说明 get_call_summary 输出中可见的跟踪器命中结果。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
workspaceId | 否 | 按工作区 ID 筛选跟踪器(使用 list_workspaces 查找 ID) |
list_workspaces — 列出所有工作区
列出所有 Gong 工作区及其 ID 和名称。将这些 ID 用作 list_calls、search_calls、get_trackers 和其他工具中的筛选条件。大多数公司有 1–3 个工作区(例如按地区或产品线划分)。
参数: 无
get_user — 获取用户个人资料
获取指定用户的个人资料,包括姓名、电子邮件、职位、电话和设置。可用于解析通话数据返回的用户 ID。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
userId | 是 | Gong 用户 ID(数字字符串) |
search_users — 按筛选条件搜索用户
按 ID 或创建日期搜索和筛选用户。与 list_users 相比,它更适合批量解析通话数据中的指定用户 ID。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
userIds | 否 | 要查询的特定用户 ID 数组 |
createdFromDateTime | 否 | 筛选此日期时间之后创建的用户(ISO 8601) |
createdToDateTime | 否 | 筛选此日期时间之前创建的用户(ISO 8601) |
cursor | 否 | 分页游标 |
list_users — 列出所有工作区用户
列出工作区中的所有 Gong 用户。返回每位用户的姓名、电子邮件和职位。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
cursor | 否 | 分页游标 |
includeAvatars | 否 | 是否包含用户头像 URL |
list_library_folders — 列出公开通话库文件夹
列出某个工作区中所有公开的 Gong 通话库文件夹。返回可与 get_library_folder_calls 配合使用的文件夹 ID 和名称。不返回私有文件夹和已归档文件夹。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
workspaceId | 是 | 要列出文件夹的工作区 ID(使用 list_workspaces 查找 ID) |
get_library_folder_calls — 获取库文件夹中的通话
获取保存在指定 Gong 库文件夹中的所有通话。返回通话 ID、标题、整理者备注,以及片段的时间信息。通话 ID 可直接传递给 get_call_summary 或 get_call_transcript。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
folderId | 是 | 库文件夹 ID(数字字符串,来自 list_library_folders) |
可用资源
gong://users — 工作区中的所有用户
返回 Gong 工作区中所有用户的 Markdown 格式列表。可用于查找通话数据中的用户 ID 对应的用户。
**参数:**无
示例提示词
连接到 Claude 后,你可以这样提问:
- “列出我上周的 Gong 通话”
- “获取通话 123456789 的详细信息”
- “显示通话 123456789 的摘要”
- “获取通话 789012 的转录”
- “我们在 Gong 中有哪些工作区?”
- “Gong 正在跟踪哪些竞争对手关键词?”
- “我们在 Gong 中有哪些通话库文件夹?”
- “显示‘Best Discovery Calls’库文件夹中的通话”
- “我们 Gong 工作区中有哪些用户?”
- “搜索 2025 年 7 月由 Justin(用户 ID 232255198215877499)主持的通话”
- “查找这些用户 ID:111、222、333”
- “显示过去 60 天内与 acme.com 或 acme.io 的任何人进行的所有通话”
- “查找与商机 006xxxxx 关联的所有通话”
- “查找第三季度客户提及 Klaviyo 或 Braze 的通话,并筛选出 John 的通话”
贡献
有意参与贡献?请查看 CONTRIBUTING.md,了解开发环境设置、测试说明和指南。
仓库包含 gong-openapi.json——Gong API OpenAPI 规范的本地副本。添加新工具时,它可作为参考:无需离开编辑器,即可用它查找端点路径、参数名称和响应结构。可从 Gong API 文档 下载最新规范。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。