Skip to main content
Glama
EienWolf

JSON Schema Validator MCP Server

by EienWolf

JSON Schema Validator MCP Server

A comprehensive JSON Schema validation server implementing the Model Context Protocol (MCP) with support for JSON Schema Draft 2020-12, external references, and real-time streaming validation.

πŸš€ Features

  • JSON Schema Draft 2020-12 Support: Full compliance with the latest JSON Schema specification

  • External Reference Resolution: Automatic resolution of external schema references via HTTP/HTTPS, database, or local files

  • Dual Server Architecture:

    • MCP Server for stdio communication with AI assistants

    • SSE Server for web clients with real-time streaming

  • Schema Management: Complete CRUD operations for schema collections

  • Data Storage Flexibility: PostgreSQL database with local file fallback

  • Schema Generation: Automatic JSON Schema generation from sample JSON data

  • Docker Support: Containerized deployment ready

Related MCP server: BigQuery Analysis MCP Server

πŸ—οΈ Architecture

Core Components

  • MCP Server (mcp_server.py): Primary server for AI assistant integration

  • SSE Server (sse_server.py): HTTP server with Server-Sent Events for web clients

  • Validation Engine (tools/JSONSchemaValidator.py): JSON Schema Draft 2020-12 validator

  • Data Manager (utils/DataManager.py): Multi-source data resolution with fallback strategy

  • Schema Generator (utils/SchemaGenerator.py): Automatic schema generation from JSON data

Data Resolution Strategy

  1. PostgreSQL Database (schemas/data_storage tables)

  2. Local Files (final fallback)

πŸ“¦ Installation

Prerequisites

  • Python 3.8+

  • PostgreSQL (optional, for database storage)

Quick Start

  1. Clone the repository

    git clone https://github.com/EienWolf/jsonshema_mcp.git
    cd jsonschema_mcp
  2. Install dependencies

    pip install -r requirements.txt
  3. Run the MCP server

    python mcp_server.py
  4. Run the SSE server (optional)

    python sse_server.py

πŸ”§ Configuration

Environment Variables

Create a .env file:

# PostgreSQL Configuration
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=jsonschema_mcp
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password

# Schema Management
POSTGRES_AUTO_CREATE_SCHEMA=true   # Auto-create tables if missing
POSTGRES_AUTO_RESET=false          # WARNING: Drops all data!

πŸ› οΈ Available MCP Tools

Validation Tools

  • validate_json_schema: Direct validation with provided schema

  • validate_json_from_collections: Validation using stored schemas

  • get_validation_info: Validator capabilities and information

Schema Management Tools

  • add_update_schema: Add or update schemas in collections

  • delete_schema: Delete schemas from collections

  • get_schema: Retrieve schema content

  • list_schemas: List all available schemas

  • generate_schema: Generate schema from JSON data

🐳 Docker Deployment

Build and Run

# Build image
docker build -t jsonschema-mcp-server:1.0.0 .

# Run container
docker run -i jsonschema-mcp-server:1.0.0

# Run with persistent schema storage
docker run -i -v ./schemas:/app/.schemas jsonschema-mcp-server:1.0.0

Docker Features

  • Multi-stage build optimization

  • Non-root user security

  • Health check monitoring

  • Volume support for data persistence

  • Automatic dependency management

πŸ€– MCP Server Configuration

Claude Desktop Integration

Method 1: Direct Python Execution

Add to your Claude Desktop configuration file:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "jsonschema-validator": {
      "command": "python",
      "args": ["C:\\path\\to\\jsonschema_mcp\\mcp_server.py"],
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432",
        "POSTGRES_DATABASE": "jsonschema_mcp",
        "POSTGRES_USER": "your_username",
        "POSTGRES_PASSWORD": "your_password"
      }
    }
  }
}

Linux/macOS Example:

{
  "mcpServers": {
    "jsonschema-validator": {
      "command": "python3",
      "args": ["/path/to/jsonschema_mcp/mcp_server.py"],
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432",
        "POSTGRES_DATABASE": "jsonschema_mcp",
        "POSTGRES_USER": "your_username",
        "POSTGRES_PASSWORD": "your_password"
      }
    }
  }
}

Method 2: Docker Container

{
  "mcpServers": {
    "jsonschema-validator": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "./schemas:/app/.schemas",
        "-e", "POSTGRES_HOST=host.docker.internal",
        "-e", "POSTGRES_PORT=5432",
        "-e", "POSTGRES_DATABASE=jsonschema_mcp",
        "-e", "POSTGRES_USER=your_username",
        "-e", "POSTGRES_PASSWORD=your_password",
        "jsonschema-mcp-server:1.0.0"
      ]
    }
  }
}

GitHub Copilot Integration

