ppdiary is a diary management system built on the Model Context Protocol (MCP). Operating as an MCP server, it enables diary creation and management through MCP-compatible clients like Claude.
Built with the concept of "A diary system that works exclusively through MCP Server", it provides simple yet powerful diary management capabilities. This lightweight system runs entirely locally using SQLite for data persistence.
ppdiary represents a paradigm shift in personal software design. In an era where every app demands your attention with complex interfaces, ppdiary takes a radically different approach:
No UI. No app. No website. Just conversation.
This is what we call the Zero UI Philosophy - software that exists purely through natural language interaction with AI assistants. You don't "use" ppdiary; you simply talk about your day with Claude, and your diary writes itself.
Unlike traditional apps with AI features bolted on, ppdiary was designed from the ground up for the AI era:
- Invisible by design - No cognitive overhead of learning a new interface
- Context-aware - Your AI assistant understands intent, not just commands
- Naturally integrated - Diary writing happens within your existing AI workflow
- Locally stored - Your data stays on your machine with SQLite
ppdiary isn't just a diary - it's a glimpse into the future where personal software dissolves into conversation. No more app switching, no more UI friction, just natural interaction with an AI that understands you.
This is what AI-native software looks like.
- π Create, edit, and delete diary entries
- π Full-text keyword search
- π Pagination support
- ποΈ Local SQLite database storage
- π³ Docker containerization
ppdiary is designed for:
- Developers and tech enthusiasts comfortable with Docker and command-line tools
- Privacy-conscious users who want full control over their personal data
- AI early adopters exploring new paradigms of human-computer interaction
- Minimalists seeking distraction-free journaling without traditional apps
While revolutionary, the Zero UI approach has limitations:
- No visual browsing - You must know what you're looking for
- AI interpretation required - Natural language can sometimes be ambiguous
- No rich media - Text-only entries (no images, drawings, or formatting)
- Learning curve - Requires familiarity with conversational AI patterns
- Experimental technology - MCP is new and evolving
- Limited client support - Currently only works with Claude Desktop and compatible clients
- API changes possible - Future updates may require adjustments
While ppdiary prioritizes local storage:
- Unencrypted SQLite - Database is stored in plain text (no encryption at rest)
- File system dependent - Security relies on your OS file permissions
- Docker volume access - Anyone with Docker access can read the database
- No authentication - No user accounts or access control
- Node.js 24.7.0 or higher (for local installation)
- Docker (if using Docker)
claude mcp add ppdiary --scope user --env TZ=Asia/Tokyo -- \
docker run -i --rm -e TZ -v ~/ppdiary-data:/app/data ghcr.io/ppworks/ppdiary:latestAdjust TZ=Asia/Tokyo to your timezone.
If you prefer manual configuration, add the following to your Claude Desktop configuration file (claude_desktop_config.json):
{
"mcpServers": {
"ppdiary": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/Users/USERNAME/ppdiary-data:/app/data",
"ghcr.io/ppworks/ppdiary:latest"
]
}
}
}Important:
- Replace
USERNAMEwith your actual username - The
ppdiary-datadirectory will be created automatically - SQLite database files will be saved in this directory
To add timezone support, include the TZ environment variable in the env section (e.g., "TZ": "Asia/Tokyo"). Without configuration, timestamps default to UTC.
With ppdiary configured in Claude Desktop, you can perform these operations:
"I want to write today's diary in ppdiary"
"Create a diary entry with title: Wonderful Day, content: Today was..."
"Search for diary entries with the keyword 'travel' in ppdiary"
"Show me the 10 most recent diary entries"
"Show me the diary entry with ID: xxx in ppdiary"
"Change the title of diary entry ID: xxx in ppdiary"
"Delete the diary entry with ID: xxx in ppdiary"
ppdiary provides the following MCP tools:
| Tool Name | Description | Parameters |
|---|---|---|
get_diary_list |
Retrieve list of diary entries | query?, order?, page?, perPage? |
get_diary |
Fetch a specific diary entry | id |
create_diary |
Create a new diary entry | title, content |
update_diary |
Update an existing diary entry | id, title, content |
delete_diary |
Delete a diary entry | id |
- When using Docker: Mounted volume (e.g.,
/Users/USERNAME/ppdiary-data/on macOS) - When running locally:
data/folder in the project directory
The database file (diary.db) is saved in SQLite format.
# Install dependencies
npm install
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint
npm run lint
# Type check
npm run type-checknpm run builddocker build -t ppdiary .- When using Docker, verify that the volume mount path is correct
- Check for file system permission issues
- Ensure Node.js version is 24.7.0 or higher
- For Docker, verify that the container is running correctly
Add --pull always to the docker run command to force pulling the latest image:
docker run -i --rm --pull always -v ~/ppdiary-data:/app/data ghcr.io/ppworks/ppdiary:latestMIT
Issues and Pull Requests are welcome!
If you encounter any issues or have questions, please report them on GitHub Issues.