关于 TD SYNNEX MCP
TD SYNNEX MCP 是面向 MSP 的 StreamOne ION API MCP 服务及本地许可账本工具,可配合多种 Agent 使用。它将数据同步到 SQLite 镜像,支持跨客户汇总;HTTP 模式在修复前应避免使用。
主要功能
- 01同步客户、订阅和订单
- 02本地 SQLite 许可账本
- 03续订与订阅变更查询
- 04按客户或 SKU 分析利润
- 05跨分销商及账单席位核对
- 06订单状态查询与订阅预览
适用场景
- 01查找近期续订且未启用自动续订的订阅
- 02识别低于成本或低于标价的销售
- 03核对 TD SYNNEX、Pax8 与 PSA 席位
- 04检查受阻订单并预览订阅数量变更
MCP 相关
MCP 服务向兼容客户端提供 StreamOne ION 相关工具,并可读取本地同步数据。README 建议使用默认 stdio 传输;当前版本的 HTTP 模式因缺少请求大小和时间限制而暂停使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
TD SYNNEX + AI - 适用于 ChatGPT、Claude、GitHub Copilot、Microsoft 365 Copilot、Gemini,以及任何支持 MCP 的 Agent
非官方。由社区构建的 Claude Code Skill 和 TD SYNNEX API 的 MCP 服务。与 TD SYNNEX Corporation 无关联,未获其认可或赞助。
▶ 观看 30 秒演示 - 演示数据为模拟数据;展示的每条命令在实际 CLI 中都存在。
所有 StreamOne ION 经销商 API,外加一本本地许可证台账,可用于续约、利润率计算和跨分销商对账。兼容你已经在使用的 AI - ChatGPT(Plus/Pro+,在此连接器重新发布前暂停使用;参见 mcp-install.md)、Claude Desktop、Codex、Claude Code、Claude Cowork 和 GitHub Copilot - 还可通过远程方式使用 Microsoft 365 Copilot / Copilot Studio 和 Google Gemini。免费、开源,可在你的笔记本电脑上运行。专为 MSP 所有者打造。无需编写代码。
适用于你的 Agent
安全提示(在此连接器重新发布前)。 请勿运行 HTTP 模式 (
--transport http),即使是在 localhost 上也不行。此构建会检查令牌,但 早于修复版,因此尚未设置请求大小和时间限制。MCP 工具 也可以使用你的凭据进行更改。请使用默认的 stdio 传输。如果 你为远程 Agent 设置了隧道,请将其关闭。修复版即将推出。
MSP 所有者实际使用的六种 Agent(可自行安装,现已可用):
| 你的 AI Agent | 如何安装 TD SYNNEX skill |
|---|---|
| Claude Desktop | 运行安装程序,然后前往 Settings > Extensions 注册 td-synnex-mcp(无需编辑 JSON)。 |
| ChatGPT(付费套餐) | 在此连接器重新发布前暂停使用:ChatGPT 需要 HTTP 模式,而此构建的该模式虽然会检查令牌,但尚未设置请求大小或时间限制。请参阅 mcp-install.md 中的安全提示。 |
| Codex CLI | 粘贴下方的安装提示词。 |
| Claude Code | 粘贴下方的安装提示词。 |
| Claude Cowork | 粘贴下方的安装提示词。 |
| GitHub Copilot(VS Code) | 运行安装程序,在 servers 键下将 td-synnex-mcp 添加到 mcp.json,然后选择 Agent 模式。 |
ChatGPT 需要远程 HTTPS 服务,这意味着需要使用此连接器的 HTTP 模式;在连接器重新发布前,该模式暂停使用:此构建的该模式虽然会检查令牌,但尚未设置请求大小或时间限制。请参阅 mcp-install.md 中的安全提示。
同样适用于 Microsoft 和 Google 技术栈
安装量很大,但需要如实提醒:这属于远程/企业方案,并非你刚安装的本地二进制文件。
| Agent | 所需条件 |
|---|---|
| Microsoft 365 Copilot / Copilot Studio | 暂停使用,直到重新发布此连接器:Copilot Studio 需要使用 HTTP 模式,而此版本的该模式会检查令牌,但尚无请求大小或时间限制。请参阅 mcp-install.md 中的安全说明。 |
| Google Gemini | Gemini CLI 在本地运行,与 Claude Code 相同。Gemini 应用在远程运行,需要使用与 ChatGPT 相同的暂停 HTTP 模式。请参阅 mcp-install.md。 |
原生支持 Skill 的 Agent(也已涵盖): Hermes 和 OpenClaw 可直接读取此 Skill 的
SKILL.md,并且支持 MCP——请参阅下文的安装部分。Cursor、Windsurf、Cline、Continue.dev 和 Zed 也可通过 MCP 使用。各工具的完整接入说明:docs/which-agent.md。
要在多个 Agent 中安装? 只需一条命令,即可在所有 51 个以上受支持的 Agent 中安装:
npx skills add Servosity/msp-skills@latest(需要 Node.js,然后运行每个 Skill 的安装程序来安装 CLI/MCP 二进制文件)。请参阅 docs/which-agent.md。
60 秒内完成安装
Claude Desktop 最快安装方式——一键安装 .mcpb
下载 TD SYNNEX MCP (.mcpb)——然后打开 Claude Desktop > Settings > Extensions 并选择该文件。一键完成,无需 JSON。ION 需要先执行一个 shell 步骤:安装 CLI(下方路径 B),并运行一次 td-synnex-cli auth mint --refresh-token-stdin(请参阅身份验证);扩展会读取它保存的令牌。(浏览 releases 页面查看所有 TD SYNNEX 版本。)
更喜欢 Claude Code 插件?添加一次市场,然后安装——立即可用,无需列出目录:
/plugin marketplace add Servosity/msp-skills
/plugin install td-synnex@msp-skills
路径 A——向 AI Agent 粘贴一条提示词(推荐)
将以下内容复制到 Claude Code、Codex CLI 或 Claude Cowork 中:
在此 Agent 工作区中,从 Servosity/msp-skills 安装 TD SYNNEX Skill 和 MCP 服务。如果此工作区使用 POSIX shell(macOS、Linux、WSL 或 Bash),请运行
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.sh)。如果使用 Windows PowerShell,请运行iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.ps1 | iex。然后按照 README 完成身份验证,并运行td-synnex-cli --help进行探索。
任何能运行 shell 的 Agent 都可以使用同一条提示词。
路径 B——自行运行安装程序
Windows(PowerShell):
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.ps1 | iex
macOS / Linux:
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.sh)
安装程序会将 td-synnex-cli(CLI)和 td-synnex-mcp(MCP 服务)放入用户的 bin 路径。Claude Code、Codex 和 Cowork 会通过此目录中的 SKILL.md 查找 Skill。
验证:
td-synnex-cli --version
升级到最新版本
安装程序始终会获取当前版本——重新运行即可升级:
macOS / Linux:
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.sh)
Windows(PowerShell):
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/td-synnex/install.ps1 | iex
Claude Desktop .mcpb 用户:下载最新的 .mcpb(见本节顶部),并在 Settings > Extensions 中重新选择该文件。Claude Code 插件用户:/plugin update td-synnex@msp-skills。
添加到 Claude Desktop、GitHub Copilot、Gemini CLI、Microsoft 365 Copilot 或其他 MCP 客户端
安装程序运行后,请参阅 mcp-install.md 和 docs/which-agent.md,了解各 Agent 的接入方式——每个 Agent 都有单独的章节,其中包括 GitHub Copilot 的 servers 键,以及远程 Microsoft 365 Copilot / Copilot Studio 接入方式。Claude Desktop 的“Settings > Extensions”面板是最简单的接入方式;mcp-install.md 中记录了 MCP 配置块(适合偏好编辑 JSON 的用户)。
为 Hermes 安装
在 Hermes CLI 中:
hermes skills install servosity/msp-skills/skills/td-synnex --force
在 Hermes 聊天会话中:
/skills install servosity/msp-skills/skills/td-synnex --force
Hermes 原生支持 MCP,因此也可以直接使用 td-synnex-mcp 服务——安装方式相同,环境变量也相同。
为 OpenClaw 安装
告诉你的 OpenClaw Agent(复制以下内容):
从 https://github.com/servosity/msp-skills/tree/main/skills/td-synnex 安装 td-synnex 技能。该技能会通过
openclaw:frontmatter 块定义如何安装所需的 CLI(td-synnex-cli)。
OpenClaw 目前尚未普遍开放;frontmatter 接入配置已预先提供,并会在 OpenClaw 启动后立即生效。
身份验证
StreamOne ION 使用 OAuth 刷新令牌让你登录。在 ION 门户中打开 Settings > Users > Edit > OAuth credentials > Request New Credentials,然后复制刷新令牌。接着设置 ION 账户 ID,并通过标准输入将令牌传给 auth mint,避免令牌留在 shell 历史记录中:
macOS / Linux:
export TD_SYNNEX_ACCOUNT_ID=<your ION account ID> # also add this line to your shell profile (~/.zshrc or ~/.bashrc)
pbpaste | td-synnex-cli auth mint --refresh-token-stdin # Linux: xclip -o -selection clipboard | td-synnex-cli auth mint --refresh-token-stdin
td-synnex-cli auth check
Windows(PowerShell):
setx TD_SYNNEX_ACCOUNT_ID "<your ION account ID>" # persists for new windows
$env:TD_SYNNEX_ACCOUNT_ID = "<your ION account ID>" # this window
Get-Clipboard | td-synnex-cli auth mint --refresh-token-stdin
td-synnex-cli auth check
请永久设置 TD_SYNNEX_ACCOUNT_ID:本地存储以此为键;如果未设置,每个新的 2 小时访问令牌都会对应一个空存储。
ION 刷新令牌只能使用 一次,有效期为 32 天;访问令牌有效期为 2 小时。auth mint 会交换令牌,在打印任何内容之前,将新的访问令牌和新的刷新令牌保存到私有凭据文件中;除非传入 --print-access-token,否则不会打印令牌。可通过 cron 或 Task Scheduler 运行 td-synnex-cli auth mint --if-expiring 15m,以保持令牌有效。auth check 会向 ION 查询两个令牌的剩余有效时间。请勿将刷新令牌交给 auth set-token,该命令存储的是访问令牌。
然后将你的产品目录拉取到本地存储,并对照门户确认数据:
td-synnex-cli sync --resources customers,subscriptions,orders
td-synnex-cli doctor
此技能的功能
| MSP 经常询问的问题 | 命令 |
|---|---|
| 未来 30 天内有哪些订阅将续订,但已关闭自动续订? | td-synnex-cli subscriptions renewals --within 30d --auto-renew off |
| 哪些客户的销售价格低于成本或低于目录价? | td-synnex-cli margin --by customer |
| 哪些 SKU 在所有客户中的利润率最低? | td-synnex-cli margin --by sku |
| 对每个客户和 SKU,我在 TD SYNNEX 与 Pax8 的席位数量是否一致? | td-synnex-cli position trueup --with pax8-positions.csv --map company=customer_name --map sku=sku_key --map quantity=seats |
| 我是否为从 TD SYNNEX 付费购买的每个席位都收了费? | td-synnex-cli position trueup --billed psa-agreements.csv --map billed_qty=seats |
| 本周哪些订单仍处于挂起状态或已失败? | td-synnex-cli orders stuck --older-than 24h --since 7d |
| 过去一周有哪些席位、续订和状态变更通过 ION 生效? | td-synnex-cli subscriptions changes --since 7d |
| 某个客户持有哪些订阅、费用是多少,还有哪些事项未完成? | td-synnex-cli customers show "Contoso" |
| 将此订阅改为 12 个席位会向 ION 提交什么内容? | td-synnex-cli subscriptions set "10505" "108536" "1608355" --seats 12 |
subscriptions set 只会预览订单;添加 --confirm 才会下单。许可证账本命令(renewals、changes、margin、position、orders stuck、customers show)会读取本地存储,因此请先运行 sync。position trueup --with 和 --billed 会读取磁盘上的导出文件,因此应在 Agent 可使用 shell 的环境中(Claude Code、Codex、Cowork)或终端中运行;通过 MCP(Claude Desktop、ChatGPT、Copilot)使用时,工具会拒绝文件路径,并且只会列出某个客户在多个 TD SYNNEX 订阅中持有的 SKU。
完整命令参考:guide.md。关于 AI Agent 操作约定(--agent、--dry-run、修改前何时需要确认),请参阅 AGENTS.md。
有何不同
大多数 StreamOne ION 集成都是 PSA 计费连接器或 API 封装,每个问题都会发起一次实时调用。这对于单条记录来说没问题。但当问题规模扩大时就会失效,例如你想知道“我的 60 个客户中,哪些客户的 NCE 条款将在本月续订且已关闭自动续订,以及每个客户能带来多少收益”。
此技能会将 TD SYNNEX 同步到带有全文搜索功能的本地 SQLite 镜像中。汇总类问题只需执行一次本地 SQL 联接:响应迅速、可离线使用,AI 看到的是答案,而不是原始数据。subscriptions renewals、margin 和 position trueup 等组合命令会跨客户、订阅、订单以及 Pax8、Sherweb 或 PSA 导出数据进行联接——这是无状态 API 封装无法做到的。此技能与 ION 门户和 TD SYNNEX 的 PSA 连接器互为补充,而非取而代之:下单、配置和计费同步仍由它们负责。
解决的痛点
Microsoft New Commerce 条款只允许你在期限开始或续订后的前 7 天内减少席位或取消。错过续订时间,你就得再承担一整年的席位费用,而客户可能已经不愿意为这些席位付费。面向 MSP 的 tminus365 博客文章(我如何自动发送 Microsoft NCE 订阅续订通知,2022 年)介绍了作者如何基于分销商 API 构建 Power Automate 工作流,只为在每次续订前创建工单。再加上第二家分销商,你要付费的席位数量就分散在两个门户中,外加你用于开具账单的 PSA 协议。
- 在窗口关闭前处理续订:
td-synnex-cli subscriptions renewals --within 30d --auto-renew off会列出所有即将续订的期限,按时间从近到远排序。 - 亏本销售给客户:
td-synnex-cli margin --by customer会按毛利率从低到高排列客户,并标记负毛利、零毛利和低于目录价的记录。 - 付费但从未计费的席位:
td-synnex-cli position trueup --billed psa-agreements.csv会将 ION 席位与 PSA 导出文件进行比较,标记每项不匹配记录(billed_mismatch),以及完全没有 PSA 记录计费的已付费席位(not_billed;试用席位会标记为trial)。 - 无人注意到的订单:
td-synnex-cli orders stuck会列出超过一天仍未完成的订单,以及失败的订单。
更长的说明请参阅 pain-point.md。
常见问题
这适用于 ChatGPT 吗?
这个版本不适用。ChatGPT(Plus、Pro、Team、Business、Enterprise 和 Education 套餐;Free 目前尚未开放 Developer Mode)只能通过 HTTPS 连接到远程 MCP 服务,这意味着需要以 HTTP 模式运行 TD SYNNEX MCP 服务。此版本的 HTTP 模式虽然会检查令牌,但尚未限制请求大小或处理时间,因此在连接器重新发布之前,请勿运行该模式,也不要将其置于隧道之后;mcp-install.md 中的安全说明解释了原因。在此之前,请使用 Claude Desktop、Claude Code 或 Codex。
这适用于 Codex、Cursor、Windsurf、Cline、Copilot 或 Gemini 吗?
适用——它们都支持 MCP。跨工具安装命令见上方的对照表,深入介绍请参阅 docs/which-agent.md。
我需要懂编程吗?
不需要。推荐的安装方式是在 Claude Code 或 Codex 中粘贴一句话——你的 Agent 会读取 SKILL.md 并完成安装。备用方案是每种操作系统对应一个单行安装命令(bash 或 PowerShell)。这两种方式都不需要编写代码。你只需输入一次 TD SYNNEX 凭据。
我的 TD SYNNEX 数据安全吗?
你的数据始终保存在你的设备上。CLI 和 MCP 服务都是本地二进制文件。SQLite 镜像位于你用户帐户下的目录中。AI Agent 只能看到 CLI 返回的内容——通常是查询结果,而不是原始批量数据。你的 ION 令牌保存在你用户帐户下的私有凭据文件中(如果你愿意,也可以保存在 TD_SYNNEX_ACCESS_TOKEN 中);它们不会被打包进此仓库,也不会由 MSP Skills 传输到任何地方。ION 在客户、订单和配置数据中返回的密码(客户用户密码、Microsoft 租户管理员凭据)会在打印、缓存、同步或交给 Agent 之前,从每个响应中清除。如果自由文本(备注、描述、报告 CSV)中的任何位置提到了 password、PIN、secret、token 或 API key 等凭据词,则会整段隐藏;因此,仅仅提到这些词的备注或 reports get-data-csv 结果(例如一条名为“Duo Hardware Token”的记录)会以 [redacted] 返回;reports get-data 会逐个单元格返回同一份报告,而名称、ID 和地址字段使用更严格的规则,因此客户名称、目录名称和 SKU 不会被隐藏。如果在备注中输入密码,但附近没有凭据词,就无法识别出来。
它如何登录 StreamOne ION?
使用 ION OAuth 刷新令牌,这需要 ION 经销商账户。在门户中依次进入 Settings > Users > Edit > OAuth credentials > Request New Credentials 来申请,并将其传入 td-synnex-cli auth mint --refresh-token-stdin。ION 刷新令牌只能使用一次,因此 auth mint 会先保存轮换后的令牌,然后才输出任何内容;如果保存失败,它会将新的刷新令牌写入私有救援文件,避免你无法登录。请参阅身份验证。
这会触及我的 ION API 限额吗?
subscriptions renewals、subscriptions changes、margin、position export、position trueup、orders stuck 和 customers show 都从本地存储读取结果。当存储数据过期时,它们会先刷新所读取的每种资源的第一页(约 100 行);因此,如果管理的客户较多,请先运行 td-synnex-cli sync 再查询整个客户群;添加 --data-source local(或设置 TD_SYNNEX_NO_AUTO_REFRESH=1),即可让这些命令完全不调用 API。实时调用会遵循 --rate-limit 限流设置。
它能更改订阅或下单吗?
可以,因此安全模型非常重要。subscriptions set 会预览 UPDATE 顺序,并且只有在使用 --confirm 时才会下单。其他写入操作(carts checkout、customer-orders create-order 和 cancel-order、customers create 和 update)会在运行时立即发送;请先使用 --dry-run 预览。设置 TD_SYNNEX_MCP_READ_ONLY=1,即可将 MCP 服务限制为只读。
毛利数字准确吗?
目前尚未验证。请参阅已知差距。
它能取代 ION 门户吗?
不能。下单、配置和开票仍在 StreamOne ION 中进行。此技能可通过终端或 Agent 回答涉及所有客户的问题。
费用是多少?
免费,采用 Apache-2.0 许可。你只需为所使用的 AI Agent(Claude、ChatGPT、Codex 等)付费,费用由你的 AI 服务提供商收取,而非我们收取。
安全模型
| 层级 | 示例 | 建议的 Agent 策略 |
|---|---|---|
| 读取 | subscriptions renewals、subscriptions changes、margin、position export、position trueup、orders stuck、customers show、所有 list 和 get、pricing、cloud-profiles、reports get-data、sync、auth check | 允许 |
| 写入(常规) | customers create / update、carts create / update、cart-items create / update、reports save(这些操作会立即发送;--dry-run 是可选的预览方式) | 使用 --dry-run 预览,然后进行审核后的写入 |
| 订单和支出 | subscriptions set(席位数、续订设置、名称;只有使用 --confirm 时才会下单)、carts checkout、customer-orders create-order、cloud-providers provision-customer / link-customer、products enable / disable、programs batch-update-product | 仅限人工参与 |
| 破坏性操作 / 凭据 | subscriptions set --status suspended 或 deleted、subscriptions set --renewal cancel_at_renewal(或其别名 auto-off)、customer-orders cancel-order、carts delete、cart-items delete、reports delete、auth mint、auth set-token、auth logout | 仅限人工参与,并需明确确认 |
TD_SYNNEX_MCP_READ_ONLY=1 会从 MCP 服务中移除所有可更改 ION 的工具;它还会移除 sync 和记录学习内容的工具。保留的工具仍会写入本地状态(读取操作刷新数据时写入同步存储、命令日志和回忆统计信息)。
最有力的控制措施是你为其签发 OAuth 凭据的 ION 用户——CLI 只能执行该用户获准执行的操作。完整详情(包括如何限制权限)请参阅 governance.md。
已知差距
- 尚未在实时 StreamOne ION 租户上运行过。 所有命令都依据 TD SYNNEX 发布的 v3 API 文档、模拟 ION 服务和未认证路由探测进行检查,并未使用真实账户数据。请先运行
td-synnex-cli doctor和小规模的td-synnex-cli sync --resources customers,再将首批结果与 ION 门户进行比较。 - 利润率计算假设 ION 报告的价格是每份订阅的价格,而非每个席位的价格。
margin、subscriptions renewals、position export和customers show使用 ION 报告的每份订阅价格和成本(按月计费时,使用最近一个已计费月份的数据),不会乘以席位数。如果 ION 报告的是每席位价格,多席位总额就会偏低,position trueup的unit_cost_by_source(成本除以席位数)也会按相同倍数偏低。在依赖这些总额前,请先将一份多席位订阅与 ION 门户进行比较。对于 ION 未提供(或 CLI 无法读取,但会保留该记录;不过,如果订阅或订单的状态、试用标记或客户 ID 无法读取,则会发出警告并跳过;subscriptions set也会拒绝基于无法读取其 ID、所有者、状态、标记或日期的订阅创建订单)的价格、成本、席位数、订单数量、订单总额或订单期限,或 CLI 无法识别的计费周期(绝不会以承诺期限代替),系统会报告为未知(price_known、cost_known、seats_known或*_incomplete标记),绝不会记为 0,并会从总额和利润率中排除。如果年度订阅未提供价格和成本,系统会汇总过去 12 个已计费月份的数据,因此,在该时间范围内从月付转为年付的订阅会同时计入两种计费方式;basis会列明所用月份。 - 在 ION 外部进行的更改不可见。
subscriptions changes会解码 ION 订单,因此,直接在 Microsoft Partner Center 中进行的席位变更不会显示。 - 不会显示生成的密码。
customers create和cloud-providers provision-customer会清空 ION 返回的一次性密码以及 ION 响应中的所有其他凭据。请在 ION 门户或 Microsoft 365 管理中心设置或重置该密码。 position export中的租户 ID 和域名为空。 ION 订阅不包含这些信息,因此,除非其他文件提供了相关信息,否则position trueup会按客户名称进行匹配。
状态
Beta 版。已依据 TD SYNNEX 发布的 v3 API 文档和模拟 ION 服务进行检查,尚未在实时租户上验证(请参阅已知差距)。我们会在每周 Build Sessions 中,与在自有生产租户上实时运行连接器的 MSP 一起验证连接器。请通过 compoundingteams.com/build-sessions 回复确认出席。
标准。 符合开放的 Agent Skills 规范(Anthropic,2025 年 12 月;支持 40 多种 Agent)。兼容 MCP,可与任何支持 MCP 的 Agent 配合使用,包括 Hermes。已做好 OpenClaw 使用准备(frontmatter 已预先配置,等待 OpenClaw 发布)。
由 Servosity 维护。采用 Apache-2.0 许可。使用 CLI Printing Press 构建。最后更新:2026-10-16。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。