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.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
DOCSLICER_MCP_ROOT, DOCSLICER_MCP_ALLOW_CLAUDE_DIR, DOCSLICER_MCP_ALLOW_URLS必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
リンク先は作者自身のファイルです。私たちが置いたり再パッケージしたりしたものではありません。ファイルを開くと、Claude Desktopがインストールします。
ターミナルでこれを実行します
claude mcp add docslicer --env DOCSLICER_MCP_ROOT=your-value --env DOCSLICER_MCP_ALLOW_CLAUDE_DIR=your-value --env DOCSLICER_MCP_ALLOW_URLS=your-value -- uvx docslicer動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"docslicer": {
"command": "uvx",
"args": [
"docslicer"
],
"env": {
"DOCSLICER_MCP_ROOT": "your-value",
"DOCSLICER_MCP_ALLOW_CLAUDE_DIR": "your-value",
"DOCSLICER_MCP_ALLOW_URLS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"docslicer": {
"type": "stdio",
"command": "uvx",
"args": [
"docslicer"
],
"env": {
"DOCSLICER_MCP_ROOT": "your-value",
"DOCSLICER_MCP_ALLOW_CLAUDE_DIR": "your-value",
"DOCSLICER_MCP_ALLOW_URLS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
DOCSLICER_MCP_ALLOW_CLAUDE_DIR envDOCSLICER_MCP_ALLOW_URLS envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント DocSlicer で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:DOCSLICER_MCP_ROOT
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.5)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにMCPB, Python (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, 오늘냥이 (Oneul Nyangi)
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
Real cat photos, diaries, profiles, age and food reference calculators, and breeds.
作者のリポジトリから書かれたとおりにコピーしたものです。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
冒頭だけを表示しています。続きはリポジトリで読めます