Skip to main content
Glama
slzatz

Vimango MCP Server

by slzatz
README.md
# Vimango MCP Server

A Model Context Protocol (MCP) server that enables Claude Desktop to write markdown notes directly to the local vimango SQLite databases.

## Overview

This MCP server allows Claude to create research notes and other content directly in your vimango note-taking application during conversations. It handles the database insertion logic, allowing seamless integration between Claude Desktop's research capabilities and your local note database.

## Architecture

### Database Structure

Vimango uses two separate SQLite databases:
- **vimango.db** - Main database containing tasks/notes, contexts, folders, and keywords
- **fts5_vimango.db** - Full-text search database (FTS5) for fast searching

### Note Creation Workflow

1. MCP server creates new entry in `task` table without setting `tid` (left NULL until sync assigns it)
2. Entry includes: title, note body, folder_tid, context_tid, timestamps
3. **FTS database is NOT touched** - it will be updated during sync
4. When you sync vimango with the remote server:
   - Server assigns real `tid` to entry
   - Sync process updates local FTS database

This design keeps the MCP server simple and leverages vimango's existing sync machinery.

## Installation

### Prerequisites

- Python 3.11 or higher
- [UV](https://github.com/astral-sh/uv) package manager
- Vimango application with configured databases

### Setup

```bash
# Clone or navigate to the repository
cd /home/slzatz/vimango_mcp

# Create virtual environment and install dependencies
uv sync

# Configure database paths
cp config.json.example config.json
# Edit config.json to point to your vimango databases
```

## Configuration

Create a `config.json` file in the project root:

```json
{
  "vimango": {
    "main_db": "/path/to/vimango.db",
    "fts_db": "/path/to/fts5_vimango.db"
  }
}
```

## Usage

### Running the MCP Server

```bash
uv run vimango-mcp
```

### Claude Desktop Configuration

Add to your Claude Desktop MCP settings:

```json
{
  "mcpServers": {
    "vimango": {
      "command": "/path/to/vimango_mcp/.venv/bin/vimango-mcp"
    }
  }
}
```

### Available MCP Tools

- **create_note** - Create a new note with title and markdown body
- **list_contexts** - List available contexts for note categorization
- **list_folders** - List available folders for note organization

## Development

### Project Structure

```
vimango_mcp/
├── src/
│   └── vimango_mcp/
│       ├── __init__.py     # Package initialization
│       ├── server.py       # MCP server implementation
│       └── db.py          # Database operations
├── tests/                  # Test suite
├── pyproject.toml         # UV project configuration
└── README.md
```

### Running Tests

```bash
uv run pytest
```

## Notes

- The MCP server creates notes with `tid` left NULL so the server can assign IDs during sync
- FTS synchronization happens automatically during vimango's normal sync process
- Concurrent access is handled by SQLite's locking mechanisms
- Research notes are typically created in the "research" folder

## License

MIT