Jsonschema Validator Mcp について
Jsonschema Validator Mcpは、開発者やAIアシスタント向けのJSON Schema検証・管理サーバーです。Draft 2020-12や外部参照、ストリーミング検証に対応し、JSONサンプルからのスキーマ生成とPostgreSQLまたはローカルファイルでの保存も行えます。
主な機能
- 01JSON Schema Draft 2020-12の検証
- 02HTTP・データベース・ローカル参照の解決
- 03スキーマコレクションの管理
- 04JSONデータからのスキーマ生成
- 05SSEによるストリーミング検証
- 06PostgreSQLまたはローカルファイル保存
活用シーン
- 01スキーマに対するJSONデータの検証
- 02保存済みスキーマでのデータ検証
- 03JSONサンプルからのスキーマ生成
- 04Webクライアントでの検証結果のリアルタイム確認
MCP 対応
MCPサーバーは、JSON検証、スキーマの取得・管理、生成のツールをAIクライアントに公開します。別のSSEサーバーはWebクライアント向けのリアルタイムストリーミング検証に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
JSON Schema Validator MCP Server
JSON Schema Draft 2020-12、外部参照、リアルタイムのストリーミング検証に対応した、Model Context Protocol(MCP)を実装する包括的な JSON Schema 検証サーバーです。
🚀 特長
- JSON Schema Draft 2020-12 のサポート:最新の JSON Schema 仕様に完全準拠
- 外部参照の解決:HTTP/HTTPS、データベース、ローカルファイル経由で外部スキーマ参照を自動解決
- デュアルサーバーアーキテクチャ:
- AI アシスタントとの stdio 通信を行う MCP サーバー
- リアルタイムストリーミングに対応した Web クライアント向け SSE サーバー
- スキーマ管理:スキーマコレクションの完全な CRUD 操作
- 柔軟なデータ保存:PostgreSQL データベースとローカルファイルへのフォールバック
- スキーマ生成:サンプル JSON データから JSON Schema を自動生成
- Docker サポート:コンテナ化されたデプロイに対応
🏗️ アーキテクチャ
コアコンポーネント
- MCP サーバー(
mcp_server.py):AI アシスタント連携用のプライマリサーバー - SSE サーバー(
sse_server.py):Web クライアント向けの Server-Sent Events 対応 HTTP サーバー - 検証エンジン(
tools/JSONSchemaValidator.py):JSON Schema Draft 2020-12 バリデーター - データマネージャー(
utils/DataManager.py):フォールバック戦略による複数ソースのデータ解決 - スキーマジェネレーター(
utils/SchemaGenerator.py):JSON データからスキーマを自動生成
データ解決戦略
- PostgreSQL データベース(schemas/data_storage テーブル)
- ローカルファイル(最終フォールバック)
📦 インストール
前提条件
- Python 3.8+
- PostgreSQL(任意、データベース保存用)
クイックスタート
-
リポジトリをクローン
git clone https://github.com/EienWolf/jsonshema_mcp.git cd jsonschema_mcp -
依存関係をインストール
pip install -r requirements.txt -
MCP サーバーを実行
python mcp_server.py -
SSE サーバーを実行(任意)
python sse_server.py
🔧 設定
環境変数
.env ファイルを作成します:
# 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!
🛠️ 利用可能な MCP ツール
検証ツール
validate_json_schema:指定したスキーマを使った直接検証validate_json_from_collections:保存済みスキーマを使った検証get_validation_info:バリデーターの機能と情報
スキーマ管理ツール
add_update_schema:コレクション内のスキーマを追加または更新delete_schema:コレクションからスキーマを削除get_schema:スキーマの内容を取得list_schemas:利用可能なすべてのスキーマを一覧表示generate_schema:JSON データからスキーマを生成
🐳 Docker によるデプロイ
ビルドと実行
# 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 の特長
- マルチステージビルドの最適化
- 非 root ユーザーによるセキュリティ
- ヘルスチェックによる監視
- データ永続化のためのボリュームサポート
- 依存関係の自動管理
🤖 MCP サーバーの設定
Claude Desktop との連携
方法 1:Python を直接実行
Claude Desktop の設定ファイルに追加します:
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 の例:
{
"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"
}
}
}
}
方法 2:Docker コンテナ
{
"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 との連携
方法 1:Python を直接実行
MCP 設定ファイルを作成または更新します:
ファイル:~/.mcp/config.json(Linux/macOS)または %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 の例:
{
"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"
}
}
}
}
方法 2:Docker コンテナ
{
"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"
]
}
}
}
設定に関する注意事項
-
データベースの設定:
- 環境変数は任意です
- データベースを利用できない場合、サーバーは自動的にローカルのファイルストレージに切り替わります
- ファイルのみのモードでは、すべての
POSTGRES_*環境変数を省略してください
-
パスの要件:
mcp_server.pyには絶対パスを使用してください- Python がシステムの PATH に含まれていることを確認してください
- Docker では、イメージがビルドされていることを確認してください:
docker build -t jsonschema-mcp-server:1.0.0 .
-
権限:
- サーバーに schemas ディレクトリへの書き込み権限があることを確認してください
- Windows で Docker を使用する場合、ボリュームのマウントを改善するために WSL2 バックエンドを使用してください
-
テストの設定:
# Test direct execution python mcp_server.py # Test Docker execution docker run -i jsonschema-mcp-server:1.0.0 -
ファイルのみの設定(データベースなし):
{ "mcpServers": { "jsonschema-validator": { "command": "python", "args": ["C:\\path\\to\\jsonschema_mcp\\mcp_server.py"] } } }
🌐 Web クライアント
このリポジトリには、以下を実演する完全な Web クライアント(client_example.html)が含まれています。
- Server-Sent Events によるリアルタイム検証
- スキーマ管理インターフェース
- 対話型テスト環境
- 進捗の追跡とエラー報告
🔒 セキュリティ機能
- 入力の検証:Linux のパス要件に基づくスキーマ ID 形式の検証
- パスのセキュリティ:ディレクトリトラバーサル攻撃の防止
- 確認の要件:破壊的な操作には明示的な確認が必要です
- エラー処理:機密情報を漏えいさせずに詳細なエラーメッセージを表示します
- 非 root での実行:Docker コンテナは非特権ユーザーとして実行されます
📋 要件
jsonschema>=4.25.0- JSON Schema の検証mcp>=1.0.0- Model Context Protocolpsycopg2-binary>=2.9.0- PostgreSQL アダプターfastapi>=0.104.0- SSE サーバーフレームワークuvicorn>=0.24.0- ASGI サーバーpydantic>=2.5.0- データ検証ruff>=0.8.0- コードのリントとフォーマット
🆘 トラブルシューティング
よくある問題
-
データベースへの接続に失敗する
- PostgreSQL が実行中であることを確認してください
.env内の認証情報を確認してください- サーバーは自動的にファイルストレージに切り替わります
-
アクセスが拒否される
.schemasディレクトリへの書き込み権限があることを確認してください- Docker のボリュームマウントを確認してください
-
スキーマが見つからない
- スキーマ ID の形式を確認してください(
.jsonで終わる必要があります) list_schemasツールでスキーマが存在することを確認してください
- スキーマ ID の形式を確認してください(
🗺️ ロードマップ
計画中の機能や今後の開発方針については、ROADMAP.md をご覧ください。DXT パッケージの統合、スキーマ生成機能の強化、AI を活用した機能などを予定しています。
📄 ライセンス
このプロジェクトは、カスタム非営利ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
🙏 謝辞
- Model Context Protocol(MCP)の仕様に基づいて構築されています
- 検証には
jsonschemaライブラリを使用しています - 最新の API 設計パターンに着想を得ています
- AI アシスタントとの統合を想定して設計されています
📞 サポート
問題、質問、貢献については、以下をご確認ください。
- 上記のトラブルシューティングのセクションを確認する
- 既存の問題とドキュメントを確認する
- 以下の情報を含む詳細な問題報告を作成する:
- エラーメッセージ
- 再現手順
- 環境の詳細
- 期待される動作と実際の動作
AI と開発者のコミュニティのために ❤️ を込めて
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。