feat: implement MCP server plugin v1.0.0

Add HTTP-based MCP server exposing 20 Joplin tools (notes, notebooks,
tags, search) via StreamableHTTPServerTransport. Includes configurable
host/port settings, CORS support, and session management.

- src/index.ts: Plugin registration and settings UI
- src/server.ts: MCP HTTP server with StreamableHTTP transport
- src/tools.ts: 20 MCP tool definitions for Joplin operations
- LICENSE: MIT license
- CHANGELOG.md: v1.0.0 changelog entry
- README.md: Comprehensive documentation
This commit is contained in:
Jan-Peter von Hunnius 2026-05-31 12:57:22 +02:00
parent de18d28146
commit 65ec128efe
12 changed files with 1358 additions and 17 deletions

52
CHANGELOG.md Normal file
View file

@ -0,0 +1,52 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2026-05-31
### Added
- MCP server using Streamable HTTP transport, listening on configurable host and port
- Session management with UUID-based session IDs and 30-minute TTL eviction
- CORS support for localhost, 127.0.0.1, and vscode-webview:// origins
#### Notes
- `create_note` – Create notes with optional tags, parent notebook, and todo fields
- `get_note` – Retrieve full note content by ID
- `update_note` – Partially update note fields
- `delete_note` – Soft-delete a note (moves to trash)
- `list_notes` – Paginated note listing with sort and filter options
- `get_notes_by_ids` – Batch retrieve multiple notes by their IDs
#### Notebooks
- `list_notebooks` – Tree-structured notebook listing
- `get_notebook` – Get notebook details with sub-notebooks and notes
- `create_notebook` – Create notebooks, optionally nested under a parent
- `update_notebook` – Rename or move notebooks
- `delete_notebook` – Delete notebook (moves notes to trash)
#### Tags
- `list_tags` – List all tags
- `create_tag` – Create new tags (with deduplication)
- `update_tag` – Rename existing tags
- `delete_tag` – Permanently delete tags
- `get_note_tags` – Get tags assigned to a specific note
- `add_tag_to_note` – Add tag to note (auto-creates tag if needed)
- `remove_tag_from_note` – Remove a tag from a note
#### Search
- `search_notes` – Full-text search with Joplin query operators
- `search_notebooks` – Search notebooks by title
- `search_tags` – Search tags by title
- `search_all` – Cross-type search across notes, notebooks, and tags
#### Utility
- `ping` – Health check endpoint
### Configuration
- Configurable TCP port (default: 22123, range: 1024–65535)
- Configurable bind host (default: 127.0.0.1)
- Settings accessible from Joplin's preferences under "MCP Server"