Gorgias MCP服务器

一个将Gorgias帮助平台API暴露给AI助手的MCP服务器,提供112个工具用于票务搜索、客户管理和分析。

  • by benpalmer1
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 benpalmer1/Gorgias-MCP-Server

使用说明

Gorgias MCP服务器

一个MCP服务器,向人工智能助手公开整个Gorgias帮助台API。


这是什么?

Gorgias MCP服务器是一个 模型上下文协议 该服务器允许人工智能助手Claude和任何其他兼容MCP的客户端完全访问Gorgias帮助台平台。它与 112工具:3个处理最常见工作流的高级“智能”工具,以及109个涵盖每个Gorgias REST端点的原始API工具。

将其连接到Claude Desktop(或任何MCP客户端),您可以搜索工单、阅读对话、提取分析、管理客户,并通过自然语言操作整个帮助台。


示例用法

你: 上周我们买了几张票?

克劳德使用 gorgias_smart_stats

上周你收到了142张票,比前一周下降了12%。 热门渠道:电子邮件(89)、聊天(31)、电话(22)。

你: 给我看看关于退款的未决问题

克劳德使用 gorgias_smart_search

找到8张符合“退款”条件的未结门票:

  • #4521--“未收到退款”(爱丽丝·约翰逊,2天前)
  • #4518--“商品错了,想要退款”(鲍勃·史密斯,3天前)
  • ...

你: 4521号票中的对话是什么?

克劳德使用 gorgias_smart_get_ticket

票#4521-“未收到退款”(打开,普通优先级) 客户爱丽丝·约翰逊(alice@example.com),分配给Sarah

  • 3月24日,爱丽丝(客户): “嗨,我两周前退回了订单,但还没有收到退款……”
  • 3月24日,Sarah(经纪人): “我可以看到您的退货已收到。让我检查退款状态……”
  • 3月25日,爱丽丝(客户): “有更新吗?”

智能工具

这三个智能工具是主要接口。它们组成多个API调用,缓存引用数据,并将项目响应转换为干净的LLM友好格式。

工具 说明
gorgias_smart_search 多策略门票搜索。自动检测电子邮件、工单ID(#12345)、客户名称、视图名称和主题关键字。通过逐步扩大搜索策略来最大限度地提高结果质量。
gorgias_smart_get_ticket 检索带有完整对话线程的票证。并行获取票证和消息,按时间顺序排序,并投影到精简到基本字段的紧凑格式中。
gorgias_smart_stats 具有自动默认值、输入验证、维度解析和代理名称到ID解析的分析。涵盖音量、性能、质量、自动化、语音和故障范围。

这些可以处理80%的常见用例。109个原始工具为其他一切提供了直接的API访问--批量操作、自定义字段管理、规则配置等等。


安装

需要Node.js 20或更高版本。(节点18于2025年4月达到生命周期终点。)

npm install -g gorgias-mcp-server

或者直接使用npx运行:

npx gorgias-mcp-server

配置

需要三个环境变量:

变量 描述 示例
GORGIAS_DOMAIN 您的Gorgias子域或完整URL mycompany 或 mycompany.gorgias.com
GORGIAS_EMAIL API用户的电子邮件地址 admin@mycompany.com
GORGIAS_API_KEY REST API密钥 a1b2c3d4e5f6...

获取API密钥

  1. 登录您的Gorgias帮助台
  2. 首选 设置 > REST API
  3. 点击 添加REST API密钥
  4. 复制生成的密钥

服务器接受灵活的域格式: mycompany, mycompany.gorgias.com,或 https://mycompany.gorgias.com 所有工作。

访问级别

控制哪些工具暴露在AI中 GORGIAS_ACCESS_LEVEL:

级别 工具 用例
readonly 50个工具(全部为读取/搜索/列表/智能工具) 分析机器人、仪表板、监控
agent 61个工具(只读+回复、关闭、标记、重新分配) 面向客户的支持聊天机器人
admin 所有112个工具(默认) 内部管理工具,API完全访问
GORGIAS_ACCESS_LEVEL=readonly   # Only read operations exposed
GORGIAS_ACCESS_LEVEL=agent      # Read + support agent workflow
GORGIAS_ACCESS_LEVEL=admin      # Full access (default if not set)

这 代理 层允许聊天机器人:创建工单、回复客户、更新消息、更新工单状态/优先级/受让人、管理工单标签和自定义字段,以及更新客户字段值。它阻止:删除、帐户设置、规则、宏、集成、用户管理和团队管理。

未在给定访问级别注册的工具对AI来说是完全不可见的——它无法看到或调用它们。


MCP客户端设置

克劳德桌面版

将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "gorgias": {
      "command": "npx",
      "args": ["gorgias-mcp-server"],
      "env": {
        "GORGIAS_DOMAIN": "mycompany",
        "GORGIAS_EMAIL": "admin@mycompany.com",
        "GORGIAS_API_KEY": "your-api-key-here",
        "GORGIAS_ACCESS_LEVEL": "agent"
      }
    }
  }
}

