Skip to content

Template Schema

JSON schema definition for MCP server templates.

template.json Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["id", "name", "description", "version"],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]*$",
      "description": "Unique template identifier"
    },
    "name": {
      "type": "string",
      "description": "Human-readable template name"
    },
    "description": {
      "type": "string",
      "description": "Template description"
    },
    "version": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+\\.\\d+$",
      "description": "Semantic version"
    },
    "author": {
      "type": "string",
      "description": "Template author"
    },
    "requires": {
      "type": "array",
      "items": {"type": "string"},
      "description": "Runtime requirements"
    },
    "ports": {
      "type": "array",
      "items": {"type": "integer"},
      "description": "Required ports"
    },
    "environment": {
      "type": "object",
      "patternProperties": {
        "^[A-Z][A-Z0-9_]*$": {"type": "string"}
      },
      "description": "Default environment variables"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": ["read", "write", "tools", "resources", "prompts"]
      },
      "description": "MCP capabilities"
    },
    "tags": {
      "type": "array",
      "items": {"type": "string"},
      "description": "Template tags"
    }
  }
}

Field Descriptions

Required Fields

id: Unique identifier for the template - Must start with lowercase letter - Can contain lowercase letters, numbers, and hyphens - Used in URLs and commands

name: Display name for the template - Human-readable string - Used in listings and UI

description: Brief description of what the template does - Should be 1-2 sentences - Explains the template's purpose

version: Semantic version number - Format: MAJOR.MINOR.PATCH - Updated when template changes

Optional Fields

author: Template creator - Individual or organization name - Used for attribution

requires: Runtime requirements - Array of dependency specifications - Examples: ["python>=3.10", "docker>=20.0"]

ports: Network ports used by the template - Array of port numbers - Used for port mapping in deployments

environment: Default environment variables - Object with variable names and default values - Variable names should be UPPERCASE

capabilities: MCP protocol capabilities - Array of supported MCP capabilities - Helps users understand what the server can do

tags: Classification tags - Array of descriptive tags - Used for filtering and organization

Examples

Minimal Template

{
  "id": "hello",
  "name": "Hello World",
  "description": "Simple greeting server",
  "version": "1.0.0"
}

Full Template

{
  "id": "database-connector",
  "name": "Database Connector MCP",
  "description": "Connect to various databases via MCP protocol",
  "version": "2.1.0",
  "author": "Data Everything",
  "requires": ["python>=3.10", "docker>=20.0"],
  "ports": [5432, 8080],
  "environment": {
    "DB_HOST": "localhost",
    "DB_PORT": "5432",
    "LOG_LEVEL": "info"
  },
  "capabilities": ["read", "write", "tools"],
  "tags": ["database", "sql", "connector"]
}