Mcp Server

org.ptpgev0.30.1Updated Oct 10, 2026

The open vocabulary of print for AI agents: terms, product envelopes, validation, fingerprint.

VerifiedStreamable HTTPWeb executableDeveloper ToolsKnowledge & Memory

Overview

AI-generated overview

Read-only access to the PTPGE print vocabulary: search terms, read product envelopes, validate configurations, and compute or expand print fingerprints.

What it does
Exposes the PTPGE specification, an open vocabulary of print, as a small set of read-only MCP tools. Agents can search terms, read a term with its relations and notation, browse the hierarchy, read a product envelope, validate a configuration against it, resolve colour notations such as 4/4, and compute or expand a ptpge-cfs/1 fingerprint. Responses are plain JSON.
When to use it
Useful when an assistant needs to interpret or produce print specifications: looking up print terminology, checking whether a configuration is valid for a product template, resolving ink notations, or fingerprinting and expanding a print order. It is a reference and validation service, not a production or ordering system.
Requirements
The public server is a remote Streamable HTTP endpoint and needs no key or account. Running it yourself requires Python 3 and the project dependencies, with optional environment variables for the vocabulary API base, refresh interval, log level, and optional Basic Auth or token settings.
Before you install
The public endpoint is open and read-only, so nothing is written or sent on your behalf. If you self-host, the optional auth variables PTPGE_MCP_AUTH_USERS, PTPGE_MCP_HTPASSWD, PTPGE_MCP_TOKENS and PTPGE_MCP_TOKENS_FILE hold credentials; leave them unset only if the server is meant to be open. Vocabulary data is fetched from the configured PTPGE_API_BASE.

Installation

In SourceWeft

  1. Open Mcp Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "mcp-server": {
      "type": "http",
      "url": "https://mcp.ptpge.org/mcp"
    }
  }
}

README

PTPGE MCP Server

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

ToolWhat it does
ptpge_search_termsFree-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_termOne term in full: definition, relations (broader / narrower / related), mappings, properties, notation. Accepts a full URI or a relative path.
ptpge_get_versionDataset version, term counts, licence, scheme URL, server version.
ptpge_browseWalk the hierarchy from a node.
ptpge_get_product_envelopeFor a product template: which variables apply, which are required for an identity, which values are allowed.
ptpge_validate_configCheck a configuration (bindings on vocabulary URIs) against its envelope: membership, cardinality, scope, numeric bands, cross-variable rules.
ptpge_resolve_color_notation4/4, 4/1, 1/0 … → ink counts per face in vocabulary terms.
ptpge_fingerprintCanonicalise a validated configuration and compute its ptpge-cfs/1 fingerprint (spec and offer).
ptpge_expand_fingerprintA 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

PathPurpose
POST /mcpMCP over Streamable HTTP (also GET for the event stream, DELETE to end a session)
GET /health, /healthzLiveness + dataset version
GET /playgroundThe Playground
GET /sseRetired — answers 410 with a pointer to /mcp

Run it yourself

bash
python3 -m venv venv && source venv/bin/activatepip install -r requirements.txtpython -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.

bash
pytest -q

Configuration

VariableDefaultPurpose
PTPGE_API_BASEhttps://api.ptpge.org/v1Where the vocabulary is fetched from
PTPGE_REFRESH_SECONDS900How often to check version.json for a new dataset
PTPGE_LOG_LEVELINFOPython 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 instanceCHANGELOG.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).

Source: README.md at commit 4f6cbe3

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.30.1LatestOct 10, 2026