Turn your journal into an AI knowledge base
Claude can read, search, and organize your entries through the SavingThoughts MCP server. You stay in control: it's your token, scoped to exactly what you allow, and revocable at any time.
What you can do
Build legal chronologies from tagged entries
Point Claude at a case tag and a date range, and let it draft a dated chronology you can hand to opposing counsel.
Search across everything by meaning
Ask questions across months of entries. Semantic search surfaces the right thoughts even when you don't recall the exact words.
Keep a living timeline up to date
Merge fresh entries into an existing timeline document, in chronological order, with new events flagged automatically.
Step 1 — Create your API key
Your API key authorizes Claude to talk to your journal. Create one in a minute.
- Log into https://my.savingthoughts.app.
- Go to Settings → MCP API Keys (path
/settings/mcp). - Click Generate Key.
- Enter a name, select the scopes you want to grant, and optionally set an expiry date.
- Copy the token now. It is shown once and can never be retrieved again. If you lose it, generate a new one.
Each scope grants a specific kind of access. Pick only what you need:
entries:read— read your journal entriesentries:write— create and update entriestags:read— read your tagstags:write— create tagssummaries:read— read your daily summaries
Tokens always start with sta_mcp_. You can hold up to 20 tokens per account, and you can revoke any token at any time from the same screen.
Step 2 — Connect Claude Code
Add the MCP server from your terminal, or drop it straight into a .mcp.json file.
claude mcp add --transport http saving-thoughts https://api.savingthoughts.app/api/mcp --header "Authorization: Bearer sta_mcp_YOUR_TOKEN_HERE"
Prefer to commit the config? Use the .mcp.json equivalent:
{
"mcpServers": {
"saving-thoughts": {
"type": "http",
"url": "https://api.savingthoughts.app/api/mcp",
"headers": { "Authorization": "Bearer sta_mcp_YOUR_TOKEN_HERE" }
}
}
}
Use --scope local for just the current project (the default), --scope project to write a shareable .mcp.json into the repo, or --scope user to make the server available across all of your projects.
Step 3 — Connect Claude Desktop
Claude Desktop reaches the server through the mcp-remote bridge.
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"saving-thoughts": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.savingthoughts.app/api/mcp", "--header", "Authorization: Bearer ${STA_TOKEN}"],
"env": { "STA_TOKEN": "sta_mcp_YOUR_TOKEN_HERE" }
}
}
}
This requires Node.js installed on your machine. After editing the file, restart Claude Desktop so it picks up the new server.
Note: SavingThoughts authenticates with a static API token, so you do not use Claude Desktop's native “Custom Connector” UI here — the mcp-remote bridge above is the supported path.
Step 4 — Verify it works
Ask Claude something simple. If it answers from your journal, you're connected.
List my SavingThoughts tags
If Claude returns your tags, the connection works. The server exposes nine tools, grouped by what they do:
- Read:
list_entries,get_entry,search_entries,get_daily_summary,list_summaries,list_tags - Write:
create_entry,update_entry,create_tag
Worked legal examples
Two real workflows a litigator can run end to end.
Example A — Build a chronology (new document)
Using the saving-thoughts MCP, pull every entry from 2026-03-01 to 2026-04-30 tagged smith-case, then draft a dated chronology document I can hand to opposing counsel.
What Claude does: Claude calls list_entries with date_from=2026-03-01, date_to=2026-04-30, and tag=smith-case, then reads the details of individual entries via get_entry where it needs more, and composes a new chronological document for you. Note that list_entries filters by a single tag per call — if the facts you need are spread across several tags, Claude pulls each tag in turn rather than combining them in one filter. The result is a draft built in seconds instead of hours of manual copy-and-paste.
Example B — Merge into an existing timeline
Now take those same entries and merge them into my existing case-timeline.md, keeping everything in chronological order and flagging any new events not already listed.
What Claude does: Claude reuses the entries it already fetched for the smith-case tag, reconciles them against your existing case-timeline.md, and inserts any new dated events in order while flagging the additions. This step is read-only on SavingThoughts (it only needs entries:read) — the merge happens entirely in your local document, so your journal is never modified.