ai-journal

ai-journal

A local MCP server for journaling, organizing, and recalling your work. It captures entries as plain markdown files, indexes them for full-text and structured search, and enables querying via natural language.

Category
访问服务器

README

ai-journal-mcp

PyPI Python CI License: MIT

A local MCP server for journaling, organizing, recalling, and tracking your work. Capture what each session taught you, let it organize into a clean, queryable structure, then recall and analyze the whole archive — recurring patterns, past lessons, blog-post material. The tasks that fall out of the work live here too, linked to the entries that explain them. Plain markdown stays the source of truth, and nothing leaves your machine.

The problem

You journal the hard-won lessons — the debugging pattern, the process failure, the "this is a blog post" moment. Then they vanish. Not because you didn't write them down, but because a journal you can't interrogate is write-only memory: the insight is in there somewhere, in a file too big to reread, and the pattern recurs anyway because nothing surfaced it at the moment you needed it.

Naming a pattern in your journal doesn't prevent the next instance — but being able to recall it does. That recall is the whole point, and it's what plain markdown files alone can't give you.

What it feels like

Ask your journal a real question, mid-work, from the same LLM session you're already in:

You: "What do I keep relearning about AI-assisted development?"

Claude (via ai-journal-mcp): searches across months of entries, pulls the seven that recur on the theme, and synthesizes the through-line — "You've hit 'tests are an uneven safety net' three times since April; here are the entries and the common trigger…"

Or capture without breaking flow:

You: "Journal that — the bit about auditing every artifact when a hypothesis dies, not just the one with a test."

ai-journal-mcp writes entries/2026-04/30-when-a-hypothesis-dies.md with themes and blog angles, regenerates the index views, and rebuilds search — one call, everything consistent.

What it does

Four capabilities, one local MCP server:

  1. Journal — capture however suits the moment: dump the whole session, jot a single lesson, or hand it a rough list to clean up. The add_entry tool takes freeform text and files it as a canonical entry (one per file, entries/YYYY-MM/DD-slug.md, with themes, tags, and blog_angles) — no format discipline required. Prefer to write entries by hand? ai-journal-mcp reads what's already there as-is.
  2. Organize — themes are metadata, not folders, so one entry can carry several and no themed file grows without bound. The index and per-theme views are generated, never hand-edited, so the structure can't rot back into a megafile. Bringing a mess? scan reports what a migration would do; migrate --apply rewrites a sprawling journal into the clean layout — originals preserved in attic/, every dedup decision logged, no data loss, ever. (The first run absorbed 1,460 entries across 340 files spanning three format eras.)
  3. Recall & analyze — full-text + structured search across one or many journals (search_journal, entries_over_time, list_themes, get_entry), filtered by theme, journal, or date range. Surface recurring patterns, find unused blog material, trace when a problem first appeared. This is the payoff: the journal as raw material for posts, talks, and not repeating old mistakes.
  4. Track — the tasks that come out of the work, as a mutable list: status, priority, and what's blocked on what (add_task, update_task, list_tasks). Each task links to the entries that give it context, so resuming one surfaces the reasoning behind it. Tasks are journaling's mutable sibling — separate files, their own rules, never bending the append-only entries.

Your data stays yours

  • Markdown is the source of truth. The SQLite + FTS5 index is disposable — delete it anytime, it rebuilds from your files. Nothing is locked in a database you don't control.
  • It runs locally. An MCP stdio server; your journal never leaves your machine.
  • It doesn't demand ownership of every source. Register a journal as indexed and ai-journal-mcp reads and searches it in place but never rewrites it — ideal for a journal that already has its own conventions. managed journals are the ones it maintains for you. Both are searchable together, so cross-domain patterns ("what was I learning in engineering the week I learned X in deal research?") stop being invisible.

Quickstart

Install from PyPI (Python 3.11+):

pip install "ai-journal-mcp[server]"   # MCP server + CLI; drop [server] for CLI-only

Register your journals in ~/.config/ai-journal-mcp/journals.toml:

[[journal]]
name = "technical"
path = "~/journal"
mode = "managed"            # ai-journal-mcp owns the layout

[[journal]]
name = "deal-research"
path = "~/research/deals"
mode = "indexed"            # read-only; searched but never rewritten

Wire it into Claude Code as an MCP server:

claude mcp add ai-journal-mcp -- ai-journal-mcp serve

Querying happens through the server (it builds and refreshes the index for you). The CLI handles intake and maintenance directly:

ai-journal-mcp scan ~/old-journal            # dry-run intake report
ai-journal-mcp migrate ~/old-journal --apply # rewrite into the managed layout
ai-journal-mcp refresh ~/journal             # regenerate JOURNAL.md + theme views

Documentation

Doc Contents
docs/USE_CASES.md What the product is for, case by case
docs/ARCHITECTURE.md Components, data flow, journal modes, trust boundaries
docs/SPECIFICATION.md Entry format, journals.toml, parser rules, tool/CLI contracts
docs/ARCHITECTURE_DECISIONS.md The "why" behind each design choice
docs/DEVELOPMENT.md Dev environment setup, make targets, tooling, troubleshooting

Development

./scripts/setup.sh   # Python 3.11+: creates .venv, installs the package + dev tools
make check           # lint + format-check + type-check + tests (the pre-push gate)

See docs/DEVELOPMENT.md for the full guide.

License

MIT © Solent Labs™

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选