Live

PVE Platform MCP Server

Connect your AI development tools to the PVE Platform via the Model Context Protocol (Streamable HTTP transport).

Transport URL
API Key required for authenticated and write-enabled tools. Public discovery, documentation, permissions-reference, and calendar-reference tools work without authentication. Tenant-scoped reference-data tools like tags, categories, and type definitions also work without a key when you provide tenantId. The default read-only app/API-key template covers resources, spaces, tags, categories, and type definitions, including user-profile schema discovery for app-specific preferences. Use MCP to discover the available user type definitions, then use the secure /api/v1/secure/auth/me REST routes for actual current-user profile reads, updates, and resets. Get your API key from the PVE Platform admin panel under Settings → API Keys — use the MCP_DEVELOPER or FULL_ACCESS template plus mcp_write_enabled=true when you need write access.
Catalog presence is not the same as permission success. The setup page lists the tools the server exposes. Some tools need a privileged API key, but they are still the correct tools to call. Agents should send the request and use the runtime result to distinguish success, access denied, missing authentication, or a disconnected MCP bridge instead of assuming the capability is missing.
Keep MCP keys in trusted app layers. Put the tenant API key in a backend, proxy, desktop client, or admin-only environment. Public browser and mobile apps should call your own backend instead of embedding a tenant MCP key directly. If an app only needs public reference-data bootstrap, search, or selection flows, call the public MCP tools with an explicit tenantId and no key.
Use /mcp in MCP client configs. The /mcp/info endpoint is a discovery document for browsers and diagnostics, not the Streamable HTTP transport endpoint used by MCP clients.
Built-in MCP instructions and prompts are available. Every MCP session now advertises core integration guidance, and reusable prompt templates are published for app-auth and schema-version workflows. Use Supabase Auth for end-user login and registration, use /api/v1/public/auth/register-user instead of /api/v1/public/auth/register for user signup, use forgot-password and reset-password for recovery when the user is signed out, use /api/v1/secure/auth/me/change-password for logged-in password changes, use providers plus oauth/initiate plus oauth/exchange for social login, keep tenantId in public contracts, and use pve_get_schema_versions for client schema drift detection.
MCP Endpoints
POST GET DELETE
Primary MCP transport endpoint
This is the endpoint every MCP client must use in its config.
Function: handles session initialization, tool discovery, tool execution, SSE notifications, and session teardown over Streamable HTTP.
GET
Discovery and diagnostics endpoint
Useful for inspecting the server in a browser, curl, or monitoring checks.
Function: returns protocol metadata, transport type, server name, and the public versus authenticated tool inventory.
GET
Interactive setup page
Designed for human setup workflows across Cursor, VS Code, Windsurf, Claude Desktop, Zed, and generic MCP clients.
Function: generates ready-to-paste client configs, deeplinks, and endpoint guidance without sending your API key back to the server.
Your API Key
Paste your API key above — configs update automatically. The key is never sent to any server on this page.
Setup for your environment
Cursor — .cursor/mcp.json ~/.cursor/mcp.json  or  .cursor/mcp.json

          
Manual Steps
1
Click Add to Cursor above — or open Cursor → Settings → MCP
2
Paste the config into .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)
3
Reload Cursor. The pve-platform server appears under Available Tools in Agent mode.
VS Code — .vscode/mcp.json .vscode/mcp.json  or  User Profile mcp.json

          
Manual Steps
1
Open VS Code and press ⇧⌘P → run MCP: Add Server
2
Choose HTTP (streamable) and paste the transport URL
3
Or paste the config into .vscode/mcp.json in your project root
4
GitHub Copilot Chat will discover and expose pve-platform tools
Windsurf — mcp_config.json ~/.codeium/windsurf/mcp_config.json

          
Manual Steps
1
Open Windsurf → Cascade → Configure MCP
2
Paste the config into the file at ~/.codeium/windsurf/mcp_config.json
3
Restart Windsurf or reload MCP servers in Cascade settings
Claude Desktop — claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

          
Manual Steps
1
Open Claude Desktop → Claude menu → Settings → Developer → Edit Config
2
Paste the config (merge with existing mcpServers if present)
3
Fully quit and restart Claude Desktop to load the new server
Zed — settings.json ~/.config/zed/settings.json

          
Manual Steps
1
Open Zed and press ⌘, to open Settings
2
Add the context_servers block from the config above
3
Save. Zed reloads MCP context servers automatically.
Antigravity — mcp.json .antigravity/mcp.json or global config

          
Generic MCP Client — HTTP (Streamable)

          
Connect any MCP-compatible client using Streamable HTTP transport.
Endpoint:
Auth: pass your API key as X-API-Key: <key> header (or Authorization: Bearer <key>). Default read-only keys can read resources, spaces, tags, categories, and type definitions; writes still require mcp_write_enabled=true. Write-capable tools remain visible in the catalog even when the current key cannot execute them.
Available Tools
pve_get_api_overview
High-level API summary and statistics
Public
pve_list_endpoints
Browse all REST endpoints with filters
Public
pve_get_endpoint
Details for a specific endpoint
Public
pve_get_permissions_reference
Developer reference for space/resource roles, delegation, invitations, approvals, and effective-access checks
Public
pve_get_calendar_reference
Developer reference for the shareable calendar domain, route families, schemas, admin flows, and MCP usage
Public
pve_get_calendar_workflow
Concrete workflow steps for creating calendars, recurrence, reminders, and admin share operations
Public
pve_list_schema_entities
All available schema entity types
Public
pve_get_schema
JSON Schema for a specific entity
Public
pve_get_typescript_types
TypeScript type definitions for an entity
Public
pve_get_zod_schemas
Zod validation schemas for an entity
Public
pve_get_schema_versions
Schema manifest version hashes for drift detection
Public
pve_list_documents
List MCP-published developer documents and implementation guides
Public
pve_get_document
Get a document or section with current implementation examples
Public
pve_search_documents
Search documents for space, resource, delegation, or invitation guidance
Public
pve_tags_list
List tags for a tenant (tenantId if unauthenticated)
Public
pve_tags_get
Get a single tag by id (tenantId if unauthenticated)
Public
pve_categories_list
List categories (tenantId if unauthenticated)
Public
pve_categories_get
Get a single category by id (tenantId if unauthenticated)
Public
pve_type_definitions_list
List type definitions (tenantId if unauthenticated)
Public
pve_type_definitions_get
Get one type definition by id (tenantId if unauthenticated)
Public
pve_get_tenant
Get details for a specific tenant
API Key
pve_list_api_keys
List API keys for your tenant
API Key
pve_create_api_key
Create a new API key for the authenticated tenant, including optional mcp_write_enabled
API Key
pve_revoke_api_key
Permanently revoke an API key
API Key
pve_query_permissions_roles
Live tenant, space, or resource role query including invitations, approvals, and delegation requests
API Key
pve_geo_search
Resolve tenant-formatted location suggestions and optionally inspect the effective display config before applying geo filters or distance sorting. Use this only for address lookup and coordinate resolution. Do not use it to list resources. Once coordinates are known, use pve_resources_nearby for radius, proximity, near-me, GPS, GIS, geo, or geolocation-driven resource discovery.
API Key
pve_contacts_list
Read and search contacts for your tenant
API Key
pve_contacts_get
Get a single contact by id
API Key
pve_contacts_create
Create a new contact
API Key
pve_contacts_update
Update contact fields
API Key
pve_contacts_delete
Delete a contact by id
API Key
pve_spaces_list
List spaces visible to the authenticated tenant actor with the latest endpoint filters: type, type definition, taxonomy filters, date ranges, localization, pagination, sorting, distance sorting, and geo-radius filtering. sortBy="distance" requires referenceLatitude/referenceLongitude; radiusMeters also requires both reference coordinates.
API Key
pve_spaces_get
Get one visible space by id
API Key
pve_spaces_create
Create a new space, including typed settings and homeLocation
API Key
pve_spaces_update
Update a space, including delegation-ready metadata and homeLocation
API Key
pve_spaces_delete
Delete a space by id for the authenticated tenant
API Key
pve_resources_list
Generic resource browsing and filtering tool for the authenticated tenant actor. Use this when the primary task is to list, browse, paginate, or refine a known resource set by status, type definition, spaces, taxonomy, text search, date ranges, or localization. This tool does not support geo-distance ordering, radius filters, reference coordinates, or distance results. If the user intent is radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven discovery, use pve_resources_nearby instead.
API Key
pve_resources_nearby
Primary MCP target for proximity-first resource discovery. Use this whenever distance from a reference point determines the result set or ranking: radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven queries. Calls GET /api/v1/secure/resources/nearby with PostGIS-backed distance ordering, taxonomy filters, manageable filtering, and optional media-id expansion. referenceLatitude/referenceLongitude are required; radiusMeters is optional. Use pve_resources_list only when the task is generic browsing/filtering and geo is secondary.
API Key
pve_resources_get
Get one visible resource by id
API Key
pve_resources_create
Create a new resource, including typed settings and currentLocation
API Key
pve_resources_update
Update a resource, including currentLocation and invitation-ready state
API Key
pve_resources_delete
Delete a resource by id
API Key
pve_entity_media_list
List linked media for a space or resource
API Key
pve_entity_media_link
Link an existing media file to a space or resource
API Key
pve_entity_media_unlink
Remove an existing media link from a space or resource
API Key
pve_entity_media_set_main
Set the main image for a space or resource media gallery
API Key
pve_entity_media_reorder
Reorder a space or resource media gallery
API Key
pve_entity_contacts_list
List contact assignments for a user, space, or resource
API Key
pve_entity_contacts_assign
Assign a contact to user, space, or resource
API Key
pve_entity_contacts_unassign
Remove contact assignment from an entity
API Key
pve_qr_codes_list
Read and search QR codes for your tenant
API Key
pve_qr_codes_get
Get a QR code by uuid
API Key
pve_qr_codes_create
Create a new QR code
API Key
pve_qr_codes_update
Update QR code fields
API Key
pve_qr_codes_delete
Delete a QR code by uuid
API Key
pve_qr_assignments_list
List QR assignments for a QR code, optionally filtered by linked_type
API Key
pve_qr_assignments_assign
Assign QR code to space/resource
API Key
pve_qr_assignments_unassign
Unassign QR code from space/resource
API Key
pve_tags_create
Create curated/persistent tag
API Key
pve_tags_update
Update tag translations or persistent flag
API Key
pve_tags_delete
Delete tag by id
API Key
pve_categories_create
Create a category for the authenticated tenant
API Key
pve_categories_update
Update category fields for the authenticated tenant
API Key
pve_categories_delete
Delete a category with optional replacement_category_id relink target
API Key
pve_type_definitions_create
Create type definition
API Key
pve_type_definitions_update
Update type definition fields
API Key
pve_type_definitions_delete
Delete type definition by id
API Key
Usage Examples
Discover Space and Resource Permission Flows
Call pve_get_permissions_reference with:
{
  "subject": "resource"
}

