Unified History MCP
This server provides configurable full-text search across historical data from multiple domains: agent session logs, meeting transcripts, notification files, command history, and runtime logs. Capabilities include:
Search across one or all domains with options for FST-accelerated or regex search, date range filtering, role filtering (for sessions: user/assistant/tool), speaker filtering (for transcripts), case sensitivity, context lines, and result limits.
List available files and their metadata within a domain, with optional date filtering and entry limits.
Read specific entries from a file or directory, with role/speaker filtering and latest-first ordering.
Summarize entries in sessions or transcripts using AI-generated summaries.
Rebuild FST indexes for fast search across configured domains.
Search command history with plain text or regex, case sensitivity, and limits.
Search runtime logs with query, regex, case sensitivity, and optional log level filtering (e.g., WARNING, ERROR, DEBUG, INFO).
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., "@Unified History MCPsearch all history for 'deployment failure'"
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.
Unified History MCP
Config-driven MCP server for cross-domain full-text search across agent session logs, meeting transcripts, and notification files.
Quick Start
# Install from source (PyPI package coming soon)
pip install git+https://github.com/jmars/unified-history-mcp.git
# Create a config file at ~/.config/unified-history-mcp/config.toml
# or use the example as a starting point:
cp config.example.toml ~/.config/unified-history-mcp/config.toml
# Start the server
unified-history-mcpAdd to your MCP client configuration:
{
"mcpServers": {
"unified-history": {
"command": "unified-history-mcp"
}
}
}Related MCP server: docsearch
Configuration
Configuration is loaded from the first existing location:
$UNIFIED_HISTORY_CONFIGenvironment variable~/.config/unified-history-mcp/config.toml./unified-history.toml(current working directory)
Domain Configuration
Each [domains.X] section defines a searchable domain:
Field | Type | Default | Description |
| string | required | Root directory for this domain's files |
| string |
| Glob pattern for file discovery |
| string |
|
|
| string[] |
| Allowed extensions (e.g. |
| string |
| Extractor: |
| string | (extractor) | Renderer override |
| string |
| Human label: "session", "transcript", etc. |
| string |
| Path or name of the FST indexer binary |
| string | (dir) | Override for index directory |
| string | — | JSON field for date extraction (jsonl only) |
| string[] |
| Supported filters: |
Global Configuration
Section | Field | Description |
|
| Path to command history file |
|
| Path to runtime log file |
MCP Tools
search(domain, query, ...)
Full-text search with FST fast path and regex fallback.
Parameter | Type | Default | Description |
| string |
| Domain or |
| string |
| Search text or regex pattern |
| int |
| Maximum total matches |
| string | — | Start date (YYYY-MM-DD) |
| string | — | End date (YYYY-MM-DD, inclusive) |
| bool |
| Treat query as regex |
| int |
| Surrounding context lines per match |
| bool |
| Case-sensitive matching |
| int |
| Max matches from any single file |
| string | — | [sessions] Filter by role: user, assistant, tool |
| string | — | [transcripts] Filter by speaker name |
list_domain(domain, date_from, date_to, max_results)
List available files in a domain with metadata.
Parameter | Type | Default | Description |
| string | — | Domain to list |
| string | — | Start date (YYYY-MM-DD) |
| string | — | End date (YYYY-MM-DD, inclusive) |
| int |
| Maximum entries to show |
read(domain, id, max_entries, role, speaker)
Read entries from a domain file.
Parameter | Type | Default | Description |
| string | — | Domain |
| string | — | File/directory name or unique prefix |
| int |
| Maximum entries (newest first) |
| string | — | [sessions] Filter by role |
| string | — | [transcripts] Filter by speaker name |
summary(domain, id)
Get the AI-generated summary for a domain entry.
Parameter | Type | Description |
| string | Domain (sessions, transcripts) |
| string | File/directory name or unique prefix |
rebuild(domain)
Rebuild FST indexes for configured domains.
Parameter | Type | Default | Description |
| string |
| Domain or |
search_history(query, max_results, regex, case_sensitive)
Search the command history file.
Parameter | Type | Default | Description |
| string | — | Search text or regex pattern |
| int |
| Maximum matches |
| bool |
| Treat query as regex |
| bool |
| Case-sensitive matching |
search_log(query, max_results, regex, case_sensitive, level)
Search the runtime log file.
Parameter | Type | Default | Description |
| string | — | Search text or regex pattern |
| int |
| Maximum matches |
| bool |
| Treat query as regex |
| bool |
| Case-sensitive matching |
| string | — | Filter by log level |
How It Works
Configuration — TOML file defines domains, their directories, extractors, and renderers.
Domain Discovery — Files are discovered via glob patterns with extension filtering.
Fast Path (FST) — If the optional
fst-indexerbinary is installed and indexes are built (via therebuildtool), searches use the blazing-fast FST index.Slow Path (Regex) — Falls back to line-by-line regex scanning across files when FST is unavailable.
Extractors — Produce text entries for FST indexing from different file formats (JSONL, TXT, Tactiq transcripts, notifications).
Renderers — Format entries for human-readable display in search results, listings, and read output.
Development
git clone https://github.com/jmars/unified-history-mcp.git
cd unified-history-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytestContributing
Contributions are welcome! See CONTRIBUTING.md for guidelines on setting up the dev environment, running tests, and submitting pull requests.
License
MIT — see LICENSE.
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
- FlicenseAqualityDmaintenanceAn MCP server that indexes PDF documentation and text into Elasticsearch for semantic search and retrieval. It enables users to query knowledge bases, ingest new files, and dynamically update content through MCP-compatible clients like Claude Desktop and Cursor.Last updated41
- AlicenseAqualityDmaintenanceMCP server that enables searching and reading binary document files (PDF, DOCX, PPTX, XLSX, ODT, ODS, ODP, RTF, EPUB) using regex patterns and retrieving content by sections.Last updated2MIT
- Alicense-qualityCmaintenanceRead-only MCP server for searching and retrieving LogicNotes meeting notes, including summaries, transcripts, and action items.Last updatedMIT
- Alicense-qualityBmaintenanceA local document search MCP server that indexes folders and provides hybrid keyword+semantic search, enabling users to chat with their documents via MCP clients like Claude Desktop or Claude Code.Last updatedMIT
Related MCP Connectors
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Agentic search over your Dewey document collections from any MCP-compatible client.
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/jmars/unified-history-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server