MCP:用 AI 遥控 Nullprint
Nullprint 自带一个开源的 MCP 服务 nullprint-mcp。把 Claude Code、Claude Desktop、OpenAI Codex、Kimi 或任何支持 MCP 的 AI 接上它,你就能用一句话让 AI 建身份、启动、做体检、在身份里打开网页并操作。可以把它理解成一个任何 AI 都能拿起来用的 Nullprint 遥控器。
是什么
MCP 服务是 Nullprint 客户端在你电脑上开的本地 API 之上薄薄的一层,开源(github.com/nullprintai/nullprint-mcp,MIT)。每个工具对应一个接口;客户端、浏览器内核和指纹引擎不开源,也不在这个包里。MCP 这层不往我们服务器发任何东西:AI 直接和本机 127.0.0.1 上的 daemon 说话。
接上以后可以这样跟 AI 说:
- 「按这个 CSV 里的 20 条代理建 20 个身份,每个做一次体检,告诉我哪些不是一致。」
- 「打开 shop-07,进订单页,把未发货的订单念给我。」
- 「测一下这 5 条代理,告诉我每条的出口国家和延迟。」
- 「现在哪些身份在跑?闲置超过一小时的都关掉。」
接入
前提:本机装好并登录 Nullprint 客户端(Windows 或 macOS)且正在运行;本机有 Python 3.11+;装好 uv(首次运行自动装包:macOS 用 curl -LsSf https://astral.sh/uv/install.sh | sh,Windows 用 winget install astral-sh.uv)。
Claude Code
claude mcp add nullprint -- uvx nullprint-mcp
OpenAI Codex
codex mcp add nullprint -- uvx nullprint-mcp
Claude Desktop
下载 nullprint-mcp-0.1.2.mcpb 双击,Claude Desktop 会自己装好扩展和 Python 依赖(底层用 uv)。同一个文件也挂在 Smithery 上。想用配置文件的话,下面的 mcpServers 写法同样可以。
Kimi、通义等走 mcpServers 配置文件的客户端
{
"mcpServers": {
"nullprint": {
"command": "uvx",
"args": ["nullprint-mcp"]
}
}
}
不装 uv 的话:pip install nullprint-mcp,命令改成 nullprint-mcp,不带参数。
没有 Python?用 Node 版
同一个服务也发在 npm 上,单文件、零依赖,任何带 Node.js 18+ 的客户端(Cursor、Windsurf、Cline,以及自带 Node 的 Claude Desktop)都能直接跑,不需要 Python 和 uv。17 个工具、名字、参数完全一样。
claude mcp add nullprint -- npx -y nullprint-mcp
{
"mcpServers": {
"nullprint": {
"command": "npx",
"args": ["-y", "nullprint-mcp"]
}
}
}
~/.nullprint/daemon.json 里的端口和 API Key。客户端没开时,工具会直接说「daemon 没在运行」,不会报一堆连接错误。试一下
加完服务重启 AI 客户端,然后问它一个需要 Nullprint 的问题。Claude Code 里 /mcp 能看到这个服务;一条在哪儿都能用的第一句:
列出我的 Nullprint 身份,告诉我哪些正在运行。
AI 会调用 profiles_list 并按结果回答。接下来它可以把工具串起来:建身份、体检、启动、跳转、读页面、关掉。
工具
| 工具 | 作用 |
|---|---|
profiles_list | 列出全部身份及状态(运行中 / 空闲)、出口、台账 |
profile_create | 建身份(指纹自动生成并冻结),可带代理、台账、启动页 |
profile_checkup | 一致性体检,返回结论和逐项结果 |
proxy_check | 检测代理:出口 IP、国家、延迟(代理不通是结果,不是报错) |
profile_start | 为身份开浏览器会话;Chrome 内核还会返回 DevTools 地址 |
profile_stop | 关掉身份的浏览器,不管是 AI 开的还是你自己开的 |
profile_delete | 把身份移进回收站(可恢复);运行中拒绝 |
trash_list | 列出回收站里还能恢复的身份 |
profile_restore | 从回收站恢复,指纹、代理、登录态原样回来 |
session_goto | 让已启动身份的当前页跳转到某网址 |
session_snapshot | 读当前页的无障碍树,用来找选择器、看页面状态 |
session_click_selector | 按 CSS 选择器点元素 |
session_fill_selector | 按 CSS 选择器填输入框 |
session_press | 按一个键,比如 Enter |
session_eval | 在页面里跑一段 JavaScript 并拿回结果 |
session_tabs | 列出身份的标签页和当前激活的那个 |
session_switch_tab | 把某个标签页切到前台 |
session_* 系列操作的是 profile_start 开的会话;对没开会话的身份调用会回 409,并提示先启动。选择器是 CSS;AI 不知道选择器时会先 session_snapshot。
安全边界
- 彻底删除不是工具。 清空回收站会连登录态一起销毁、不可恢复,所以只能在客户端里由人操作。
profile_delete会叫 AI 转告你,而不是绕路。 - 没有写文件的工具。 截图存盘之类故意没加。
- 从外面接管会绕过一致性守卫。
profile_start对 Chrome 内核会返回 DevTools 地址,Playwright 之类可以直接 attach。这样驱动的会话可能设出和身份冻结指纹矛盾的视口、语言、时区,把身份弄成可检测的。优先用session_*工具;真要 attach,别改身份没声明过的任何东西。 - AI 以你的身份操作。 它做的每件事都经本机 API、用你的 API Key。像审查脚本一样审查 AI 打算对你店铺做的事。
连另一台电脑上的 Nullprint
显式传 daemon 地址和密钥。解析顺序,最明确的优先:--daemon-url / --port,然后 NULLPRINT_DAEMON_URL,然后 NULLPRINT_PORT,最后 ~/.nullprint/daemon.json(NULLPRINT_HOME 可改目录)。本机读不到那份文件时,密钥用 NULLPRINT_API_KEY 传。
claude mcp add nullprint -e NULLPRINT_API_KEY=np_… -- uvx nullprint-mcp --daemon-url http://192.168.1.20:7801
daemon 只监听本机,跨机器请走 SSH 隧道或内网,不要暴露到公网。
常见问题
要加钱吗? 不用。MCP 和本地 API 所有套餐都带,包括免费试用。
哪个 AI 最好用? 任何支持 MCP 的客户端都行。我们用 Claude Code、Claude Desktop、OpenAI Codex 测;Cursor、Windsurf、Cline、Kimi、通义用同样的 mcpServers 格式。客户端自带 Python 就用 uvx,自带 Node 就用 npx。
我的 AI 不支持 MCP。 直接用脚本调本地 API,MCP 服务包的就是这套接口。
源码在哪? github.com/nullprintai/nullprint-mcp(MIT)、pypi.org/project/nullprint-mcp 和 npmjs.com/package/nullprint-mcp;官方 MCP Registry(io.github.nullprintai/nullprint-mcp)、mcp.so、Smithery 都有收录。欢迎在 GitHub 提 issue 和 PR。