KDP Studio MCP
Integrates with Amazon KDP (Kindle Direct Publishing) to read paperback drafts and make a guarded draft change. Provides tools for listing KDP tabs, inspecting draft title/ISBN/page count/preview certification state, and setting MATTE or GLOSSY cover finish on an existing uncertified draft with read-back verification.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KDP Studio MCP Change my KDP draft's cover finish from matte to glossy."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
KDP Studio MCP
Independent, experimental MCP for reading KDP paperback drafts and making one guarded draft change through a user-authorized Chrome session. It is not affiliated with Amazon or KDP.
It deliberately has a small surface: it cannot publish a book, buy a proof, upload files, delete a draft, assign an ISBN, or expose cookies and tokens.
How it works
Your MCP client starts this local Python server. The server starts Chrome DevTools MCP, which attaches to a Chrome browser you have already launched with remote debugging and where you are already signed in to KDP. Requests run inside that browser session. Credentials and CSRF tokens stay in the browser and are never returned by this MCP or written to disk.
MCP client → KDP Studio MCP → Chrome DevTools MCP → signed-in Chrome → KDPKDP does not provide a public API for this workflow. This project uses narrowly observed KDP web requests and may require updates when KDP changes its site.
Related MCP server: antigravity-browser-bridge
Setup
Clone the public repository, then run setup from its root. Use an isolated Python virtual environment.
Requires Python 3.11+, Node.js/npm (for npx), and a current Chrome version.
Launch Chrome with remote debugging enabled. On Windows, close every Chrome process first, then start:
& "$env:ProgramFiles\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222On macOS/Linux, start Chrome with
--remote-debugging-port=9222.Sign in to KDP in that Chrome profile and open the draft's Content page.
Clone and install the server:
git clone https://github.com/fatoh2/kdp-mcp.git
cd kdp-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -e ".[dev]"
python -m kdp_mcp.serverThe MCP uses the official Python SDK 1.30.0 and Chrome DevTools MCP 1.9.0.
No Bookforge imports or services are required. Reads work by default; set
KDP_ENABLE_WRITES=1 in the server environment to expose executable draft writes.
Add it to your MCP client's configuration (replace the Python path with your virtual environment):
{"mcpServers":{"kdp":{"command":"/absolute/path/to/venv/bin/python","args":["-m","kdp_mcp.server"],"env":{"KDP_ENABLE_WRITES":"1"}}}}On Windows use the virtual environment's Scripts/python.exe. Omit the environment
flag for read-only operation. Reload the MCP client after changing configuration.
Using it safely
Call kdp_tabs first and use the returned page ID. Then call
kdp_draft_status with that page ID and the KDP draft ID to inspect its state.
The read-only tools are always available.
kdp_set_cover_finish is only exposed when KDP_ENABLE_WRITES=1. It accepts a
page ID, draft ID, target MATTE or GLOSSY finish, and the finish you expect
to be set now. The MCP rejects live/certified drafts and mismatched tabs, checks
the current finish, saves once, then reads back the result. Treat an unknown
outcome as potentially saved: inspect the draft manually before doing anything
else.
Tool | Behavior |
| Returns only KDP tabs, stripping URL queries |
| Reads draft title, ISBN, page count and preview/certification state |
| Saves MATTE/GLOSSY on an existing uncertified DRAFT and verifies it |
Write calls require a matching content tab, draft ID, and expected current finish.
They read the latest settings, retain unrelated print/ISBN fields, acquire a fresh
CSRF token in Chrome, submit once, and read back. No token or cookie is exported.
Timeouts after submission produce unknown: inspect before retrying. The expected
value check is optimistic, not a server-side atomic lock; do not edit the same book
from another tab while saving. Writes are serialized within this MCP instance.
No publication, deletion, proof purchase, ISBN assignment, or general-purpose HTTP tool is exposed. Uploads and metadata/pricing writes are not yet implemented. An available preview is not a passing preview. Internal endpoints can change.
See network evidence, contributing, and tasks.
Tests
pytest -qTests execute generated JavaScript in Node with mocked KDP responses, checking write guards, payload preservation, read-back and uncertain-submission handling.
Validated September 14, 2026: unit tests cover read/write responses, input validation, payload preservation, unsafe states, and uncertain writes; CI runs them on every pull request. A live save of an existing uncertified draft preserving its MATTE finish, verified through a fresh read. An actual MATTE-to-GLOSSY transition remains unverified against live KDP.
Available Tools
3 toolskdp_draft_statusB
Read an existing paperback draft. Does not certify, save, upload or publish.
Inputs: page_id (required), draft_id (required). Returns: result
kdp_set_cover_finishB
Save MATTE/GLOSSY on an uncertified existing draft, then verify. User-authorized writes only.
Inputs: finish (required), page_id (required), draft_id (required), expected_finish (required). Returns: result
kdp_tabsB
List only KDP tabs. Chrome may ask the owner to allow the connection.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
kdp_tabs, kdp_draft_status, and kdp_set_cover_finish target distinct actions (listing tabs, reading draft status, setting cover finish), so an agent can easily differentiate them. The only minor ambiguity is the vague term 'tabs', but the description clarifies it refers to KDP browser tabs.
All tools share a 'kdp_' prefix and use snake_case, but the suffix pattern is inconsistent: tabs (noun), draft_status (noun_noun), and set_cover_finish (verb_noun_noun). This mix of noun-only and verb-based names makes the naming convention less predictable.
Three tools are far too few for a server named 'KDP Studio' that presumably should manage many aspects of paperback publishing. The set only covers a tiny slice of functionality, leaving most operations unaddressed.
The surface is severely incomplete: there is no way to create a draft, update metadata, upload a manuscript, certify, or publish. Only a read and one specialized write are provided, which will cause agent failures for common KDP workflows.
Maintenance
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Agent social posting via your logged-in Chrome. Remote MCP + OAuth. Not clawpost.dev.
Read, crawl and act on websites, signed in as the user, and turn any site into an API.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables reading and writing Canvas LMS course content using browser session cookies, without needing an API key.MIT
- AlicenseNot gradedqualityDmaintenanceEnables MCP-compatible agents to securely control the user's already authenticated Chrome browser via explicit tab authorization and DOM-based actions.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables controlling an existing logged-in Chrome session through MCP, including page reading, DOM interaction, tab management, and allowed file upload/download with local security boundaries.MIT
- AlicenseAqualityCmaintenanceEnables agents to reuse a human-completed Chrome login session to open confirmed origins, read visible page text, and perform single click, fill, or key press actions without ever handling passwords or exposing cookies.6MIT