Skip to main content
Glama
johnfire

theo-van-gogh-mcp

by johnfire
README.md
# theo-van-gogh-mcp

MCP server that exposes the [theo-van-gogh](https://github.com/johnfire/theo-van-gogh) art management system to Claude (or any MCP-compatible AI).

## What it does

Lets an AI assistant manage your art catalogue — find paintings, post to social media, upload to gallery sites, schedule posts, and update metadata — by calling tools over the Model Context Protocol.

## Setup

### 1. Install `mcp` into the main project's virtualenv

The MCP server runs inside theo-van-gogh's existing virtualenv so it has access to all dependencies.

```bash
cd ~/programming/theo-van-gogh
source venv/bin/activate
pip install "mcp[cli]"
```

### 2. Configure Claude Desktop

Merge the following into `~/.config/claude/claude_desktop_config.json` (Linux) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):

```json
{
  "mcpServers": {
    "theo-van-gogh": {
      "command": "/home/christopher/programming/theo-van-gogh/venv/bin/python",
      "args": ["/home/christopher/programming/theo-van-gogh-mcp/server.py"],
      "env": {
        "THEO_VAN_GOGH_PATH": "/home/christopher/programming/theo-van-gogh"
      }
    }
  }
}
```

See `claude_desktop_config.example.json` for a copy-pasteable example.

### 3. Restart Claude Desktop

The server starts automatically when Claude Desktop launches.

## Available tools

| Tool | Description |
|---|---|
| `get_painting` | Full metadata for one painting |
| `find_painting` | Fuzzy search by name |
| `list_platforms` | All platforms with status |
| `check_login_status` | Browser session health |
| `verify_config` | Check paths and API keys |
| `generate_skeleton_metadata` | Stub metadata for new paintings |
| `update_painting_metadata` | Edit title, description, price, etc. |
| `sync_collection_folders` | Create missing collection dirs |
| `sync_instagram_folders` | Mirror folder structure |
| `post_to_social` | Post a painting now |
| `schedule_post` | Schedule a future post |
| `run_scheduled_posts` | Execute due scheduled posts |
| `upload_to_faso` | Browser-upload a painting to FASO |
| `set_dimension_unit` | "cm" or "in" |
| `add_list_item` | Add to substrates/mediums/etc. |

## Available resources

| URI | Content |
|---|---|
| `tvg://capabilities` | Plain-English guide to all tools (AI reads this first) |
| `tvg://paintings` | All paintings with upload/post status |
| `tvg://pending` | Paintings needing uploads or posts, by platform |
| `tvg://schedule` | Upcoming and recent scheduled posts |
| `tvg://settings` | Config, paths, credential status |

## What stays manual

- **First browser login** for FASO and Cara — use admin option 17 in the main CLI
- **Processing new paintings** (AI title generation, entering dimensions) — use `python main.py process`

## Support

If you find this useful, a small donation helps keep projects like this going:
[Donate via PayPal](https://paypal.me/christopherrehm001)