配置文件位于:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

克劳德代码(CLI)

使用将服务器添加到项目中 claude mcp add-json:

claude mcp add-json gorgias '{
  "command": "npx",
  "args": ["gorgias-mcp-server"],
  "env": {
    "GORGIAS_DOMAIN": "mycompany",
    "GORGIAS_EMAIL": "admin@mycompany.com",
    "GORGIAS_API_KEY": "your-api-key-here",
    "GORGIAS_ACCESS_LEVEL": "readonly"
  }
}' -s project

这创建了一个 .mcp.json 项目根目录中的文件。您还可以在用户范围内添加它 -s user.

或者,创建 .mcp.json 在项目根目录中手动:

{
  "mcpServers": {
    "gorgias": {
      "command": "npx",
      "args": ["gorgias-mcp-server"],
      "env": {
        "GORGIAS_DOMAIN": "mycompany",
        "GORGIAS_EMAIL": "admin@mycompany.com",
        "GORGIAS_API_KEY": "your-api-key-here",
        "GORGIAS_ACCESS_LEVEL": "readonly"
      }
    }
  }
}

注: 您还可以使用 claude mcp add 直接。所有旗帜(--transport, --env, --scope)一定要来 之前 服务器名称,以及 -- 将名称与命令分开:

claude mcp add --transport stdio --scope project \
  --env GORGIAS_DOMAIN=mycompany \
  --env GORGIAS_EMAIL=admin@mycompany.com \
  --env GORGIAS_API_KEY=your-api-key-here \
  --env GORGIAS_ACCESS_LEVEL=readonly \
  gorgias -- npx gorgias-mcp-server

对于大多数用户来说, claude mcp add-json (如上所示)更简单。

注: 如果在会话中添加MCP服务器,可能需要重新启动Claude Code(/quit 并重新启动),以便工具出现。验证与的连接 claude mcp list.

程序化使用(Web应用程序和聊天机器人)

该包导出a createGorgiasServer() 工厂,用于嵌入到您自己的应用程序中。这就是如何将Gorgias MCP集成到web应用程序聊天机器人后端。

npm install gorgias-mcp-server @modelcontextprotocol/sdk

Express/Node.js

import express from "express";
import { randomUUID } from "node:crypto";
import { createGorgiasServer } from "gorgias-mcp-server";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const app = express();
app.use(express.json());

// Create a transport and server per session
const sessions = new Map<string, StreamableHTTPServerTransport>();

// Production: add authentication, CORS, and rate limiting to this endpoint.
app.post("/mcp", async (req, res) => {
  const sessionId = req.headers["mcp-session-id"] as string | undefined;

  if (sessionId && sessions.has(sessionId)) {
    // Existing session — route to its transport
    await sessions.get(sessionId)!.handleRequest(req, res, req.body);
    return;
  }

  // New session — create a server locked to the "agent" tier
  const server = createGorgiasServer({
    domain: process.env.GORGIAS_DOMAIN!,
    email: process.env.GORGIAS_EMAIL!,
    apiKey: process.env.GORGIAS_API_KEY!,
    accessLevel: "agent",
  });

  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: () => randomUUID(),
  });

  transport.onclose = () => {
    if (transport.sessionId) sessions.delete(transport.sessionId);
  };

  await server.connect(transport);
  if (transport.sessionId) sessions.set(transport.sessionId, transport);
  await transport.handleRequest(req, res, req.body);
});

app.listen(3000);

无状态(无服务器/边缘)

对于无法维护内存会话的无服务器环境:

import { createGorgiasServer } from "gorgias-mcp-server";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

// Conceptual pattern — adapt to your framework's handler signature.
// Maps to: Vercel (req, res), Netlify/AWS Lambda (event, context), Cloudflare Workers (request).
export async function handler(req, res) {
  const server = createGorgiasServer({
    domain: process.env.GORGIAS_DOMAIN!,
    email: process.env.GORGIAS_EMAIL!,
    apiKey: process.env.GORGIAS_API_KEY!,
    accessLevel: "readonly",
  });

  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: undefined, // stateless mode
  });

  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
}

出口API

import {
  createGorgiasServer,      // Factory — returns a configured McpServer
  type GorgiasServerConfig,
  type AccessLevel,           // "readonly" | "agent" | "admin"
  type AccessFilterStats,     // { registeredCount, skippedCount }
  type GorgiasClientConfig,
  isToolAllowed,              // Check if a tool passes an access level
  getAccessFilterStats,       // Read tool registration counts from a server
  AGENT_WRITE_TOOLS,          // Set of tool names allowed in agent tier
  GorgiasError,               // Base error class
  GorgiasApiError,            // API-specific error (status, endpoint, body)
} from "gorgias-mcp-server";

可用工具

112种工具按类别排列:

类别 计数 描述
智能工具 3 智能搜索、票务详情和分析
门票 13 列出、获取、创建、更新、删除工单;管理门票上的标签和自定义字段
客户 12 列出、获取、创建、更新、删除客户;合并客户;管理数据和字段值
消息 6 按票证列出消息,列出所有消息,获取、创建、更新、删除
标签 7 完全CRUD、批量删除和标签合并
视图 7 全CRUD;列出和搜索视图项
报告 1 检索报告数据(旧统计端点已被删除)
用户 5 用户管理和查找
团队 5 团队管理
规则 6 自动化规则CRUD和管理
宏 7 宏模板CRUD和管理
集成 5 集成配置和管理
自定义字段 5 自定义字段定义CRUD
满意度调查 4 调查配置和结果
乔布斯 5 后台作业跟踪和管理
事件 2 事件检索
语音通话 7 语音通话管理和记录
小部件 5 聊天小部件配置
搜索 1 原始全文搜索
账户 4 帐户设置和配置
文件 2 文件上传和管理

术语和行业优化

智能工具使用主题关键字检测将查询路由到正确的搜索策略。默认关键字集针对澳大利亚、美国和英国的电子商务客户支持进行了优化,涵盖了运营商、地区拼写、支付提供商、税务条款、消费者法律机构和150多个常见的电子商务术语。

要为其他行业(如SaaS、医疗保健、金融)进行定制,请编辑 TOPIC_KEYWORDS 开始 src/tools/smart-search.ts。关键字应反映客户在联系支持时实际使用的词汇。


安全

  • 错误清除器剥离凭证、令牌、供应商API密钥前缀(条纹 sk_live_,松弛 xoxb-,GitHub ghp_,AWS AKIA…等)、电子邮件地址、内部/环回IP以及所有错误消息到达LLM之前的敏感文件系统路径。
  • HTTP客户端强制每个请求超时30秒,并限制 Retry-After 标头为60秒,因此停滞或配置错误的上游无法冻结工具调用。
  • 访问级别(readonly, agent, admin)控制哪些工具暴露在外。开始 readonly 除非需要写访问。 默认值为 admin 如果 GORGIAS_ACCESS_LEVEL 未设置 --明确地将其设置为生产。
  • 在 agent 模式,AI 能 发送面向客户的消息并修改工单。在启用它之前,请确保这是故意的。
  • 客户数据(工单消息、姓名、电子邮件地址)作为正常MCP操作的一部分传递给LLM。如果您处理敏感数据,请将其纳入合规性审查。
  • 引用数据(用户、标签、视图、自定义字段、团队)在进程内缓存10分钟,以减少API调用。缓存为per-GorgiasClient 实例,并存在于普通进程内存中。重新启动服务器以刷新。
  • 永远不要承诺你的 GORGIAS_API_KEY 源代码控制。使用环境变量或秘密管理器。

故障排除

Missing required environment variables

集 GORGIAS_DOMAIN, GORGIAS_EMAIL,以及 GORGIAS_API_KEYThe domain 接受 mycompany, mycompany.gorgias.com,或 https://mycompany.gorgias.com.

