# cn.pianam/devtools-mcp

> MCP server with 5 offline developer tools: UUID, timestamp, unit conversion, JSON tools and QR code.

- name: cn.pianam/devtools-mcp
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 81/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cn.pianam%2Fdevtools-mcp
- tools: https://api.protogrid.dev/v1/servers/cn.pianam%2Fdevtools-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "devtools-mcp": {
      "type": "http",
      "url": "https://pianam.cn/devtools-mcp/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 75
- drivers: +repository +dns-namespace +reachable +uptime-100% +updated-5d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 81/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 75 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: format_json (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); generate_uuid (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); convert_timestamp (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 923 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 4 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 923 tokens to load them all
- tool set hash: 03df9e8febde6822f966c5127c66d665
- badge: [![protogrid quality](https://protogrid.dev/badge/cn.pianam/devtools-mcp.svg)](https://protogrid.dev/servers/cn.pianam/devtools-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://pianam.cn/devtools-mcp/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (7)

- `convert_timestamp`: 时间戳双向转换，时区统一北京时间(UTC+8)。传入 Unix 时间戳（整数秒或毫秒，自动识别；也接受数字字符串）返回 ISO 8601 北京时间字符串；传入日期/时间字符串（如 2026-09-05、2026-09-05 10:30:00、2026-09-05T10:30:00+08:00）返回 Unix 秒/毫秒时间戳；不传 value 返回当前时间的两种格式。
- `convert_unit`: 单位换算，支持四类：长度(m/km/cm/mm/mile/foot/inch，含毫米/厘米/英里/英尺/英寸)、重量(kg/g/mg/t/lb/oz，含克/磅/盎司)、温度(c/f/k，摄氏度/华氏度/开尔文，自动做偏移换算)、数据存储(B/KB/MB/GB/TB/PB，按1024二进制换算)。不支持的单位或跨类别换算（如米换算成千克）会返回清晰错误。
- `format_json`: JSON 字符串处理。action 支持：format（美化缩进2格，中文不转义）、minify（压缩为单行去空白）、validate（仅校验合法性，非法时返回错误行号、列号、位置指针和上下文片段）。输入 data 必须是字符串。
- `generate_qr`: 生成二维码。默认 format='svg' 返回 SVG 矢量图字符串（纯标准库生成，可直接保存为 .svg 文件，AI agent 可直接写文件）；format='png' 时返回 PNG 图片的 base64 编码和 data URI（需服务器安装 Pillow，未安装会返回提示）。content 支持 URL、纯文本、WiFi 配置（如 WIFI:T:WPA;S:网络名;P:密码;;）等任意字符串，上限 2000 字节。CPU 密集，走线程池不阻塞事件循环。
- `generate_uuid`: 生成 UUID（通用唯一识别码）。支持 v4 随机 UUID（默认）和 v5 命名空间 UUID（SHA-1 确定性生成，需提供 namespace 和 name）。count 可一次生成多个（1~1000）。namespace 支持预定义名 dns/url/oid/x500 或完整 UUID 字符串。
- `query_npm_version`: 查询 npm 包的最新版本信息。输入 npm 包名（如 react、vue、express、@vue/cli），返回最新版本号 latest_version、该版本发布时间 published_at（UTC ISO 8601）、包描述 description、开源协议 license，以及主页/仓库地址等。数据源优先官方 registry.npmjs.org，失败自动兜底淘宝镜像 registry.npmmirror.com（国内更快）。包不存在返回明确的 404 提示。网络 I/O 走线程池不阻塞事件循环。
- `resolve_dns`: DNS 域名解析（DoH，JSON API）。输入域名 name（如 baidu.com、www.qq.com）和记录类型 type（A 默认/AAAA/CNAME/MX/TXT），返回解析记录列表（每条含 name、type、ttl、data；MX 数据为 优先级+邮件交换主机，TXT 为文本记录）。数据源优先阿里 DoH（dns.alidns.com，国内快），失败自动兜底 Cloudflare DoH。域名不存在返回 NXDOMAIN 提示；域名存在但无该类型记录时返回空列表并附说明。网络 I/O 走线程池不阻塞事件循环。
