Skip to main content
Glama

voog-mcp

PyPI tests license: MIT python: 3.10 | 3.11 | 3.12

CLI and MCP server for Voog CMS — manage Liquid templates, pages, products, ecommerce settings, and redirects from your terminal or directly from Claude / any MCP client.

What is Voog?

Voog is a multilingual website builder and CMS with built-in ecommerce, used for content sites and small online stores. This package wraps its admin API so you can edit templates, pages, products, and redirects from your shell or an LLM agent.

Install

From PyPI:

pip install voog-mcp
# or, no install: uvx voog-mcp --help

Or directly from GitHub (latest unreleased main):

uvx --from git+https://github.com/runnel/voog-mcp.git voog --help

For development:

git clone https://github.com/runnel/voog-mcp
cd voog-mcp
python3.10 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Configure

Run voog config init to interactively create the global config:

voog config init

This creates ~/.config/voog/voog.json with your tokens inline:

{
  "sites": {
    "mysite":   {"host": "mysite.com",   "api_key": "vk_..."},
    "client_a": {"host": "clienta.com",  "api_key": "vk_..."}
  },
  "default_site": "mysite"
}

Get a token from your Voog admin: Admin → API.

Shared / CI configs

If voog.json is checked into version control or shared across machines, keep the token out of the file by referencing an env var instead:

{
  "sites": {
    "client_a": {"host": "clienta.com", "api_key_env": "CLIENT_A_KEY"}
  }
}

Then put the token in ~/.config/voog/.env:

CLIENT_A_KEY=vk_...

Both forms can coexist per-site. When both api_key and api_key_env are set, the env-var wins if it's defined — so an inline value acts as a default that the deployment overrides.

Per-repo site selection

In a repo dedicated to one Voog site, drop a voog.json at the repo root to pin the site:

{"default_site": "mysite"}

The cwd-level voog.json deep-merges over the home config, with cwd winning per-key. Inside sites, the merge is per-site name — a cwd entry replaces the whole site definition (host + token), it does not merge individual fields. You can also redefine entire sites here (handy for client repos that should bring their own host/token without touching the home config):

{
  "sites": {
    "client_x": {"host": "clientx.com", "api_key": "vk_..."}
  },
  "default_site": "client_x"
}

Now voog pull / voog push from that directory always target the right site, even if the home default differs.

Note: voog-site.json from earlier versions still works but emits a DeprecationWarning. Replace it with voog.json containing {"default_site": "<name>"} for the same effect.

Use the CLI

voog --help                      # all commands
voog config list-sites           # show configured sites
voog --site mysite products      # list products on mysite
voog pull                        # download templates (uses cwd-level voog.json)
voog push layouts/Front\ page.tpl
voog redirects
voog config check                # verify all configured tokens
voog site-snapshot backup/       # full-site snapshot for diff/audit

Use as MCP server

Add to your Claude Code config (or any MCP client). The simplest setup uses the published PyPI package:

{
  "mcpServers": {
    "voog": {
      "command": "uvx",
      "args": ["voog-mcp"]
    }
  }
}

If you'd rather track unreleased main (e.g. for a fix that hasn't shipped yet), point uvx at the GitHub repo instead:

{
  "mcpServers": {
    "voog": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/runnel/voog-mcp.git", "voog-mcp"]
    }
  }
}

Every tool requires a site parameter. Start with voog_list_sites to discover what's configured:

voog_list_sites()
→ [{"name": "mysite", "host": "mysite.com"}, ...]

page_get(site="mysite", page_id=42)
→ {...}

Tools

Full endpoint coverage reference: docs/voog-mcp-endpoint-coverage.md

Group

Tools

Sites

voog_list_sites

Pages

pages_list, page_get, page_create, page_update, page_set_hidden, page_set_layout, page_set_data, page_delete_data, page_duplicate, page_delete

Articles

articles_list, article_get, article_create, article_update, article_publish, article_set_data, article_delete_data, article_delete

Layouts

layouts_pull, layouts_push, layout_create, layout_update, layout_rename, layout_delete, layout_asset_create, layout_asset_update, layout_asset_delete, asset_replace

Texts / contents

text_get, text_update, page_add_content, content_partial_update

Elements

elements_list, element_get, element_definitions_list, element_create, element_update, element_delete

Products

products_list, product_get, product_create, product_update, product_set_images

Ecommerce

ecommerce_settings_get, ecommerce_settings_update

Multilingual

languages_list, language_create, language_delete, nodes_list, node_get, node_update, node_move, node_relocate

Redirects

redirects_list, redirect_add, redirect_update, redirect_delete

Site

site_get, site_update, site_set_data, site_delete_data

Webhooks

webhooks_list, webhook_create, webhook_update, webhook_delete

Snapshot

pages_snapshot, site_snapshot

Generic passthrough

voog_admin_api_call, voog_ecommerce_api_call

What's NOT supported

voog-mcp covers the surface area needed to manage content and a small ecommerce catalog. The following Voog API areas are intentionally out of scope for now — drop down to the generic voog_admin_api_call / voog_ecommerce_api_call passthrough tools when you need them:

  • Order management, cart, and discount data

  • Form definitions and form responses

  • People / site_user admin

  • Comments and visitor data

  • Site favicons and bulk file imports — product image galleries are first-class via product_set_images, but other multipart uploads still go via passthrough

  • Bulk product update / delete — bulk page show/hide is first-class via page_set_hidden(ids=[...]); product batch ops aren't covered yet

  • Single-product deletion — product_delete is not yet wrapped (a v1.4 candidate); use passthrough in the meantime

  • Site creation (voog-mcp targets existing sites)

If you need any of these, open an issue — or a PR.

License

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
6hResponse time
1dRelease cycle
10Releases (12mo)
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/runnel/voog-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server