Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
作者提供的说明(英文原文)
Edit text inside existing PDFs: replace, delete, redact, insert, fill forms; original fonts kept.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
PDFEDIT_API_KEY, PDFEDIT_BASE_URL标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"pdfedit": {
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http pdfedit https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcpclaude mcp add pdfedit --env PDFEDIT_API_KEY=your-value --env PDFEDIT_BASE_URL=your-value -- npx -y @niubai/pdfedit-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"pdfedit": {
"url": "https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp"
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"pdfedit": {
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"pdfedit": {
"type": "http",
"url": "https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp"
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"pdfedit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
PDFEDIT_BASE_URL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
工具名称和描述与服务器在 2026年11月7日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
pdf_editEdit an existing PDF in place: replace, delete, redact or insert text, fill form fields, stamp an image (a signature, a chop) into a box or remove one, keeping the original layout, fonts and everything you did not point at. `edits[]` is taken exactly as the API takes it (`op`, `s
pdf_batchApply the same edits to one template PDF once per record, producing one output document per record — a mail merge over an existing PDF. Returns a `job_id`: call `pdf_job` with it for the per-record results. To change text on one page only, set `scope.pages`; to pick one of severa
pdf_findRead the text of a PDF: every span with its page, position, font and span id, optionally filtered by `query` (the same four `match` modes an edit uses) and `pages`, over the `content`, `forms` and `annotations` layers. Paginated: pass the returned `next_cursor` back as `cursor` f
pdf_previewRender one page of a PDF as a PNG image block, optionally cropped to `region` and with rectangles drawn over `highlight`. Use it to see a page before editing it, or to check the result afterwards.
pdf_jobThe result of an async edit or a batch, by `job_id`: the same body `pdf_edit` returns once the job is done, plus `progress` while it is still queued or running, and `records` for a batch.
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 zp130221 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 157 毫秒内响应(HTTP 200)
无需登录
已读取 5 个工具描述,未发现针对 AI 的隐藏指令
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:PDFEDIT_API_KEY
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(0.1.10)于18天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Agent-Native Google Calendar - manage events, sync, and public booking
Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
@niubai/pdfedit-mcp — edit existing PDFs from your agentFive MCP tools over the PDF Edit API: replace, delete, redact, insert, form-fill, stamp or remove an image inside a PDF that already exists, keeping the original font, the original layout and everything you did not point at. Not "generate a new PDF that looks similar" — the same file, with the words you named changed, and a before/after picture of every change.
With
PDFEDIT_BASE_URLunset the server talks to the hosted API at
https://api.niubai.vip; set it to point at another deployment.
Without PDFEDIT_API_KEY the server runs on the keyless free tier: 20 pages a day per IP, outputs watermarked TEST, local files included.
Claude Code
claude mcp add pdfedit -- npx -y @niubai/pdfedit-mcp
Cursor / VS Code / Claude Desktop — this server entry (or the buttons on the repository page):
{ "pdfedit": { "command": "npx", "args": ["-y", "@niubai/pdfedit-mcp"] } }
Then ask your agent: *"In ./contract.pdf replace 'Acme Ltd' with 'Acme GmbH' and redact the IBAN."* The edited PDF is written next to the original and a before/after picture of every change comes back. A free API key (200 pages a month, no watermark on ordinary documents) takes one email at https://api.niubai.vip.
Claude Code — one line:
claude mcp add pdfedit -e PDFEDIT_API_KEY=sk_live_your_key -- npx -y @niubai/pdfedit-mcp
Cursor — the deeplink (Settings → MCP also takes the same JSON):
cursor://anysphere.cursor-deeplink/mcp/install?name=pdfedit&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuaXViYWkvcGRmZWRpdC1tY3AiXSwiZW52Ijp7IlBERkVESVRfQVBJX0tFWSI6InNrX2xpdmVfeW91cl9rZXkifX0=
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": { "pdfedit": { "command": "npx", "args": ["-y", "@niubai/pdfedit-mcp"], "env": { "PDFEDIT_API_KEY": "sk_live_your_key" } } } }
No key? Leave env out: the keyless free tier is 20 pages/day per IP, outputs watermarked TEST. Web clients that cannot run a local server (claude.ai) can add the hosted endpoint instead; it takes PDF URLs only.
This package runs on your machine, so every tool's file argument takes an absolute (or `~`) local path — it uploads the file for you and writes the edited PDF back next to the input as .edited.pdf — or an https:// URL, or an f_… file id from an earlier call. The hosted Streamable-HTTP endpoint cannot read your disk and says so (*remote server cannot read local paths; pass a URL*). PDFs never travel as MCP content blobs either way; only up to three preview PNGs of the changed pages come back inline.
| Tool | What it does |
|---|---|
pdf_edit | Replace / delete / redact / insert / fill, one call, with previews. |
pdf_batch | The same edits once per record over one template. Returns a job id. |
pdf_find | Every span with page, bbox, font and span id; filter with the four match modes. |
pdf_preview | Render a page (or a region) as a PNG, with optional highlight boxes. |
pdf_job | The result of an async edit or a batch. |
Every schema is generated from the gateway's OpenAPI document, so an edits[] entry here is exactly the one POST /v1/edit and the SDKs take — see src/tools.ts.
The engine would rather hand back "no" with a reason than a file that looks edited and is not. Two kinds of refusal.
Every change is written, then checked, then kept or undone. A group that fails any gate is rolled back and reported in failed[]:
| Reason | What happened |
|---|---|
collateral_damage | Pixels changed outside the rewrite's own area — something else on the page moved. The page is restored byte-for-byte. |
readback_failed | Re-reading the edited rectangle did not return the text that was supposed to be there. |
does_not_fit | The replacement does not fit the space, and fit was not allowed to make it worse (fit: "strict"), or an insert would have landed on text that is already there. |
font_unavailable | options.font.policy: "exact_only" (or "metric_only") and neither the system nor the document has an acceptable face. |
redact_residual | After a redaction the string was still readable in the rect — the removal is refused rather than reported as done. |
no_target, field_not_editable, field_value_invalid, field_value_mismatch | The form field does not exist, is read-only, rejects the value, or did not read back as written. |
With options.atomic (the default) any single failure fails the whole request and no file is produced; options.strict does the same for an edit that simply did not match. An unmatched edit comes back with fuzzy suggestions ("did you mean *Acme, Inc.*?") rather than a silent no-op.
invalid_requestWhat the API refuses before touching the document:
find. Everything after the matcher is left-to-right: lines are assembled left edge first and replacements are laid out rightwards, so RTL would be matched against a visually reversed line and written in the wrong direction with nothing downstream able to notice."changes" and "none" work.font_source, font_used), the summary spells out approx_font_used when the last resort was taken, and options.font.policy: "metric_only" refuses it outright, so "it looks slightly different" is a value you can read rather than a surprise.flatten_skipped is warned instead of failing.password); edits are not attempted without it.edits[], options and the response.MIT -- this server, the SDKs, the agent skill and the OpenAPI document. The hosted API itself is a proprietary service.