Tika
БесплатноНе проверенAn MCP server that wraps Apache Tika to extract text, metadata, and more from documents. It supports local files and optional remote URLs with SSRF protections.
Описание
An MCP server that wraps Apache Tika to extract text, metadata, and more from documents. It supports local files and optional remote URLs with SSRF protections.
README
tika-mcp is an MCP (Model Context Protocol) server that wraps Apache Tika and
exposes document parsing tools over streamable-http.
It supports local files and optional remote URL ingestion with SSRF protections, plus extraction for plain text, metadata, HTML, MIME detection, and recursive archive content.
Features
- Async direct Tika Server HTTP integration (
/tika,/meta,/detect/stream,/rmeta) - MCP tools:
extract_text,extract_metadata,detect_mime_type,extract_html,extract_documents - Local file controls (
TIKA_ALLOW_LOCAL_FILES,TIKA_ALLOWED_LOCAL_ROOTS) - Optional remote URL ingestion with blocked private/internal targets by default
- Bounded input and output sizes with clear tool-facing errors
- Optional bearer-token protection for exposed MCP HTTP deployments
Requirements
- Python 3.11+
- Apache Tika Server reachable at
TIKA_URL(defaulthttp://localhost:9998)
Installation
pip install tika-mcp
Or from source:
pip install .
Quick Start
Install tika-mcp:
pip install tika-mcpStart Apache Tika Server:
docker run --rm -p 9998:9998 apache/tika:3.3.1.0Start tika-mcp:
export TIKA_URL=http://localhost:9998 tika-mcpIt now listens at
http://127.0.0.1:8000/mcp(transport:streamable-http).
Tools
Every tool takes a single argument, source - a local file path, or an http(s)://
URL (remote URLs must be enabled). All tools are read-only.
| Tool | What it does |
|---|---|
extract_text |
Extract plain text from a document (PDF, Office, HTML, and other Tika-supported formats). |
extract_metadata |
Return document metadata (author, title, content type, page count, …) without the body text. |
detect_mime_type |
Detect the file's MIME/content type from its bytes, without full parsing. |
extract_html |
Extract structured XHTML with headings, tables, and links preserved. |
extract_documents |
Unpack a container/archive/compound file (zip, email, compound doc) and return each embedded document. |
Configuration
| Variable | Default | Description |
|---|---|---|
TIKA_MCP_HOST |
127.0.0.1 |
MCP bind host |
TIKA_MCP_PORT |
8000 |
MCP bind port |
TIKA_MCP_PATH |
/mcp |
Streamable HTTP endpoint path |
TIKA_MCP_BEARER_TOKEN |
unset | Optional bearer token required for MCP HTTP requests |
TIKA_URL |
http://localhost:9998 |
Tika Server base URL |
TIKA_TIMEOUT_SECONDS |
30 |
Request timeout for Tika and remote downloads |
TIKA_MAX_FILE_SIZE_MB |
25 |
Maximum local/remote input file size |
TIKA_MAX_OUTPUT_SIZE_MB |
10 |
Max MCP tool response size; also caps the streamed Tika response body before it is buffered |
TIKA_ALLOW_LOCAL_FILES |
true |
Enable local file sources |
TIKA_ALLOWED_LOCAL_ROOTS |
unset | Comma-separated allowed local path roots |
TIKA_ALLOW_REMOTE_URLS |
false |
Enable remote URL sources |
TIKA_ALLOWED_URL_SCHEMES |
http,https |
Allowed remote URL schemes |
TIKA_BLOCK_PRIVATE_IPS |
true |
Block private/loopback/link-local/internal targets |
TIKA_MAX_REDIRECTS |
5 |
Max remote URL redirects |
TIKA_RECURSIVE_MAX_DEPTH |
unset | Max recursive archive depth |
TIKA_RECURSIVE_MAX_FILES |
unset | Max number of recursive extracted files |
TIKA_RECURSIVE_MAX_TOTAL_SIZE_MB |
unset | Max total recursive expanded text size |
TIKA_PDF_EXTRACT_MARKED_CONTENT |
unset | Send X-Tika-PDFextractMarkedContent; true preserves paragraph structure for tagged PDFs |
TIKA_PDF_EXTRACT_ANNOTATION_TEXT |
unset | Send X-Tika-PDFextractAnnotationText; false avoids duplicate hyperlink URLs |
TIKA_PDF_SORT_BY_POSITION |
unset | Send X-Tika-PDFsortByPosition; true orders text by visual position (untagged PDFs) |
TIKA_COLLAPSE_BLANK_LINES |
false |
Collapse runs of blank lines in extracted text (like cat -s) |
Example
Set any of the above in your shell, then run tika-mcp. It starts a streamable-HTTP
server on TIKA_MCP_HOST:TIKA_MCP_PORT at TIKA_MCP_PATH (default
http://127.0.0.1:8000/mcp):
export TIKA_URL=http://localhost:9998
export TIKA_MCP_PORT=8000
export TIKA_PDF_EXTRACT_MARKED_CONTENT=true
export TIKA_PDF_EXTRACT_ANNOTATION_TEXT=false
export TIKA_COLLAPSE_BLANK_LINES=true
tika-mcp
PDF structure preservation
By default Tika extracts PDF text line-by-line, which breaks paragraphs mid-sentence. For tagged PDFs (Google Docs / Word "Save as PDF"), rebuild real paragraphs with:
export TIKA_PDF_EXTRACT_MARKED_CONTENT=true # use the PDF's structure tree for paragraphs
export TIKA_PDF_EXTRACT_ANNOTATION_TEXT=false # drop duplicate hyperlink URLs
export TIKA_COLLAPSE_BLANK_LINES=true # squeeze blank lines (like `cat -s`)
tika-mcp
For untagged PDFs (no structure tree), use TIKA_PDF_SORT_BY_POSITION=true instead, which
orders text by visual position.
Streamable HTTP Client Configuration
Endpoint format:
- URL:
http://<TIKA_MCP_HOST>:<TIKA_MCP_PORT><TIKA_MCP_PATH> - transport:
streamable-http
Example MCP client config (generic):
{
"mcpServers": {
"tika": {
"transport": {
"type": "streamable-http",
"url": "http://127.0.0.1:8000/mcp"
}
}
}
}
Bearer Token Protection
Set TIKA_MCP_BEARER_TOKEN to require authenticated MCP requests:
TIKA_MCP_BEARER_TOKEN=super-secret tika-mcp
Request example:
curl -X POST "http://127.0.0.1:8000/mcp" \
-H "Authorization: Bearer super-secret" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'
License
MIT
Установить Tika в Claude Desktop, Claude Code, Cursor
unyly install tika-mcpСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add tika-mcp -- uvx tika-mcpFAQ
Tika MCP бесплатный?
Да, Tika MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Tika?
Нет, Tika работает без API-ключей и переменных окружения.
Tika — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Tika в Claude Desktop, Claude Code или Cursor?
Открой Tika на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Tika with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
