PTPGE MCP Server
MCP serverAI & modelsThe open vocabulary of print for AI agents: terms, product envelopes, validation, fingerprint.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Then ask your AI: use the ptpge search terms tool from PTPGE MCP Server
Details
Available today. Use it as a step in a pipeline you build, or from your connected AI.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.
Install PTPGE MCP Server
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user ptpge-mcp-server 'https://mcp.ptpge.org/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://mcp.ptpge.org/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=ptpge-mcp-server&config=eyJ1cmwiOiJodHRwczovL21jcC5wdHBnZS5vcmcvbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://mcp.ptpge.org/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add ptpge-mcp-server --url 'https://mcp.ptpge.org/mcp'Run it once, then sign in with codex mcp login ptpge-mcp-server if the server asks for an account.
From the project's README
As published by ptpge/ptpge-mcp-server in README.md.
A read-only Model Context Protocol server that exposes the PTPGE specification — the open vocabulary of print — to AI agents.
The vocabulary (terms with permanent URIs, product templates, variables, schemas and registers) is
published under CC BY 4.0 at https://api.ptpge.org/v1/. This server loads it, keeps it in memory,
reloads when the dataset version changes, and offers it to agents as a small set of MCP tools:
search a term, read a term, read a product envelope, validate a configuration, resolve a colour
notation, compute and expand a configuration fingerprint (ptpge-cfs/1).
Live, open, no key: https://mcp.ptpge.org/mcp (Streamable HTTP). open.mcp.ptpge.org is an alias.
Add it to your assistant
- Claude (web or desktop): Settings → Connectors → Add custom connector →
https://mcp.ptpge.org/mcp - ChatGPT: Settings → Connectors → Add (developer mode) → same URL
- Claude Code:
claude mcp add ptpge --transport http https://mcp.ptpge.org/mcp
Then ask, in any language: «What is a roll fold?» or «Fingerprint an A4 tri-fold brochure, 170 g silk, 4/4».
Tools
| Tool | What it does |
|---|---|
ptpge_search_terms | Free-text search over the vocabulary, tokenised and language-independent. Hits carry URI, label, level, group, kind (term · supplier · vendor · schema) and score. Deprecated terms are skipped unless asked for. |
ptpge_get_term | One term in full: definition, relations (broader / narrower / related), mappings, properties, notation. Accepts a full URI or a relative path. |
ptpge_get_version | Dataset version, term counts, licence, scheme URL, server version. |
ptpge_browse | Walk the hierarchy from a node. |
ptpge_get_product_envelope | For a product template: which variables apply, which are required for an identity, which values are allowed. |
ptpge_validate_config | Check a configuration (bindings on vocabulary URIs) against its envelope: membership, cardinality, scope, numeric bands, cross-variable rules. |
ptpge_resolve_color_notation | 4/4, 4/1, 1/0 … → ink counts per face in vocabulary terms. |
ptpge_fingerprint | Canonicalise a validated configuration and compute its ptpge-cfs/1 fingerprint (spec and offer). |
ptpge_expand_fingerprint | A fingerprint back to its configuration, from the register at ptpge.org/f/. |
Responses are plain JSON. The /playground page lets you watch an agent run the loop from a free-text
order to a fingerprint, every tool call in the transcript.
Endpoints
| Path | Purpose |
|---|---|
POST /mcp | MCP over Streamable HTTP (also GET for the event stream, DELETE to end a session) |
GET /health, /healthz | Liveness + dataset version |
GET /playground | The Playground |
GET /sse | Retired — answers 410 with a pointer to /mcp |
Run it yourself
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python -m ptpge_mcp.server # http://0.0.0.0:8000/mcp
Test with the MCP Inspector: npx @modelcontextprotocol/inspector, transport Streamable HTTP, URL
http://localhost:8000/mcp.
pytest -q
Configuration
| Variable | Default | Purpose |
|---|---|---|
PTPGE_API_BASE | https://api.ptpge.org/v1 | Where the vocabulary is fetched from |
PTPGE_REFRESH_SECONDS | 900 | How often to check version.json for a new dataset |
PTPGE_LOG_LEVEL | INFO | Python logging level |
PTPGE_MCP_AUTH_USERS | — | Optional Basic Auth on the server, comma-separated user:pass pairs. Leave unset for an open server. |
PTPGE_MCP_HTPASSWD | — | Optional path to an Apache htpasswd file used instead of the variable above |
PTPGE_MCP_TOKENS / _TOKENS_FILE | — | Optional per-recipient tokens (?t=), same purpose |
The public server at mcp.ptpge.org runs with none of the auth variables set.
Layout
ptpge_mcp/
├── server.py # tools, handlers, Streamable HTTP, Playground route
├── data.py # fetch, cache, index, search
├── config.py # environment-based runtime config
├── cfs_resolution.py # canonicalisation + ptpge-cfs/1
├── fingerprint.py, fingermark.py # hash and mark
├── completeness.py # required variables / unspecified axes
├── colornotation.py # 4/4-style notation → terms
├── semantic.py # embedding search (term_embeddings.npz)
├── registerclient.py # ptpge.org/f/ register client
├── playground.py, learningpage.py, missreport.py
└── _frame.py # ptpge.org site frame (generated; do not edit)
tests/
passenger_wsgi.py # cPanel/Passenger entry point for the hosted instance
.cpanel.yml # deploy script for the hosted instance
CHANGELOG.md # semver; one entry per release
Versioning
Semver for the server; the dataset has its own date version (ptpge_get_version). The fingerprint
algorithm is a separate contract, ptpge-cfs/1, and does not change with server releases.
Licence
Code: Apache License 2.0. Vocabulary and data: CC BY 4.0, held by PTPGE, a non-profit association (being formed). See ptpge.org/governance.
Registry
Listed in the official MCP Registry as org.ptpge/mcp-server (server.json in this repository; published with
mcp-publisher, namespace verified by a DNS record on ptpge.org).
Tools it offers (9)
What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
ptpge_search_termsptpge_get_termptpge_get_versionptpge_browseptpge_get_product_envelopeptpge_validate_configptpge_resolve_color_notationptpge_fingerprintptpge_expand_fingerprint
Signals
- Last commit
- Oct 2026
Advanced
- Delivery
- mcp-server MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
org-ptpge-mcp-server- Source
- github.com/ptpge/ptpge-mcp-server
- Hosted endpoint
https://mcp.ptpge.org/mcp
github.com/ptpge/ptpge-mcp-server
More in AI & models
MCP server · upstash
More in AI & modelsAdButler
MCP server · adbutler
More in AI & modelsatom-mcp-server
MCP server · a7om-ai
More in AI & modelsottasia
MCP server · aiweather-anurag
More in AI & modelsCurrents
MCP server · currents-dev
More in AI & modelsunphurl
MCP server · 123ergo
More in AI & models