Then call pve_get_document with:
{
  "documentId": "space-resource-permissions-delegation-invitations-reference"
}
Use this when you need the current role model, effective-access rules, delegation flow, invitations, approvals, and admin GUI implementation references.
Inspect Live Roles for a Tenant Actor
Call pve_query_permissions_roles with:
{
  "subject": "space",
  "spaceId": "YOUR_SPACE_ID"
}
Use this to inspect live tenant, space, or resource memberships plus pending invitations, delegation requests, and approval-aware role state.
Build a Resource Form Against Current Schemas
Call pve_get_schema with:
{
  "entityType": "resource"
}

Then call pve_get_typescript_types with:
{
  "entityType": "resource"
}
Use this pair when generating forms, service wrappers, or validation logic that must stay aligned with the published resource contract.
Find the Right Implementation Guide
Call pve_search_documents with:
{
  "query": "resource members move requests effective access"
}
Use document search first when you need examples for admin GUI dialogs, move requests, media linking, or current backend route patterns.
Search Tenant-Formatted Locations
Call pve_geo_search with:
{
  "query": "Bahnhofstrasse 1 Zurich",
  "locale": "de-CH",
  "country": "CH",
  "limit": "5",
  "include_display_config": "true"
}
Use this for address lookup, autocomplete, reverse-lookup support, and coordinate resolution only. Do not use it to list resources. If the intent is radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven resource discovery, switch to the dedicated nearby-resource tool once you have coordinates.
Search Nearby Resources With The Optimized GIS Tool
Call pve_resources_nearby with:
{
  filters_json: search=Room; referenceLatitude=47.3769; referenceLongitude=8.5417; radiusMeters=5000; includeMediaIds=true; limit=10
}
This is the primary target when an agent or user asks for radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven resource search. Use pve_geo_search first only if you still need to resolve the coordinates. The dedicated nearby tool always returns distance-ordered results and can optionally include linked media ids. Use pve_resources_list only for generic browsing, pagination, and non-geo filtering.
Plan A Calendar Integration
Call pve_get_calendar_reference with:
{}

Then call pve_get_calendar_workflow with:
{
  "workflow": "schedule-recurring-entry"
}
Use this to understand the delivered calendar route families, the key request and response contracts, and the recommended sequence for recurring entries, reminders, and tenant-admin calendar operations.
Built-in Prompts
pve_app_integration_system_prompt
Reusable prompt template for correct end-user login, registration, password recovery and change-password flows, tenantId usage, public-read limits, and safe client integration boundaries.
Prompt
pve_client_schema_version_guard_prompt
Reusable prompt template for schema version checks, contract drift detection, and automated client update workflows.
Prompt
Copied!