io.github.lsmman/fetchive
OfficialParses KakaoTalk exports to extract all embedded links for batch archiving.
Formats extracted content into ready-to-save payloads for Notion workspaces.
Prepares extracted content in a format that can be directly saved into Obsidian.
Parses Slack dumps to extract links and prepare them for archiving.
Extracts transcripts from YouTube videos using multiple fallback methods, including captions and local speech-to-text, and caches them for reuse.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.lsmman/fetchiveExtract links from this text, check duplicates, and get YouTube transcripts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fetchive
Throw links at it. Get workspace-ready pages back.
An MCP server for people who collect more links than they can process. Paste a KakaoTalk export, a Slack dump, or a bare list of URLs, and Fetchive pulls out every link, skips what you already saved, reads what is behind each one — YouTube transcripts, article text — and hands your assistant a ready-to-save payload for each.
Everything it reads stays searchable, so last month's links can answer this month's question.
It does not write to your workspace. It prepares the page and lets whatever you already have connected — Notion, Obsidian, anything — do the saving. No second login, no second place for your data to sit.
Install
uvx fetchiveOr add it to your MCP client:
{
"mcpServers": {
"fetchive": {
"command": "uvx",
"args": ["fetchive"]
}
}
}For local speech-to-text on videos with no captions:
uvx --with 'fetchive[stt]' fetchiveThat extra needs ffmpeg on your PATH (brew install ffmpeg) and downloads a
Whisper model on first use.
Related MCP server: Parkour MCP
Using it
Say this to your assistant:
Here's my link dump from this week, archive it → (paste)
Behind that, one tool call does the work:
archive_batchparses the links, skips what is already saved, extracts transcripts, and starts working in the backgroundget_batch_statusreports progress and returns the finished payloadsYour assistant saves each one with your workspace tool
record_archivedtells Fetchive it landed, so next week's dump skips it
Later, ask it what you saved:
지난달에 RAG 청킹 얘기 어디서 봤더라?
search_archive runs full-text search over every transcript and article body it
has read — not just titles — and Korean works, which the usual word tokenizer
does not manage.
The other tools — ingest_links, extract_youtube_script, check_duplicate,
format_for_notion, forget_archived — are the individual steps, there for when
you want to inspect or repair something rather than run the whole flow.
A link it cannot read fails rather than becoming an empty page. A row that says only "here is a URL I could not open" looks like the work was done.
How transcripts actually get extracted
This is the hard part of the problem, and no single method survives YouTube for long. Fetchive tries four, in order, and stops at the first that returns words:
Order | Method | Cost | Why it is in the chain |
1 |
| free | Fastest when it works |
2 |
| free | Different endpoints, so it survives blocks that stop #1 |
3 |
| cheap | For when your IP itself is the problem |
4 |
| slow | Works on videos with no captions at all |
Every attempt is recorded with a reason it failed — blocked, no_captions,
unavailable, too_long, and so on — so a run tells you not only what came out
but which parts of the pipeline still work. Successful transcripts are cached, so
asking twice is free.
Captions are chosen by what exists, not by what you hoped for: a Korean video with only Korean captions gets its Korean transcript rather than being reported as having none.
Configuration
Everything is optional.
Variable | Default | What it does |
|
| Where your archive index and transcript cache live |
|
| Preferred caption languages, best first |
| — | Enables the proxy step. Without these it is skipped |
|
| Set to |
|
| Larger is slower and more accurate |
|
| Refuse to transcribe anything longer, in seconds |
|
| Concurrent extractions. YouTube dislikes more |
|
| Longest verbatim quote allowed out of the server |
|
|
|
About copyright
Transcripts are extracted for your own reading and cached locally. Putting that text into a stored page is a different act, so what Fetchive prepares for your workspace is a summary, a word count, and at most one quote of fifteen words per source — enforced in the payload builder rather than left to whoever is calling. The link to the original always travels with it.
Fetchive is a tool for organising material you have chosen to keep. It is not for republishing anyone's work, and you remain responsible for what you do with what it extracts. If a source's terms do not permit you to store its content, do not archive it.
Your data
Everything stays on your machine, in one SQLite file. Fetchive has no server, no account, and no telemetry. It talks to YouTube to fetch transcripts, and to a proxy only if you configure one. Nothing is ever sent to Fetchive's authors.
To delete everything: rm -rf ~/.fetchive. To remove one item, call
forget_archived with its URL.
Full policy: https://github.com/lsmman/fetchive/blob/main/PRIVACY.md
Development
uv sync
uv run pytest
uv run ruff check src testsNetwork tests are deselected by default. To run them against real YouTube:
uv run pytest -m networkMIT licensed.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that converts URLs to clean Markdown/Text for LLM agents.Last updated5705MIT
- AlicenseAqualityBmaintenanceA content exploration MCP server that helps LLMs surface high-signal, unsummarized web content through clean APIs and Markdown conversion, with intelligent frontmatter steering and citation tracking.Last updated134MIT
- Alicense-qualityCmaintenanceMCP server that extracts YouTube video transcripts (including metadata) as Markdown, enabling AI to summarize and discuss video content without watching it.Last updatedMIT
- FlicenseAqualityBmaintenancePersistent knowledge-base MCP server. Semantic search with source citations over saved YouTube videos, podcasts, articles and PDFs — one endpoint for every MCP-capable AI client.Last updated28
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Any social-video URL → transcript, metadata, frames, OCR, summary, search, Q&A. MCP server + x402.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lsmman/fetchive'
If you have feedback or need assistance with the MCP directory API, please join our Discord server