Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Edit text inside existing PDFs: replace, delete, redact, insert, fill forms; original fonts kept.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
PDFEDIT_API_KEY, PDFEDIT_BASE_URLAls geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:
https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcpÖffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"pdfedit": {
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}Führe das in deinem Terminal aus
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-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"pdfedit": {
"url": "https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp"
}
}
}In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"pdfedit": {
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"pdfedit": {
"type": "http",
"url": "https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcp"
}
}
}In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"pdfedit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@niubai/pdfedit-mcp"
],
"env": {
"PDFEDIT_API_KEY": "your-value",
"PDFEDIT_BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
ChatGPT verbindet sich nur mit Servern im Internet:
https://pdfedit-mcp-remote.niubai-pdfedit-remote-worker.workers.dev/mcpMenünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
PDFEDIT_BASE_URL envDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Die Tool-Liste dieses Servers haben wir noch nicht gelesen; wir prüfen die Endpunkte reihum.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto zp130221 bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: PDFEDIT_API_KEY
Beides geht: Installiere ihn auf deinem Computer oder verbinde dich mit der Cloud-Version.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.10) kam vor 18 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Verbaly
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
i18n for coding agents: extract, check and translate an app's text, with drafts a person approves
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
@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.