Content Core includes a Model Context Protocol (MCP) server that exposes content extraction and summarization to Claude Desktop and other MCP-compatible applications.
The Model Context Protocol (MCP) is an open standard that lets AI applications connect to external tools and data sources. Content Core's MCP server gives Claude the ability to extract content from URLs and files, and to summarize text, directly within a conversation.
pip install content-coreuvx content-core mcpAdd the following to your claude_desktop_config.json:
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Most extraction sources (URLs, PDFs, documents, YouTube transcripts) work without any API key:
{
"mcpServers": {
"content-core": {
"command": "uvx",
"args": ["content-core", "mcp"]
}
}
}Add OPENAI_API_KEY to enable summarization and audio/video transcription:
{
"mcpServers": {
"content-core": {
"command": "uvx",
"args": ["content-core", "mcp"],
"env": {
"OPENAI_API_KEY": "sk-your-key-here"
}
}
}
}For best results with URL extraction, add web crawling API keys:
{
"mcpServers": {
"content-core": {
"command": "uvx",
"args": ["content-core", "mcp"],
"env": {
"OPENAI_API_KEY": "sk-your-key-here",
"FIRECRAWL_API_KEY": "fc-your-key-here",
"JINA_API_KEY": "jina-your-key-here"
}
}
}
}{
"mcpServers": {
"content-core": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/content-core",
"run",
"content-core",
"mcp"
]
}
}
}The MCP server provides two tools. Both return plain text responses.
Extracts content from a URL or file. Does not require an API key for most sources (web pages, PDFs, documents, YouTube transcripts). An API key is only needed for audio/video transcription.
Parameters:
url(string, optional) -- URL to extract content fromfile_path(string, optional) -- local file path to extract content fromengine(string, optional) -- extraction engine override, routed by input type:- with
url:auto,simple,firecrawl,jina,crawl4ai - with
file_path:auto,simple,doclingAn engine outside the list for that input type is rejected with an error naming the accepted values.doclingrequires the optional extra (pip install "content-core[docling]"); without it, useautoorsimple.
- with
formulas(bool, optional) -- Enable formula extraction via Doclingpictures(bool, optional) -- Enable image description + chart data extraction via Doclingno_ocr(bool, optional) -- Disable OCR in Docling
Exactly one of url or file_path must be provided.
Summarizes text content using an LLM. Always requires an LLM API key (e.g., OPENAI_API_KEY). If no API key is configured, use extract_content to get the raw content instead.
Parameters:
content(string, required) -- the text to summarizecontext(string, optional) -- guidance for the summary style (e.g., "bullet points", "explain to a child", "action items")
Once configured, you can use these tools naturally in Claude Desktop conversations:
Extracting a web page:
"Extract the content from https://example.com/article"
Extracting a local file:
"Read the content of /path/to/document.pdf"
Transcribing a video:
"Extract the transcript from /path/to/lecture.mp4"
Summarizing extracted content:
"Extract https://example.com/long-article and summarize it in bullet points"
Claude will call the appropriate MCP tools automatically based on your request.
Engine selection and other settings can be passed through the env block in the Claude Desktop config:
{
"mcpServers": {
"content-core": {
"command": "uvx",
"args": ["content-core", "mcp"],
"env": {
"OPENAI_API_KEY": "sk-...",
"CCORE_URL_ENGINE": "firecrawl",
"CCORE_DOCUMENT_ENGINE": "simple",
"CCORE_AUDIO_CONCURRENCY": "5",
"FIRECRAWL_API_URL": "http://localhost:3002"
}
}
}
}See the usage guide for the full list of CCORE_ environment variables.
| Key | Purpose | Required? |
|---|---|---|
An LLM/STT API key (e.g., OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY) |
Audio/video transcription, summarization | Required for summarize_content and audio/video extraction. Not needed for URL, PDF, document, or YouTube extraction. Any provider supported by Esperanto works. |
FIRECRAWL_API_KEY |
High-quality web extraction | Optional (improves URL extraction) |
JINA_API_KEY |
Alternative web extraction | Optional (avoids Jina rate limits) |
When no API key is configured, the AI agent should prefer extract_content over summarize_content. Most extraction sources (URLs, PDFs, Office documents, YouTube transcripts) work without any API key. Only audio/video transcription and summarization require OPENAI_API_KEY (or another LLM provider key). Without web crawling API keys, URL extraction falls back to BeautifulSoup.
Getting API keys:
- OpenAI: platform.openai.com/api-keys
- Firecrawl: firecrawl.dev or self-host
- Jina: jina.ai
"Unexpected token" errors in Claude Desktop:
- Usually caused by library output leaking to stdout. Update to the latest version of content-core.
Connection failures:
# Test the MCP server directly
content-core mcp
# Or with uvx
uvx content-core mcpAudio/video extraction failing:
- Verify
OPENAI_API_KEYis set and has sufficient credits.
Poor web extraction quality:
- Add
FIRECRAWL_API_KEYorJINA_API_KEYfor better results.
Debug logging:
export LOGURU_LEVEL=DEBUG
content-core mcp