summaryrefslogtreecommitdiff
path: root/docs/mcp-automatic-backups.md
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-10 19:28:27 +0200
committerPaul Buetow <paul@buetow.org>2026-02-10 19:28:27 +0200
commit5551695f3b0d10c9a22cfacdb10c2cf7bd572421 (patch)
tree282611eacf1fd4c38d54d5cea87decdf2b1cbdb7 /docs/mcp-automatic-backups.md
parentec745129258ae800065e302a2a40b54488cbca08 (diff)
Add MCP server implementation with comprehensive test coverage
Implements a full Model Context Protocol (MCP) server for managing and serving prompts to LLM applications. The server provides CRUD operations for prompts with automatic backups and template rendering support. Key additions: - cmd/hexai-mcp-server: Main MCP server binary entrypoint - internal/hexaimcp: Server orchestrator with configuration and setup - internal/mcp: Core MCP protocol implementation (JSON-RPC 2.0) - internal/promptstore: Prompt storage with JSONL backend and automatic backups - Comprehensive test suites achieving 80%+ coverage for all MCP packages - Magefile targets for building and installing the MCP server - Complete documentation for setup, API, prompts, and backups Test coverage: - internal/hexaimcp: 84.3% - internal/mcp: 80.3% - internal/promptstore: 81.2% - Overall project: 81.5% Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/mcp-automatic-backups.md')
-rw-r--r--docs/mcp-automatic-backups.md198
1 files changed, 198 insertions, 0 deletions
diff --git a/docs/mcp-automatic-backups.md b/docs/mcp-automatic-backups.md
new file mode 100644
index 0000000..ccc0734
--- /dev/null
+++ b/docs/mcp-automatic-backups.md
@@ -0,0 +1,198 @@
+# MCP Server Automatic Backups
+
+## ✅ Fully Automatic - No Manual Tools Required!
+
+The hexai-mcp-server automatically creates backups **on every write operation**. You don't need any CLI tools - everything happens automatically when you use the MCP protocol.
+
+## How It Works
+
+### Architecture
+
+```
+MCP Client (Claude Code/Cursor)
+ ↓
+MCP Protocol (prompts/create, update, delete)
+ ↓
+MCP Server Handler
+ ↓
+PromptStore.Create/Update/Delete()
+ ↓
+[AUTOMATIC BACKUP] ← Happens here automatically!
+ ↓
+Write to user.jsonl
+```
+
+### Automatic Backup Triggers
+
+Every operation through the MCP server automatically creates a backup:
+
+1. **`prompts/create`**
+ ```
+ Client → MCP Server → Store.Create()
+ ↓
+ [AUTO BACKUP]
+ ↓
+ Save new prompt
+ ```
+
+2. **`prompts/update`**
+ ```
+ Client → MCP Server → Store.Update()
+ ↓
+ [AUTO BACKUP]
+ ↓
+ Save changes
+ ```
+
+3. **`prompts/delete`**
+ ```
+ Client → MCP Server → Store.Delete()
+ ↓
+ [AUTO BACKUP]
+ ↓
+ Remove prompt
+ ```
+
+## Backup Details
+
+### Storage Location
+```
+~/.local/share/hexai/prompts/backups/
+├── user.jsonl.20260210-190358
+├── user.jsonl.20260210-192145
+├── user.jsonl.20260210-193422
+└── ... (up to 10 backups)
+```
+
+### Backup Format
+- **Filename**: `user.jsonl.YYYYMMDD-HHMMSS`
+- **Timestamp**: When backup was created
+- **Content**: Complete copy of user.jsonl before change
+
+### Retention Policy
+- Keeps last **10 backups** automatically
+- Oldest backups auto-deleted when limit exceeded
+- No manual cleanup needed
+
+## Usage (MCP Clients Only)
+
+### From Claude Code CLI
+
+```javascript
+// Claude Code will automatically use these MCP methods:
+
+// Create a prompt
+{
+ "method": "prompts/create",
+ "params": {
+ "name": "my_prompt",
+ "title": "My Prompt",
+ "messages": [...]
+ }
+}
+// ✅ Backup created automatically before save!
+
+// Update a prompt
+{
+ "method": "prompts/update",
+ "params": {
+ "name": "my_prompt",
+ "title": "Updated Title"
+ }
+}
+// ✅ Backup created automatically before update!
+
+// Delete a prompt
+{
+ "method": "prompts/delete",
+ "params": {
+ "name": "old_prompt"
+ }
+}
+// ✅ Backup created automatically before delete!
+```
+
+### From Cursor
+
+Same automatic backups happen when using Cursor's MCP integration!
+
+## Manual Recovery (If Needed)
+
+In rare cases where you need to manually restore:
+
+### List Backups
+```bash
+ls -lht ~/.local/share/hexai/prompts/backups/
+```
+
+Output:
+```
+-rw-r--r-- 1 paul paul 1.2K Feb 10 19:34 user.jsonl.20260210-193422
+-rw-r--r-- 1 paul paul 1.1K Feb 10 19:21 user.jsonl.20260210-192145
+-rw-r--r-- 1 paul paul 1.0K Feb 10 19:03 user.jsonl.20260210-190358
+```
+
+### Restore from Backup
+```bash
+# Copy backup to restore
+cp ~/.local/share/hexai/prompts/backups/user.jsonl.20260210-193422 \
+ ~/.local/share/hexai/prompts/user.jsonl
+
+# Restart MCP client to reload
+```
+
+## Test Results
+
+The automatic backup system is fully tested:
+
+```
+✓ TestAutomaticBackupOnCreate - Backup created on prompts/create
+✓ TestAutomaticBackupOnUpdate - Backup created on prompts/update
+✓ TestAutomaticBackupOnDelete - Backup created on prompts/delete
+```
+
+All tests pass with 71.7% coverage on the promptstore layer.
+
+## Configuration
+
+No configuration needed! Just set up your MCP client:
+
+**Claude Code** (`~/.config/claude/mcp.json`):
+```json
+{
+ "mcpServers": {
+ "hexai-prompts": {
+ "command": "/home/paul/go/bin/hexai-mcp-server",
+ "args": [],
+ "env": {}
+ }
+ }
+}
+```
+
+**Cursor** (`~/.cursor/mcp.json`):
+```json
+{
+ "mcpServers": {
+ "hexai": {
+ "command": "/home/paul/go/bin/hexai-mcp-server",
+ "args": [],
+ "env": {}
+ }
+ }
+}
+```
+
+Then all backups happen automatically!
+
+## Summary
+
+✅ **Automatic** - Backups created on every MCP operation
+✅ **Transparent** - Happens inside the store layer
+✅ **No tools needed** - Everything through MCP protocol
+✅ **Retention** - Keeps last 10 backups automatically
+✅ **Timestamped** - Easy to identify when backup was made
+✅ **Zero config** - Works out of the box
+✅ **Tested** - Comprehensive unit tests
+
+**You just use the MCP server through your client (Claude Code/Cursor) and backups happen automatically!** 🚀