# Project Status
> **Purpose**: Current work, active bugs, and recent changes (2-week rolling window)
> **Lifecycle**: Living (update daily/weekly during active development)
**Last Updated**: 2025-11-26
**Current Phase**: Bug Fix & Architecture Review
**Version**: 0.1.0
---
## Quick Overview
| Aspect | Status | Notes |
|--------|--------|-------|
| Desktop API Integration | π’ | Working after bug fix |
| Server API Integration | π΄ | Not feasible (see ADR below) |
| Claude Code Registration | π’ | Registered with user scope |
| Test Coverage | π‘ | Manual testing only |
| Known Bugs | π’ | Critical bug fixed |
**Status Guide:** π’ Good | π‘ Attention | π΄ Critical | π΅ In Progress
---
## Current Focus
**Completed Today:**
- β
Fixed `note_count` field bug causing 500 errors (line 403)
- β
Investigated Joplin Server API feasibility
- β
Evaluated joppy library for server support
**In Progress:**
- π΅ Restart Claude Code to reload fixed MCP server
**Next Up:**
- [ ] Add automated tests
- [ ] Consider CLAUDE.md and other docs
---
## Deployment Status
### Claude Code MCP Registration
- **Status**: Deployed (user scope)
- **Command**: `claude mcp add joplin -s user --env JOPLIN_TOKEN=... -- /home/samuel/repos/joplin-mcp/.venv/bin/python /home/samuel/repos/joplin-mcp/joplin_mcp.py`
- **Verification**: `claude mcp list`
---
## Known Issues
### Fixed
**Issue: 500 Internal Server Error on joplin_list_notebooks**
- **Status**: Fixed (pending Claude Code restart)
- **Symptom**: All notebook/folder operations returned 500 error
- **Root Cause**: `note_count` field doesn't exist in Joplin's sqlite schema. The API attempted `SELECT note_count FROM folders` which failed.
- **Solution**: Removed `note_count` from fields parameter in `_get_all_paginated()` call (line 403)
---
## Recent Achievements (Last 2 Weeks)
**Initial MCP Server Implementation** β
- Completed: 2025-11-26
- Full CRUD operations for notes, notebooks, tags
- Search functionality
- Markdown and JSON response formats
**Bug Fix: note_count Field** β
- Completed: 2025-11-26
- Removed invalid field causing sqlite errors
- Updated markdown output formatting
---
## Architecture Decision Records
### ADR-001: Desktop API Only (No Server API)
**Date:** 2025-11-26
**Status:** Accepted
**Context:** Investigated connecting MCP server directly to self-hosted Joplin Server on VPS (notes.rodda.xyz) instead of requiring local Joplin Desktop.
**Decision:** Continue using Joplin Desktop API (localhost:41184) only.
**Consequences:**
- β
Full REST API access (notes, notebooks, tags, search)
- β
Stable, documented API
- β Requires Joplin Desktop running locally
- β Cannot operate headlessly on server
**Alternatives Considered:**
- Joplin Server API (rejected: sync-only, no REST endpoints for note manipulation)
- joppy library server support (rejected: experimental, may break, no encryption support)
- Direct PostgreSQL access (rejected: bypasses app logic, risky)
- Joplin CLI on server (deferred: adds complexity, could revisit if headless access needed)
---
## Next Steps (Priority Order)
1. **Restart Claude Code** to reload fixed MCP server
2. **Add basic test suite** - pytest with mocked API responses
3. **Consider CLAUDE.md** - navigation hub for AI agents
---
**Note**: Archive items older than 2 weeks to keep document focused.