Skip to content
UPG is in early alpha. The specification is still evolving and may change between versions.

Back to setup

Advanced / self-hosted

Run your own MCP server

Two servers. One graph. Local for offline, single-file use. Cloud for Postgres-backed, multi-product collaboration. Both open source. Both free.

local@unified-product-graph/mcp-server

A single .upg file on your machine.

$npx -y @unified-product-graph/mcp-server@latest
Storage
.upg file (JSON), portable and git-friendly
Best for
Solo, offline, version-controlled work
cloud@unified-product-graph/cloud-server

Postgres-backed, built for teams.

$docker compose up -d
Setup
Docker · self-hosted, open source
Storage
Postgres (multi-product, full-text search)
Best for
Teams, collaboration, webhooks

Manual config

Add to your AI tool directly

If you prefer to edit .mcp.json by hand instead of running upg mcp setup, paste this into your project config.

.mcp.json

{
  "mcpServers": {
    "unified-product-graph": {
      "command": "npx",
      "args": ["-y", "@unified-product-graph/mcp-server", "--file", "./my-product.upg"]
    }
  }
}

./my-product.upg is your graph file. Omit --file and the server finds a .upg in your workspace, or creates product.upg. Launched over stdio by your AI tool. See the CLI to run it by hand.

Local vs Cloud

Same protocol, different storage

Both servers share most tool signatures. Start local; move to cloud when you need teams.

Local
Cloud
Storage
.upg file (JSON)
Postgres
Products
One per file
Unlimited
Search
In-memory
Postgres full-text
Collaboration
Via Git
Roles · comments · audit log
Webhooks
Git hooks
Event-driven HTTP
Cost
Free · self-hosted
Free · self-hosted

The mental model

UPG works like Git

Both servers cost nothing to run. The local server reads a file on your disk; the cloud server runs on your own Postgres. Open spec, no lock-in either way.

Git

Local version control

Runs on · Your machine

UPG Local

Local graph queries

Runs on · Your machine

UPG Cloud

Multi-product graph DB

Runs on · Your infra (Docker)

Back to CLI setup →