Content
# Day One MCP Server
An MCP server that provides read/write access to your [Day One](https://dayoneapp.com) journal entries.
## Features
- **Read entries** from your Day One database (read-only access)
- **Create entries** via the Day One CLI (preserves sync integrity)
- **Full-text search** with FTS5 - relevance ranking, phrase matching, boolean operators, and proximity search
## Setup
### Prerequisites
- Day One app installed and run at least once (creates the database)
- Day One CLI available (`dayone` command)
### Configure Claude Desktop
Add this to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"dayone": {
"command": "uvx",
"args": ["--from", "git+https://github.com/olivernormand/dayone-mcp", "dayone-mcp"]
}
}
}
```
## Available Tools
### Read
| Tool | Description |
|------|-------------|
| `read_recent_entries` | Get recent journal entries with optional `full_text` parameter |
| `search_entries` | Basic substring search across entries |
| `list_journals` | List all journals with entry counts |
| `get_entry_count` | Get total entry count (optionally by journal) |
| `get_entries_on_this_day` | "On This Day" - entries from this date in previous years |
### Write
| Tool | Description |
|------|-------------|
| `create_entry` | Create a new entry with optional tags, location, attachments, etc. |
### Full-Text Search (FTS)
These tools use a separate FTS5 index for fast, relevance-ranked search. This is a key differentiator from other Day One MCP implementations.
| Tool | Description |
|------|-------------|
| `fts_search` | Full-text search with relevance ranking |
| `fts_sync` | Sync/rebuild the search index |
| `fts_stats` | Get index statistics |
#### FTS Query Syntax
```
startup ideas # Entries containing both words
"morning run" # Exact phrase match
build* # Prefix match (build, building, builder)
startup NOT fintech # Boolean NOT
startup OR ideas # Boolean OR
NEAR(morning run, 5) # Words within 5 tokens of each other
```
#### FTS Filters
- `journal` - Filter by journal name
- `starred_only` - Only starred entries
- `year` - Filter by year
- `date_from` / `date_to` - Date range (YYYY-MM-DD)
- `full_text` - Return complete entry text instead of snippet
#### FTS Sync
The search index syncs automatically on server startup. To manually rebuild if needed:
```
fts_sync(full_rebuild=True)
```
## Architecture
- **Reads**: Direct SQLite database access (read-only mode)
- **Writes**: Via Day One CLI (preserves sync integrity)
- **FTS Index**: Separate SQLite database at `~/.dayone-mcp/fts_index.sqlite`
The Day One database is never modified. All writes go through the official CLI.
## Local Development
```bash
# Clone and install
git clone https://github.com/olivernormand/dayone-mcp
cd dayone-mcp
uv sync
# Run the server
uv run dayone-mcp
```
## License
MIT