关于 Publicsofttools Mcp
Publicsofttools Mcp 为 AI Agent 提供 14 种实用工具,涵盖 PDF 操作、编码、加密哈希及域名或 IP 查询。配置 API 密钥后,可添加到 Claude、Cursor 和 Windsurf 等 MCP 兼容客户端。
主要功能
- 01生成 QR code
- 02压缩、合并和拆分 PDF
- 03转换和解锁 PDF
- 04哈希、UUID 和 Base64 工具
- 05生成密码
- 06查询 IP、DNS、SSL 和 WHOIS
适用场景
- 01整理或合并 PDF 文档
- 02生成哈希、UUID 或密码
- 03检查域名记录和证书
- 04查询 IP 地理位置与网络信息
MCP 相关
它向兼容 MCP 的 AI Agent 提供 14 种实用工具。所有工具都需要 PublicSoftTools API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| size | number | 否 | 输出尺寸(像素,默认值:256,最大值:1024) |
| text | string | 是 | 要编码到 QR 码中的文本、URL 或数据 |
| format | enum | 否 | 输出格式——png 或 svg(默认值:png)png | svg |
详细介绍
PublicSoftTools MCP 服务
让任何兼容 MCP 的 AI Agent(Claude、Cursor、Windsurf)都能使用 PublicSoftTools 提供的 14 种实用工具。
npm: npx publicsofttools-mcp
API 文档: https://www.publicsofttools.com/docs
获取密钥: https://www.publicsofttools.com/account/api-keys
包含的工具
| 工具 | 端点 | 描述 |
|---|---|---|
generate_qr_code | POST /api/v1/util/qr | 生成 base64 PNG 格式或原始 SVG 格式的二维码 |
generate_hash | POST /api/v1/util/hash | MD5、SHA-1、SHA-256、SHA-384、SHA-512 |
generate_uuid | GET /api/v1/util/uuid | UUID v4,一次最多生成 100 个 |
encode_decode_base64 | POST /api/v1/util/base64 | 编码或解码,支持 URL 安全变体 |
generate_password | POST /api/v1/util/password | 以密码学安全方式生成密码 |
lookup_ip | GET /api/v1/ip/lookup | 地理位置、ISP、ASN、代理/VPN 检测 |
check_ssl | GET /api/v1/domain/ssl | SSL 证书详情及剩余天数 |
lookup_dns | GET /api/v1/domain/dns | A、AAAA、MX、TXT、CNAME、NS、SOA 记录 |
whois_lookup | GET /api/v1/domain/whois | 域名注册商、日期、名称服务器 |
compress_pdf | POST /api/v1/pdf/compress | 减小 PDF 文件大小(最大 4 MB) |
merge_pdfs | POST /api/v1/pdf/merge | 将 2–20 个 PDF 合并为一个 |
split_pdf | POST /api/v1/pdf/split | 按页码范围或每 N 页拆分 |
pdf_to_word | POST /api/v1/pdf/to-word | 将 PDF 转换为可编辑的 .docx |
unlock_pdf | POST /api/v1/pdf/unlock | 移除权限限制 |
前提条件
- Node.js 18+(原生
fetch支持所必需) - PublicSoftTools API 密钥 — 免费获取(每月 1,500 次调用,无需信用卡)
安装和配置
Claude Desktop
将以下内容添加到 Claude Desktop 配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"publicsofttools": {
"command": "npx",
"args": ["-y", "publicsofttools-mcp"],
"env": {
"PST_API_KEY": "your_api_key_here"
}
}
}
}
重启 Claude Desktop。工具将显示在工具面板中。
Cursor
打开 Settings → MCP 并添加:
{
"publicsofttools": {
"command": "npx",
"args": ["-y", "publicsofttools-mcp"],
"env": { "PST_API_KEY": "your_api_key_here" }
}
}
Windsurf
打开 Settings → MCP Servers,并添加与上方 Cursor 相同的 JSON 代码块。
工具参考
所有工具都需要 PST_API_KEY 环境变量。所有文件输入/输出均使用 base64 编码内容。
generate_qr_code
为任意文本、URL 或数据生成二维码图像。
参数
| 名称 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
text | string | 是 | — | 要编码的文本、URL 或数据 |
size | number | 否 | 256 | 输出尺寸,单位为像素(64–1024) |
format | "png" | "svg" | 否 | "png" | 输出图像格式 |
dark | string | 否 | "#000000" | 深色模块颜色(十六进制) |
light | string | 否 | "#ffffff" | 浅色模块颜色(十六进制) |
error_correction | "L" | "M" | "Q" | "H" | 否 | "M" | 错误纠正级别 |
响应
{
"image": "data:image/png;base64,iVBORw0...",
"format": "png",
"size": 256
}
当 format: "svg" 时,image 是原始 SVG 字符串,而不是数据 URL。
generate_hash
对任意文本进行哈希。省略 algorithm 即可在一次调用中获取全部五种哈希值。
参数
| 名称 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
text | string | 是 | — | 要进行哈希处理的文本(最多 100,000 个字符) |
algorithm | "md5" | "sha1" | "sha256" | "sha384" | "sha512" | 否 | all | 哈希算法 |
encoding | "hex" | "base64" | 否 | "hex" | 输出编码 |
响应(全部算法)
{
"hashes": {
"md5": "5f4dcc3b5aa765d61d8327deb882cf99",
"sha1": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
"sha256": "5e884898da28047151d0e56f8dc629277...",
"sha384": "a8b64babd0aca91a59bdbb7761b421d4...",
"sha512": "b109f3bbbc244eb82441917ed06d618b..."
},
"encoding": "hex",
"input_length": 8
}
generate_uuid
批量生成 UUID v4 值。
参数
| 名称 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
count | number | 否 | 1 | 要生成的 UUID 数量(1–100) |
响应
{
"uuids": [
"550e8400-e29b-41d4-a716-446655440000",
"6ba7b810-9dad-11d1-80b4-00c04fd430c8"
],
"count": 2
}
encode_decode_base64
将文本编码为 base64,或将 base64 解码为纯文本。
参数
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
text | string | yes | — | 输入文本(最多 500,000 个字符) |
action | "encode" | "decode" | yes | — | 要执行的操作 |
url_safe | boolean | no | false | 使用 URL 安全变体(用 - 和 _ 替代 + 和 /) |
响应
{
"result": "aGVsbG8gd29ybGQ=",
"action": "encode",
"url_safe": false,
"input_length": 11,
"output_length": 16
}
generate_password
生成经过密码学安全处理的随机密码。
参数
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
length | number | no | 16 | 密码长度(8–128) |
uppercase | boolean | no | true | 包含大写字母(A–Z) |
numbers | boolean | no | true | 包含数字(0–9) |
symbols | boolean | no | true | 包含符号(!@#$…) |
响应
{
"password": "kR7#mQ2@xZ9!wP4$",
"length": 16,
"entropy_bits": 98.6
}
lookup_ip
查询任意 IPv4 或 IPv6 地址的地理位置和网络信息。
参数
| Name | Type | Required | Description |
|---|---|---|---|
ip | string | yes | IPv4 或 IPv6 地址(例如 8.8.8.8) |
响应
{
"ip": "8.8.8.8",
"country": "United States",
"country_code": "US",
"region": "California",
"city": "Mountain View",
"zip": "94043",
"lat": 37.4056,
"lon": -122.0775,
"timezone": "America/Los_Angeles",
"isp": "Google LLC",
"org": "Google LLC",
"asn": "AS15169 Google LLC",
"is_mobile": false,
"is_proxy": false,
"is_hosting": true
}
check_ssl
检查任意域名的 SSL/TLS 证书详情。
参数
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | yes | 域名(例如 example.com) |
响应
{
"domain": "example.com",
"valid": true,
"issuer": "Let's Encrypt",
"subject": "example.com",
"san": ["example.com", "www.example.com"],
"valid_from": "2026-01-01T00:00:00Z",
"valid_to": "2026-04-01T00:00:00Z",
"days_remaining": 22,
"protocol": "TLSv1.3"
}
lookup_dns
查询域名的 DNS 记录。省略 type 可一次获取所有可用记录类型。
参数
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | yes | — | 要查询的域名(例如 example.com) |
type | "A" | "AAAA" | "MX" | "TXT" | "CNAME" | "NS" | "SOA" | no | all | 记录类型 |
响应
{
"domain": "example.com",
"records": {
"A": ["93.184.216.34"],
"MX": [{ "exchange": "mail.example.com", "priority": 10 }],
"NS": ["ns1.example.com", "ns2.example.com"],
"TXT": ["v=spf1 include:_spf.example.com ~all"]
},
"queried_at": "2026-06-09T12:00:00Z"
}
whois_lookup
获取域名注册信息。
参数
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | yes | 要查询的域名(例如 example.com) |
响应
{
"domain": "example.com",
"registrar": "Example Registrar, Inc.",
"registered_at": "1995-08-14T00:00:00Z",
"expires_at": "2027-08-13T00:00:00Z",
"updated_at": "2024-08-13T00:00:00Z",
"nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
"status": ["clientDeleteProhibited", "clientTransferProhibited"]
}
compress_pdf
使用 Ghostscript 压缩 PDF 文件以减小文件大小。文件大小上限:4 MB。
参数
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
file_base64 | string | yes | — | 经 Base64 编码的 PDF 内容 |
level | "screen" | "ebook" | "printer" | "prepress" | no | "ebook" | 压缩级别。screen = 最小文件,prepress = 最高质量 |
响应
{
"pdf": "<base64-encoded compressed PDF>",
"original_size": 2048000,
"compressed_size": 819200,
"reduction_percent": 60
}
merge_pdfs
将 2–20 个 PDF 文件合并为一个文档。每个文件大小上限为 4 MB。
参数
| Name | Type | Required | Description |
|---|---|---|---|
files_base64 | string[] | yes | 按顺序合并的 Base64 编码 PDF 数组(2–20 个文件) |
响应
{
"pdf": "<base64-encoded merged PDF>",
"page_count": 12,
"files_merged": 3
}
split_pdf
将一个 PDF 拆分为多个文档。文件大小上限:4 MB。
参数
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
file_base64 | string | yes | — | 要拆分的 Base64 编码 PDF |
mode | "range" | "every_n" | "every_page" | yes | — | 拆分模式 |
pages | string | no | — | 当 mode=range 时指定页码范围,例如 "1-3,5,7-9" |
every_n | number | no | — | 当 mode=every_n 时,每 N 页拆分一次 |
响应
{
"files": [
"<base64-encoded PDF part 1>",
"<base64-encoded PDF part 2>"
],
"count": 2
}
pdf_to_word
将 PDF 转换为可编辑的 Word 文档(.docx)。文件大小上限:4 MB。
参数
| Name | Type | Required | Description |
|---|---|---|---|
file_base64 | string | yes | 要转换的 Base64 编码 PDF |
响应
{
"docx": "<base64-encoded .docx file>",
"page_count": 5
}
unlock_pdf
移除 PDF 的所有者密码权限限制(打印锁定、复制锁定等)。如果仅设置了所有者权限限制,则无需密码。
参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
file_base64 | string | 是 | Base64 编码的 PDF |
password | string | 否 | 如果打开文件需要密码,则填写 PDF 密码 |
响应
{
"pdf": "<base64-encoded unlocked PDF>",
"was_encrypted": true
}
身份验证
将 API 密钥设为环境变量:
export PST_API_KEY=pst_live_your_key_here
或者在命令中直接传入密钥,进行一次性测试:
PST_API_KEY=pst_live_your_key_here node dist/index.js
每次请求都会通过 X-Api-Key: pst_live_... 发送密钥。
速率限制与套餐
| 套餐 | 价格 | 每月调用次数 |
|---|---|---|
| Free | $0 | 1,500 |
| Starter | $29/mo | 15,000 |
| Pro | $99/mo | 100,000 |
| Business | Custom | 1,000,000+ |
超出限额时,API 会返回 429 Too Many Requests。限额会在每月 1 日(UTC)重置。
获取或升级密钥:https://www.publicsofttools.com/account/api-keys
故障排除
"PST_API_KEY environment variable is required"
如果未设置密钥,服务会立即退出。请确保 MCP 配置中的 env 块已设置 PST_API_KEY。
Claude Desktop 中未显示工具
请确认 JSON 配置有效(没有尾随逗号),然后完全退出并重新打开 Claude Desktop——仅关闭窗口是不够的。
401 Unauthorized
API 密钥无效或已被撤销。请前往 https://www.publicsofttools.com/account/api-keys 查询密钥。
429 Too Many Requests
您已达到每月限额。请升级套餐,或等待每月 1 日限额重置。
413 File Too Large
PDF 端点的二进制文件大小上限为 4 MB。发送前请压缩或拆分文件。
Node 版本错误
运行 node --version。原生 fetch 需要 Node 18 或更高版本。请通过 https://nodejs.org 更新。
许可证
MIT — 参见 LICENSE
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。