401 Unauthorized / Authentication failed

  • 验证电子邮件是否与创建API密钥的用户帐户匹配(设置>REST API)。
  • 验证API密钥未被旋转或撤销。
  • 确认 GORGIAS_DOMAIN 匹配密钥发放的租户。

403 Forbidden

  • Gorgias REST API被封闭到特定的计划层。在Gorgias管理UI中检查您的帐户计划。
  • API密钥背后的用户可能没有访问资源的权限(例如,某些端点需要管理员角色)。

429 Rate limited by Gorgias API

HTTP客户端以指数回退(1s/2s/4s,加上抖动)自动重试429个响应,最多3次,以尊重上游 Retry-After 头球以60秒为上限。如果在内置重试后仍然看到持续的429错误,那么您已经超过了租户的漏桶预算——放慢速度或等待几分钟。

MCP客户端中未显示工具

  • 完全退出并重新启动Claude Desktop或您的IDE——大多数客户端只在重新启动时重新读取MCP配置。
  • 通过检查客户端的MCP日志来验证服务器是否实际启动。服务器日志 Gorgias MCP server started — N tools registered (access level: …) 到stderr。
  • 确认 GORGIAS_ACCESS_LEVEL 不会无意中设置为 readonly (它隐藏了每个写入工具)。
  • 检查 claude mcp list (Claude Code CLI)确认注册。

域格式错误

接受的格式: mycompany, mycompany.gorgias.com, https://mycompany.gorgias.com.平原 http:// 被拒绝。空白、空字符串和内部空格将在请求时失败。SSRF主机名分配列表强制执行 *.gorgias.com --非Gorgias主机、原始IP和易混淆的尾随标签旁路在启动时被拒绝。

Maximum allowed period size is 366 days (智能启动/报告)

Gorgias报告API强制执行每个请求366天的最大范围。将较长的查询拆分为多个窗口。

smart_status结果为空或小得令人惊讶

该工具将每个查询限制为100行。多代理+每日粒度查询速度如此之快(例如30天×4个代理=120行)。粒度更粗(week 或 month),缩短日期范围,或使用 gorgias_retrieve_reporting_statistic 用于分页原始访问。


建筑

  • 智能工具组成 --智能工具通过缓存、响应投影和模糊匹配来协调多个API调用,以提供简洁、相关的结果。
  • 错误清除 --在向LLM公开之前,所有错误都会被删除敏感数据(凭据、内部URL、供应商API密钥、电子邮件地址)。步行 error.cause 链条最深可达5层。
  • SSRF主机名分配列表 -- buildBaseUrl 验证解析的主机名是否为 *.gorgias.com,拒绝非Gorgias主机、原始IP和易混淆的旁路。
  • 内存TTL缓存 --引用数据(用户、标签、视图)缓存10分钟,以减少多步骤工作流期间的API调用。
  • 费率限制处理 --尊重Gorgias漏桶速率限制器,具有自动指数回退(1s/2s/4s+抖动)功能。大写字母 Retry-After 60秒。

发展

先决条件

  • Node.js>=20.0.0

脚本

npm run build        # Compile TypeScript
npm run dev          # Compile in watch mode
npm run lint         # Run ESLint
npm run test         # Run tests once
npm run test:watch   # Run tests in watch mode

项目结构

src/
  server.ts          # Library entry point — createGorgiasServer() factory
  index.ts           # CLI entry point (bin) — reads env vars, connects stdio
  client.ts          # Gorgias API HTTP client
  access-control.ts  # Access level gating (readonly/agent/admin)
  tool-handler.ts    # Shared error wrapper for all tool handlers
  errors.ts          # Custom error types (GorgiasError, GorgiasApiError)
  reporting-knowledge.ts  # Statistics scope/dimension/measure knowledge base
  cache.ts           # In-memory TTL cache for reference data
  projection.ts      # Response projection for LLM-friendly output
  error-sanitiser.ts # Strips sensitive data from errors
  fuzzy-match.ts     # Fuzzy name matching for smart tools
  tools/             # One module per API category + smart tools

致谢

最初灵感来自 mattcoatsworth/Gorgias MCP服务器.


免责声明

这是一个非官方的社区建设项目,与Gorgias股份有限公司无关、不受其认可或支持。


许可证

麻省理工学院