Method 1: Direct Python Execution

Create or update your MCP configuration file:

File: ~/.mcp/config.json (Linux/macOS) or %USERPROFILE%\.mcp\config.json (Windows)

{
  "servers": {
    "jsonschema-validator": {
      "command": "python",
      "args": ["C:\\path\\to\\jsonschema_mcp\\mcp_server.py"],
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432", 
        "POSTGRES_DATABASE": "jsonschema_mcp",
        "POSTGRES_USER": "your_username",
        "POSTGRES_PASSWORD": "your_password"
      }
    }
  }
}

Linux/macOS Example:

{
  "servers": {
    "jsonschema-validator": {
      "command": "python3",
      "args": ["/path/to/jsonschema_mcp/mcp_server.py"],
      "env": {
        "POSTGRES_HOST": "localhost",
        "POSTGRES_PORT": "5432",
        "POSTGRES_DATABASE": "jsonschema_mcp", 
        "POSTGRES_USER": "your_username",
        "POSTGRES_PASSWORD": "your_password"
      }
    }
  }
}

Method 2: Docker Container

{
  "servers": {
    "jsonschema-validator": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "./schemas:/app/.schemas",
        "-e", "POSTGRES_HOST=host.docker.internal",
        "-e", "POSTGRES_PORT=5432",
        "-e", "POSTGRES_DATABASE=jsonschema_mcp",
        "-e", "POSTGRES_USER=your_username", 
        "-e", "POSTGRES_PASSWORD=your_password",
        "jsonschema-mcp-server:1.0.0"
      ]
    }
  }
}

Configuration Notes

  1. Database Configuration:

    • Environment variables are optional

    • Server automatically falls back to local file storage if database is unavailable

    • For file-only mode, omit all POSTGRES_* environment variables

  2. Path Requirements:

    • Use absolute paths for mcp_server.py

    • Ensure Python is in your system PATH

    • For Docker, ensure the image is built: docker build -t jsonschema-mcp-server:1.0.0 .

  3. Permissions:

    • Ensure the server has write permissions to the schemas directory

    • For Docker on Windows, use WSL2 backend for better volume mounting

  4. Testing Configuration:

    # Test direct execution
    python mcp_server.py
    
    # Test Docker execution  
    docker run -i jsonschema-mcp-server:1.0.0
  5. File-Only Configuration (No Database):

    {
      "mcpServers": {
        "jsonschema-validator": {
          "command": "python",
          "args": ["C:\\path\\to\\jsonschema_mcp\\mcp_server.py"]
        }
      }
    }

🌐 Web Client

The repository includes a complete web client (client_example.html) demonstrating:

  • Real-time validation with Server-Sent Events

  • Schema management interface

  • Interactive testing environment

  • Progress tracking and error reporting

πŸ”’ Security Features

  • Input Validation: Schema ID format validation with Linux path requirements

  • Path Security: Prevention of directory traversal attacks

  • Confirmation Requirements: Explicit confirmation for destructive operations

  • Error Handling: Detailed error messages without sensitive information exposure

  • Non-root Execution: Docker containers run as non-privileged user

πŸ“‹ Requirements

  • jsonschema>=4.25.0 - JSON Schema validation

  • mcp>=1.0.0 - Model Context Protocol

  • psycopg2-binary>=2.9.0 - PostgreSQL adapter

  • fastapi>=0.104.0 - SSE server framework

  • uvicorn>=0.24.0 - ASGI server

  • pydantic>=2.5.0 - Data validation

  • ruff>=0.8.0 - Code linting and formatting

πŸ†˜ Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check PostgreSQL is running

    • Verify credentials in .env

    • Server falls back to file storage automatically

  2. Permission Denied

    • Ensure write permissions for .schemas directory

    • Check Docker volume mounting

  3. Schema Not Found

    • Verify schema ID format (must end with .json)

    • Check schema exists with list_schemas tool

πŸ—ΊοΈ Roadmap

See our ROADMAP.md for planned features and future development directions, including DXT package integration, enhanced schema generation, and AI-powered capabilities.

πŸ“„ License

This project is licensed under a Custom Non-Commercial License. See the LICENSE file for details.

πŸ™ Acknowledgments

  • Built on the Model Context Protocol (MCP) specification

  • Uses the jsonschema library for validation

  • Inspired by modern API design patterns

  • Designed for integration with AI assistants

πŸ“ž Support

For issues, questions, or contributions:

  1. Check the troubleshooting section above

  2. Review existing issues and documentation

  3. Create a detailed issue report with:

    • Error messages

    • Steps to reproduce

    • Environment details

    • Expected vs actual behavior


Made with ❀️ for the AI and developer community

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EienWolf/jsonshema_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server