关于 Tinify image tools
Tinify image tools 是面向 MCP 客户端的 Tinify.dev 图片处理服务,可压缩、调整尺寸、裁剪和转换图片。它提供本地文件与托管连接方式,并返回结构化的原始数据及明确的保存结果。
主要功能
- 01压缩、调整尺寸、裁剪图片
- 02转换 PNG、JPEG、WebP、AVIF
- 03提供用量与剩余操作数
- 04结构化返回字节指标
- 05避免静默覆盖原文件
适用场景
- 01压缩网站图片并查看节省字节
- 02按指定宽度调整图片尺寸
- 03将图片转换为 WebP 或 AVIF
- 04查看当月 Tinify 操作余量
MCP 相关
它通过 MCP 暴露五种图片处理和用量查询工具。提供 stdio 本地服务器与 Streamable HTTP 托管服务,供 MCP 客户端连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @tinify-dev/mcpTINIFY_API_KEY密钥Tinify.dev API key (tnf_live_* or tnf_test_*), created at https://tinify.dev/developers. Free tier: 500 operations/month.TINIFY_BASE_URLOverride the API origin (advanced; defaults to https://api.tinify.dev).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 图像的绝对路径(png、jpg、jpeg、webp、avif;最大 40 MB)。 |
| overwrite | boolean | 否 | 允许替换输出路径处的现有文件。默认值为 false。 |
| output_path | string | 否 | 写入结果的绝对路径。默认值:输入文件旁的 <name>.min.<ext>。除非 output_path 指向源图像且 overwrite 为 true,否则绝不会覆盖源图像。 |
| quality_mode | enum | 否 | balanced(默认)、best_quality 或 lossless。JPEG 输入不支持 lossless。balanced | best_quality | lossless |
| target_size_kb | integer | 否 | 目标是将结果控制在此 KB 数值以内(测试版;服务器分批推出)。 |
详细介绍
@tinify-dev/mcp
适用于 Tinify.dev 图像 API 的 MCP(Model Context Protocol)服务。让 ChatGPT、Claude、Cursor 和其他 MCP 客户端能够压缩、调整尺寸、裁剪和转换图像,并如实报告结果。
You: compress the screenshots in ~/Desktop/launch/
Claude: 312.4 KB → 97.1 KB (-68.9%), wrote /Users/you/Desktop/launch/hero.min.png
84.2 KB → 84.2 KB — logo.png is already as small as Tinify.dev can make it
(optimized: false), so no file was written.
- 绝不谎报节省量——如果 API 无法缩小文件,就会如实说明(
optimized: false),而不是写入一个字节完全相同的“优化”副本。 - 绝不悄悄覆盖原文件——结果会保存到输入文件旁的
<name>.min.<ext>,或指定的output_path。只有设置overwrite: true才会替换文件。 - 每次调用都会在
structuredContent中返回原始数值,这样 Agent 可以直接进行计算,而不必解析文字。
与 TinyPNG 没有关联。本服务连接的是 Tinify.dev API。
要求
- Node.js >= 20
- Tinify.dev API 密钥,可从 tinify.dev/developers 获取——免费套餐每月可进行 500 次操作,无需信用卡。
设置
Claude Desktop
添加到 claude_desktop_config.json(设置 → 开发者 → 编辑配置):
{
"mcpServers": {
"tinify": {
"command": "npx",
"args": ["-y", "@tinify-dev/mcp"],
"env": { "TINIFY_API_KEY": "tnf_live_..." }
}
}
}
Claude Code
claude mcp add tinify -e TINIFY_API_KEY=tnf_live_... -- npx -y @tinify-dev/mcp
Cursor
在项目中创建 .cursor/mcp.json(或在全局路径 ~/.cursor/mcp.json 中创建):
{
"mcpServers": {
"tinify": {
"command": "npx",
"args": ["-y", "@tinify-dev/mcp"],
"env": { "TINIFY_API_KEY": "tnf_live_..." }
}
}
}
远程服务(托管)
相同的五个工具也可通过托管的可流式传输 HTTP MCP 服务使用——无需安装,可用于 ChatGPT 连接器、claude.ai 目录,以及任何需要 URL 的注册表:
Endpoint: https://api.tinify.dev/mcp
Auth: OAuth 2.1 (PKCE + dynamic client registration), or
Authorization: Bearer tnf_live_... (or tnf_test_...)
有两种身份验证方式:
- OAuth(适用于连接器)——ChatGPT 连接器和 claude.ai 目录只支持“OAuth”或“无身份验证”。使用服务器 URL(
https://api.tinify.dev/mcp)添加服务,并选择 OAuth;客户端会通过服务的.well-known元数据自动发现授权端点和令牌端点、完成自身注册,并打开 Connect Tinify 页面,供你粘贴 Tinify API 密钥。你的密钥仍是凭据——客户端只会持有一个不透明令牌,该令牌在服务端映射回你的密钥。 - 直接承载令牌(适用于脚本/命令行工具)——发送
Authorization: Bearer tnf_live_...(或tnf_test_...),即可完全跳过 OAuth。保持不变。
ChatGPT 开发者模式连接
-
在 ChatGPT 中,打开 设置 → 安全和登录,启用 开发者模式。
-
打开 ChatGPT Plugins,选择加号按钮,然后添加
https://api.tinify.dev/mcp。 -
使用 Tinify API 密钥完成 Connect Tinify。
-
从对话的工具菜单中添加此连接,附加一张 PNG/JPEG/WebP/AVIF 图像,然后提出以下请求:
Use Tinify to compress this image for the web. Show the original size, result size, and percentage saved.
托管服务无法访问本地路径,因此每个图像工具只接受以下其中一种输入:
image——ChatGPT 附件对象。由于描述符声明了openai/fileParams,ChatGPT 会自动填充此参数。image_base64——供其他 MCP 客户端使用的可移植备用方案,解码后大小上限约为 28 MB。
ChatGPT 附件下载仅支持 HTTPS,会拒绝私有/保留网络目标和重定向,超时时间为 30 秒,且大小上限为 Tinify API 的 40 MB。操作成功后会返回精确的字节指标和临时 MCP 结果链接。为保持向后兼容,现有 base64 调用方也会收到 structuredContent.image_base64。get_usage 与本地版本完全相同。不会向用户的文件系统写入任何内容。
使用 curl 试试:
curl -s https://api.tinify.dev/mcp \
-H "Authorization: Bearer tnf_live_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
对于本地文件,建议使用上面的 stdio 服务——它可以直接读取和写入文件,无需进行 base64 往返转换,也没有 28 MB 的大小限制。
一个服务,两种传输适配器
此仓库有意同时支持 OpenAI 和 Claude:
- 共用的工具名称、Tinify 客户端、结果指标、错误和注释与平台无关。
- stdio 适配器使用本地绝对路径,并为 Claude、Cursor 和 Codex 等桌面端/命令行客户端写入文件。
- 托管适配器使用 ChatGPT 文件附件或 base64,并返回临时结果链接,因为托管服务无法读取用户的文件系统。
仅支持 OpenAI 的仓库会重复 Tinify 逻辑,也更容易导致行为不一致。OpenAI 专属描述符元数据作为一个小型附加层保留在托管适配器中;无需单独建立仓库。
如需公开提交至 OpenAI,请将门户提供的域名令牌设为
OPENAI_APPS_CHALLENGE_TOKEN,写入 /etc/tinify/mcp-http.env,并部署
deploy/nginx-location.conf 中对应的 nginx location。该端点只会在 /.well-known/openai-apps-challenge 返回此令牌;请勿提交真实的门户令牌。
工具
| 工具 | 参数 | 功能 |
|---|---|---|
compress_image | path(绝对路径)、output_path?、quality_mode?(balanced/best_quality/lossless)、target_size_kb?(测试版)、overwrite? | 压缩 PNG/JPEG/WebP/AVIF。将文件写入输入文件所在目录,命名为 <name>.min.<ext>。当 API 返回 optimized: false 时,不会写入任何文件(除非你指定了明确的 output_path)。 |
resize_image | path、width?/height?/scale?(至少指定一项)、keep_aspect_ratio?、output_path?、overwrite? | 调整图像尺寸并写入结果。 |
crop_image | path、x、y、width、height、output_path?、overwrite? | 裁剪为矩形并写入结果。 |
convert_image | path、format(avif/webp/jpeg/png)、quality_mode?、output_path?、overwrite? | 转换格式(测试版——该端点正在逐步推出服务端支持)。默认输出:<name>.min.<new-ext>。 |
get_usage | — | 查看套餐、计费周期、已用和剩余操作次数。 |
所有图像工具都要求使用绝对路径(MCP 服务的工作目录不可预测),并会在本地预先检查 40 MB 的 API 限制。API 错误会以易读的工具错误形式返回,其中包含可提供给支持团队的错误 code 和 request_id。
提示词示例
- “压缩 /Users/me/site/static/img 中的所有 PNG”
- “将 /Users/me/photo.jpg 调整为 1200px 宽,并告诉我节省了多少字节”
- “以最佳质量将 /Users/me/hero.png 转换为 webp”
- “我这个月还剩多少次 Tinify 操作?”
限制与隐私
- 每张图像最大 40 MB / 50 MP;支持 PNG、JPEG、WebP、AVIF。
- 上传的图像和结果会在 2 小时后从 Tinify.dev 服务器删除。
- 服务只会读取你指定的文件,并且只会写入它告知你的目标位置。
故障排查
- “TINIFY_API_KEY is not set” — 服务启动时会退出,并显示需要修复的准确配置代码段。将密钥添加到 MCP 配置的
env块中。 invalid_api_key— 密钥错误或已撤销;请在 tinify.dev/developers 创建新密钥。quota_exhausted(429) — 月度配额已用尽;运行get_usage查看周期结束时间。- “path must be absolute” — 请传入
/Users/you/img.png这样的完整路径,而不是./img.png。 - 日志写入 stderr;在 Claude Desktop 中查看
~/Library/Logs/Claude/mcp-server-tinify.log。
路线图
- 基于持久化批处理 API 提供批处理工具(create/commit/wait/download)——不包含在 v1 中。
许可证
MIT © Stian Larsen
一键/单行安装
Cursor:添加到 Cursor - 然后在 Cursor 的 MCP 设置中设置你的真实密钥。
VS Code:
code --add-mcp '{"name":"tinify","command":"npx","args":["-y","@tinify-dev/mcp"],"env":{"TINIFY_API_KEY":"tnf_live_..."}}'
Codex CLI:
codex mcp add tinify --env TINIFY_API_KEY=tnf_live_... -- npx -y @tinify-dev/mcp
或在 ~/.codex/config.toml 中:
[mcp_servers.tinify]
command = "npx"
args = ["-y", "@tinify-dev/mcp"]
[mcp_servers.tinify.env]
TINIFY_API_KEY = "tnf_live_..."
Claude Code 插件(MCP + 图像优化技能):
/plugin marketplace add Stianlars1/tinify-claude-plugin
/plugin install tinify@tinify
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。