Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
The most comprehensive MCP server for Adobe InDesign: 197 tools, AI-native, full DOM control
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"indesign-nutria": {
"command": "npx",
"args": [
"-y",
"indesign-nutria-mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add indesign-nutria -- npx -y indesign-nutria-mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"indesign-nutria": {
"command": "npx",
"args": [
"-y",
"indesign-nutria-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"indesign-nutria": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"indesign-nutria-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub nutriandrea ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.6.1) เข้า registry 19 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Hominoport
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
A human nominee and body in the physical world for autonomous agents. Signed public offer.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Say "Create an A4 document with 5 pages, add a red circle on page 3" — and it happens.
The most comprehensive MCP server for Adobe InDesign. 199 tools. 35 handlers. Full DOM coverage.
⚡ Click for a quick demo · v1.1.0 release
Published to npm as
Your agent starts it with
npx -y indesign-nutria-mcp— see
Quick Start. InDesign still runs on your machine:
the server reaches it over a local bridge, and nothing leaves the box.
InDesign automation has been broken for 20 years. ExtendScript is ancient. CEP panels are over-engineered. UXP scripting requires a CS degree. You just want AI to do the layout.
This MCP server fixes that. Clone it, point your agent at it, and InDesign is yours to drive like a puppeteer.
| MCP (this) | ExtendScript | CEP Panels | UXP Scripts | Manual | |
|---|---|---|---|---|---|
| Learn in | 30 seconds | 3 weeks | 2 months | 1 month | 0 (slow) |
| AI-native | ✅ Any MCP agent | ❌ | ❌ | ❌ | ❌ |
| Tool count | 199 | Unlimited (you write them) | 5-20 typical | 5-20 typical | ∞ (manual) |
| Error messages | Human-readable | Opaque crashes | Varies | Better | N/A |
| Setup time | 5 minutes | 10 minutes | 2 hours | 30 minutes | Instant |
| Undo support | ✅ Built-in | ❌ | Varies | ❌ | ✅ |
| Search text | text_search("pattern") | Write 50 lines | Maybe | Maybe | Ctrl+F |
| Debug mode | ✅ Stack traces | ❌ | Varies | Limited | N/A |
| Remote control | ✅ Anywhere STDIO works | ❌ InDesign-only | ❌ | ❌ | N/A |
| Maintenance | Zero (we handle 199 tools) | You write+test everything | Fragile | Fragile | N/A |
Create frames, set content, apply paragraph/character styles, control formatting, search with GREP, find/replace, apply fonts, set columns, insets, auto-size, vertical justification, drop caps, keep options, hyphenation, tabs, paragraph rules, text wrap, baseline, linking/unlinking.
Rectangles, ellipses, polygons, lines, groups, anchored objects — create, modify, delete, list, arrange.
Place from disk, query metadata, fit/proportional, adjust brightness/contrast, relink.
CMYK/RGB/LAB/spot swatches, ink list, gradients, apply to fill/stroke.
Create, open, save, close, getInfo, listOpen — plus page add/delete/duplicate/move/getInfo/listAll/applyMaster, sections.
Create, set cells, add/delete rows/columns, merge/split, alignment, fills, strokes, insets, header/footer, row/column sizing, table styles, cell styles.
Paragraph, character, object styles — create, list, duplicate, delete, apply.
Master spreads — create, duplicate, apply, delete, list, getPages. Books — list, open, getDocuments, synchronize.
PDF, EPUB, HTML, JPG, PNG, package — plus preflight, font/swatch/table lists, and script_run() for custom ExtendScript.
GREP find/replace, format-aware find/replace.
Align, distribute, rotate, scale, flip.
Hyperlinks, buttons, cross-reference anchors.
Footnotes, endnotes, cross-references, index entries/topics/generation.
Define, apply to paragraph/selection, remove, restart numbering.
XML tags, import/export, data merge with CSV/TSV/XML sources.
Layers, effects (drop shadow, feather, transparency), TOC, sections, undo/redo, undo groups.
Ten skills ship with the repo, auto-loaded by trigger keywords when you use any AI agent:
| # | Skill | What it does for you |
|---|---|---|
| 1 | Aesthetic Preference | Asks 8 questions before any creative work — font, palette, style, margins. Builds a persistent JSON profile. |
| 2 | Layout Readability | Validates overlays, contrast, orphans/widows, hierarchy, spacing, overflow before delivery. |
| 3 | Export & Verify | Mandatory modify → export JPG → analyze pixels → fix → repeat cycle. |
| 4 | Import Word | Imports .docx, maps Word styles to InDesign paragraph styles. |
| 5 | Batch Operations | Applies the same modification across N pages. |
| 6 | Image Optimize | Place, resize, DPI check, relink. Profiles for print (300dpi CMYK) vs web (72dpi RGB). |
| 7 | Table Format | Creates and styles tables — columns, rows, borders, fills, merge cells. |
| 8 | Template Manager | Save/load reusable page templates. |
| 9 | Export Batch | Export same document to multiple formats at once with different profiles. |
| 10 | Style Extractor | Scans .indd files, extracts full style profile (fonts, colors, styles, masters, margins) as JSON, replicates on new layout. |
┌─────────────────────┐ STDIO ┌──────────────────────┐ WebSocket ┌──────────────────┐
│ Any AI Agent │ ◄────────────────► │ indesign-nutria-mcp │ ◄───────────────► │ Adobe InDesign │ │ (Claude, OpenCode, │ │ (Node.js MCP Server) │ port 8120 │ + UXP Plugin │ │ Cursor, etc.) │ │ 35 handlers │ │ + ExtendScript │ └─────────────────────┘ │ 199 tools │ └──────────────────┘ │ 10 AI skills │ └──────────────────────┘
The MCP protocol always speaks stdio. Only the last hop differs, and you pick one per platform:
| macOS | Windows | |
|---|---|---|
| With plugin | UXP panel in plugin/ | UXP panel in plugin/ |
| Without plugin | node bridge-proxy.mjs (JXA/osascript) | COM_BRIDGE_ENABLED=true (in-process COM) |
Both are supported. The plugin is the richer path (it also emits change events); the proxy exists for setups where you cannot or do not want to load a UXP panel. See WINDOWS.md for the Windows bridge and start-bridge.sh for the macOS one.
Full breakdown: the four macOS processes, the request lifecycle, the error
contract and the trust boundaries are in
docs/architecture.md.
| Handler | Tools | Key Features |
|---|---|---|
| AnchoredObject | 5 | create, getSettings, release, setPosition, setProperties |
| Book | 4 | list, open, getDocuments, synchronize |
| Changes | 1 | getStatus — what changed since T?, without touching InDesign |
| Color | 6 | swatch CRUD, inks, gradients, apply |
| DataMerge | 5 | selectDataSource, listFields, mergeRecords, export, removeDataSource |
| Document | 9 | create/open/save/close, getInfo, listOpen, getState, getPageStories, getStoryPages |
| Effect | 4 | drop shadow, feather, transparency, gradient feather |
| Export | 11 | multi-format export, print packaging, batch folder, preflight, fonts/swatches/tables/masters/XML, executeScript, script_run |
| Font | 5 | list, find, change, missing check, glyph insert |
| Grep | 4 | find, replace, findFormat, replaceFormat |
| Image | 5 | place, info, adjust, fit, relink |
| Index | 4 | addEntry, createTopic, generate, listTopics |
| Interactive | 5 | hyperlinks, buttons, anchors |
| Layer | 5 | create, delete, list, reorder, setProperties |
| List | 6 | define, apply, remove, restart numbering |
| Master | 6 | create, duplicate, apply, delete, list, getPages |
| Note | 4 | footnotes, endnotes |
| Object | 6 | shapes, groups, image links |
| Page | 7 | add, delete, duplicate, move, getInfo, listAll, applyMaster |
| Preview | 1 | document — render a page as an image the agent can see |
| Recipe | 2 | flow a placed text story across pages, export with a named PDF preset — each in one undo group |
| Resources | 6 | list/update/embed/unembed links, getLinkInfo |
| Section | 4 | create, list, setNumbering, delete |
| Shape | 6 | rectangle/ellipse/line/polygon create, delete, modify |
| Style | 7 | paragraph/character/object styles CRUD |
| Table | 16 | create, cells, rows/columns, merge/split, alignment, fills, strokes, header/footer |
| TableStyle | 4 | tableStyle, cellStyle CRUD |
| Text | 7 | frames, content, stories, findReplace, BOM filtering, timeout |
| TextAdvanced | 20 | columns, wrap, links, drop caps, rules, tabs, formatting read/write, search |
| Typography | 1 | read-only audit of fonts in use, size/leading pairs, style usage and overrides |
| Toc | 4 | createStyle, generate, update, listStyles |
| Transform | 5 | align, distribute, rotate, scale, flip |
| Undo | 5 | undo, redo, history, beginGroup, endGroup |
| Xml | 6 | tags CRUD, tag/untag items, import/export |
| Xref | 3 | create, list, updateFormat |
| 199 | 35 handlers, no duplicates |
tests/contract/toolInventory.test.ts pins this number, so the table cannot drift from the code without failing CI.
Verified end-to-end against InDesign 2026 (21.3) on the plugin-free macOS path: MCP stdio → WebSocket bridge → JXA proxy → InDesign, creating a document, adding a text frame, reading it back, and closing.
Closing documents from an agent?
document_closedefaults to
saveOptions: "no"— the only value that cannot raise a modal dialog."ask"
opens a save prompt, and
"yes"opens a Save As dialog for a document that
was never saved; both block the script until the bridge times out. Save first
with
document_save { filePath }, then close.
| URI | What it gives you |
|---|---|
mcp://session/status | Active document session state |
mcp://bridge/status | WebSocket bridge health + queue depth |
mcp://tools/inventory | Full 199-tool catalog for agent self-discovery |
mcp://document/active | Currently active document info |
"Create a 200-page catalog from this CSV. Product name in 14pt Arial Bold, price in 12pt Arial Regular, description i
ตัดมาแค่ช่วงต้น อ่านต่อใน repo