Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Answer questions from documents too large to fit in context, reading only the sections you need.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
DOCSLICER_MCP_ROOT, DOCSLICER_MCP_ALLOW_CLAUDE_DIR, DOCSLICER_MCP_ALLOW_URLSต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ลิงก์ไปที่ไฟล์ของผู้ทำเอง เราไม่ได้เก็บหรือแพ็กใหม่ เปิดไฟล์แล้ว Claude Desktop จะติดตั้งให้
พิมพ์คำสั่งนี้ใน Terminal
claude mcp add docslicer --env DOCSLICER_MCP_ROOT='ใส่ค่าของคุณ' --env DOCSLICER_MCP_ALLOW_CLAUDE_DIR='ใส่ค่าของคุณ' --env DOCSLICER_MCP_ALLOW_URLS='ใส่ค่าของคุณ' -- uvx docslicerเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"docslicer": {
"command": "uvx",
"args": [
"docslicer"
],
"env": {
"DOCSLICER_MCP_ROOT": "ใส่ค่าของคุณ",
"DOCSLICER_MCP_ALLOW_CLAUDE_DIR": "ใส่ค่าของคุณ",
"DOCSLICER_MCP_ALLOW_URLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"docslicer": {
"type": "stdio",
"command": "uvx",
"args": [
"docslicer"
],
"env": {
"DOCSLICER_MCP_ROOT": "ใส่ค่าของคุณ",
"DOCSLICER_MCP_ALLOW_CLAUDE_DIR": "ใส่ค่าของคุณ",
"DOCSLICER_MCP_ALLOW_URLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
DOCSLICER_MCP_ALLOW_CLAUDE_DIR envDOCSLICER_MCP_ALLOW_URLS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub DocSlicer ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: DOCSLICER_MCP_ROOT
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.5) เข้า registry 2 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี MCPB, Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, SuperCollider
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว 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.
Make sound with SuperCollider: synths, drums, chords, melodies and soundscapes over OSC.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Lightning-fast (31 pages/sec), deterministic document parser and chunker for business documents. No LLM calls or heavy ML models.
DocSlicer turns PDFs, Word documents, HTML pages, and PowerPoint files into clean chunks, structured blocks, tables, charts, markdown and a navigable heading hierarchy.
Top score on BizDocBench (0.88 overall vs 0.70 for the next-best tool). 0.80 table accuracy, 0.98 content faithfulness, 0.85 heading recognition and hierarchy preservation, and 0.76 RAG retrieval performance.
Two ways to use it:
import docslicer
def main(): result = docslicer.parse_document("annual_report.pdf")
result.hierarchy.to_outline()
risk_section = result.find_heading("Risk Factors")[0] chunks = result.chunks_under(risk_section)
for table in result.tables_under(risk_section): print(table.markdown)
if name == "main": main()
1., 1.2., 1.2.3) and free-form headings; uses font size, bold weight, and document structure — not inference; handles re-entry after exhibit breaks and repeated navigation headings across pageschunks, blocks, tables, charts, metadata, and hierarchy in one placeMeasured with BizDocBench — an open benchmark for multi-format business document parsing. All scores are 0–1 (higher is better); pages_per_sec_aggregate is throughput across the full corpus.
| Tool | Score | Coverage | Speed | Hierarchy | Faithfulness | Tables | Retrieval | Pages/sec |
|---|---|---|---|---|---|---|---|---|
| docslicer | 0.8796 | 1.0000 | 0.8836 | 0.8466 | 0.9824 | 0.8047 | 0.7601 | 31.27 |
| docling | 0.7036 | 1.0000 | 0.3805 | 0.4905 | 0.8927 | 0.7467 | 0.7111 | 3.46 |
| markitdown | 0.5838 | 1.0000 | 0.8513 | 0.0604 | 0.7972 | 0.2584 | 0.5357 | 27.42 |
| unstructured | 0.5798 | 0.9091 | 0.1073 | 0.4327 | 0.9057 | 0.4812 | 0.6430 | 0.52 |
| opendataloader | 0.5359 | 0.5844 | 1.0000 | 0.3853 | 0.6484 | 0.2655 | 0.3317 | 117.26 |
| pymupdf4llm | 0.4519 | 0.5974 | 0.6492 | 0.1089 | 0.6456 | 0.3551 | 0.3552 | 11.84 |
| mineru | 0.4107 | 0.5974 | 0.1353 | 0.4220 | 0.6176 | 0.3012 | 0.3910 | 0.70 |
| marker | 0.3735 | 0.5974 | 0.1598 | 0.1926 | 0.6121 | 0.3012 | 0.3778 | 0.87 |
pip install docslicer
The core install is dependency-light. Optional features are available as extras:
pip install 'docslicer[html]' # HTML / URL parsing via Playwright
playwright install chromium # one-time browser install (Chromium only)
pip install 'docslicer[ocr]' # scanned PDF support via Tesseract + OpenCV
pip install 'docslicer[mcp]' # MCP server for LLM clients (Claude, Cursor, …) pip install 'docslicer[llm]' # exact token counts via tiktoken (exact_tokens=True) pip install 'docslicer[crypto]' # password-protected Office files (msoffcrypto-tool) pip install 'docslicer[parquet]' # Parquet export support
Extras can be combined: pip install 'docslicer[html,ocr,llm]'.
Requires Python 3.10+
parse_document returns a ParseResult:
result.chunks # list[Chunk] — heading-aware text chunks, ready for embedding
result.blocks # list[Block] — paragraph/heading/table blocks before chunking result.tables # list[Table] — structured tables with cells, spans, and markdown result.charts # list[Chart] — charts as extracted data points (docx/pptx) result.metadata # DocumentMetadata — title, author, language, page count, OCR flag result.hierarchy # HierarchyTree — navigable tree of all headings
Each Chunk carries:
chunk.text # str — chunk text
chunk.path # list — full heading breadcrumb from root to nearest heading chunk.heading # str — nearest heading above this chunk chunk.section # str — body | toc | exhibit | header | footer | coverpage | … chunk.page_number # int — 1-based physical page chunk.page_label # str — "A-6", "iv", "F-3" — as printed on the page chunk.table_ids # list — IDs of tables referenced in this chunk chunk.chart_ids # list — IDs of charts referenced in this chunk (docx/pptx) chunk.link_url # list — URLs found in this chunk chunk.bbox # BBox — bounding box (PDF only)
Every chunk carries its full heading breadcrumb, no matter how deeply nested. For example, a paragraph six levels deep in a financial filing:
chunk.path == [
"# PART I — FINANCIAL INFORMATION", "## Item 1. Financial Statements", "### Notes to Condensed Consolidated Financial Statements (Unaudited)", "#### Note 4 – Financial Instruments", "##### Accounts Receivable", "###### Trade Receivables", ]
This lets downstream code filter or group chunks by any level of the hierarchy without re-parsing the document.
| Format | Extension | Notes |
|---|---|---|
.pdf | Text-based and scanned (OCR extra required for scanned) | |
| Word | .docx | Full style and outline hierarchy |
| HTML | .html, URLs | Static files and JS-rendered pages (html extra required for URLs) |
| PowerPoint | .pptx | Slides, speaker notes, charts |
Not supported: .doc, .ppt (legacy Office formats), .xlsx.
parse_document auto-detects the format from the file extension or magic bytes. Pass a file path, URL, raw bytes, or a file-like object:
result = docslicer.parse_document("contract.docx")
result = docslicer.parse_document("report.pdf") result = docslicer.parse_document("https://www.sec.gov/Archives/edgar/data/.../10-K.htm") result = docslicer.parse_document(file_bytes)
parse_document (and the format-specific functions) accept options that control what gets parsed and how, before it's chunked. Format-specific toggles are accepted everywhere for a uniform API but only take effect for the relevant format.
result = docslicer.parse_document(
"contract.docx", password="admin123", # decrypt password-protected files; .docx and .pptx needs [crypto] extra max_workers=4, # process-pool width for PDF extraction/OCR (default: auto by CPU cores) include_headers_footers=True, # docx: include header/footer content (default False) include_footnotes=True, # docx: include footnotes (default True) include_comments=True, # docx: include review comments (default False) include_speaker_notes=True, # pptx: include slide speaker notes (default True) use_browser=True, # html/URL: render in a real browser (default True) )
result = docslicer.parse_document(
"report.pdf", max_chunk_size=2000, # hard cap, default 3200 optimal_chunk_size=800, # target size, default 1500 min_chunk_size=400, # soft floor, default 700 chunking=False, # skip chunking, return blocks only (faster) merge_small_chunks=True, # merge chunks below min_chunk_size (default True) table_representation="jsonl", # "markdown" (default) | "jsonl" | "melted" exact_tokens=True, # exact tiktoken (cl100k_base) counts; needs [llm] extra, else char/4 estimate extra_fields=["is_bold", "font_size", "font_name"], # surface internal pipeline columns on each chunk/block via .extra )
Because DocSlicer is structure-aware, it initially produces one chunk per heading or paragraph boundary. For documents with many short sections this can yield a lot of small chunks. With merge_small_chunks=True (the default), sibling sections under the same parent heading are merged together until they reach min_chunk_size — but never a
ตัดมาแค่ช่วงต้น อ่านต่อใน repo