Local-first MCP server and Kotlin/JVM CLI for indexing private Telegram chats and searching them with hybrid full-text + semantic retrieval.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"telegram-private-search": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Turn your Telegram history into searchable memory for you and your AI tools.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in search / communication
Web and local search using Brave Search API
Asynchronous coordination layer for AI coding agents: identities, inboxes, searchable threads, and advisory file leases over FastMCP + Git + SQLite
Production ready MCP server with real-time search, extract, map & crawl.
mini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local
MCP Security Weekly
Get CVE alerts and security updates for Telegram Private Search and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Turn your Telegram history into searchable memory for you and your AI tools.
telegram-private-search is a local-first Kotlin/JVM tool and MCP server that turns years of private Telegram chats into a structured, searchable knowledge source.
It is built for a very specific feeling: you know a conversation happened, you remember what it meant, but you do not remember the exact wording well enough to find it with normal search.
With this project, your assistant can stop guessing and start querying your local Telegram archive directly.
cp .env.example .env
./gradlew test
./gradlew run --console=plain --args='index --limit-per-chat 500'
./gradlew run --args='mcp'
Then connect an MCP-compatible client to the server and query your Telegram history in natural language.
Your Telegram history often contains:
This project turns that messy, memory-shaped information into something an MCP-compatible client can actually use.
Instead of scrolling through years of chats and trying random keywords, you can ask higher-level questions such as:
It indexes your private Telegram chats into a local SQLite database, then combines local keyword search, recency-aware ranking, and thread expansion so vague, memory-shaped queries still have a good chance of finding the right message.
This project exposes your Telegram search index through an MCP server over stdio.
That means an AI tool that supports MCP can call into this server as a capability instead of you manually copying text around. In practice, this lets your assistant search your local Telegram history as a structured tool, returning relevant messages and context when you ask questions in natural language.
Think of it as a bridge between:
Without MCP, this project is already useful as a CLI search tool.
With MCP, it becomes part of a larger assistant workflow. Your client can treat Telegram search as a real tool call instead of a manual side task. That makes it possible to:
Telegram account
|
v
TDLight client
|
v
Message ingestion
|
v
Local SQLite index (Room)
|
+--> keyword search
|
+--> local lexical retrieval
|
v
Ranking and result shaping
|
+--> CLI search
|
+--> MCP server over stdio
|
v
MCP-compatible assistant or client
In short: Telegram messages come in, a local index is built, local retrieval finds relevant results, and the MCP server exposes that capability to tools that can speak MCP.
People rarely remember the exact words used in a chat. They remember intent, context, and fragments: