Skip to main content
Glama
coji

Journal MCP Server

by coji
README.md
# Journal MCP Server

A Model Context Protocol (MCP) server for journal entries with a React Router v7 web viewer.

## Features

- šŸ“– **MCP Server**: Integration with Claude Desktop for journal management
- 🌐 **Web Viewer**: React-based interface for browsing journal entries
- šŸš€ **Server-side rendering** with React Router
- āš”ļø **Hot Module Replacement** (HMR) for development
- šŸ”’ **TypeScript** by default
- šŸŽ‰ **TailwindCSS** for styling
- šŸ“ **File-based storage** with automatic organization

## Getting Started

### Quick Start with npx

Run directly without installation:

```bash
# Start web viewer
npx @coji/journal-mcp --viewer

# Setup Claude Desktop integration
npx @coji/journal-mcp --setup

# Start MCP server for Claude Desktop
npx @coji/journal-mcp
```

### Local Development

Install the dependencies:

```bash
pnpm install
```

### Development

Start the development server with HMR:

```bash
pnpm dev
```

Your web viewer will be available at `http://localhost:5173`.

### Building for Production

Create a production build:

```bash
pnpm build
```

## Usage

### Using npx (Recommended)

```bash
# Show help
npx @coji/journal-mcp --help

# Setup Claude Desktop integration
npx @coji/journal-mcp --setup

# Verify Claude Desktop setup
npx @coji/journal-mcp --verify-setup

# Start MCP server for Claude Desktop
npx @coji/journal-mcp

# Start web viewer
npx @coji/journal-mcp --viewer

# Custom port examples
npx @coji/journal-mcp --viewer --port 8080
```

### Local Development Commands

For development after local installation:

```bash
# Show help
node dist/index.js --help

# Setup Claude Desktop configuration
node dist/index.js --setup

# Start MCP server
node dist/index.js

# Start web viewer
node dist/index.js --viewer
```

The web viewer will be available at `http://localhost:8765` (or your specified port).

## MCP Tools

The server provides these tools for Claude Desktop:

1. **add_entry** - Add new journal entries
2. **search_entries** - Search by date range, tags, or keywords
3. **get_recent_entries** - Get most recent entries
4. **list_tags** - List all tags with usage counts
5. **get_entry_by_date** - Get entries for a specific date
6. **get_daily_summary** - Get journal statistics

## File Storage

Journal entries are stored in:
- **Location**: `~/.local/share/journal-mcp/entries/YYYY/MM/YYYY-MM-DD.md`
- **Format**: Markdown with YAML frontmatter
- **Features**: Automatic tag extraction, time-based organization

## Deployment

### Docker Deployment

```bash
docker build -t journal-mcp .
docker run -p 8765:8765 journal-mcp
```

### Manual Deployment

Deploy the output of `pnpm build`:

```text
ā”œā”€ā”€ package.json
ā”œā”€ā”€ pnpm-lock.yaml
ā”œā”€ā”€ build/
│   ā”œā”€ā”€ client/    # Static assets
│   └── server/    # Server-side code
```

---

Built with ā¤ļø using React Router and MCP.

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: adding entries, retrieving entries by different criteria (date, recency, search), summarizing statistics, and listing tags. There is no overlap or ambiguity between tools like get_entry_by_date and get_recent_entries, as they serve different retrieval needs.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern with snake_case, such as add_entry, get_daily_summary, and search_entries. This uniformity makes the tool set predictable and easy to understand for an agent.

Tool Count5/5

With 6 tools, this server is well-scoped for a journaling domain, covering core operations like CRUD (add, get, search), summaries, and tag management. Each tool earns its place without feeling excessive or insufficient.

Completeness4/5

The tool set provides strong coverage for reading, writing, and searching journal entries, with tag support and summaries. A minor gap exists in update or delete functionality for entries, but agents can work around this by appending or managing files indirectly.

Maintenance

ActivityInactive
ResponsivenessNo issues