pydantic-mcp is an MCP server for inspecting Pydantic models and Python type contracts. It is built for LLM workflows that need deterministic validation, serialization, schema generation, model explanations, and migration help.
- Discover Pydantic
BaseModelclasses across configured packages. - Resolve targets from import paths, short model names, Python type expressions, or inline model snippets.
- Validate arbitrary payloads with
TypeAdapteror model behavior. - Serialize validated data in Python or JSON mode.
- Generate validation and serialization JSON Schema.
- Explain fields, defaults, aliases, decorators, constraints, and nested models.
- Generate valid and invalid example payloads.
- Infer candidate Pydantic models from sample JSON payloads.
- Compare strict/non-strict and Python-vs-JSON validation behavior.
- Analyze common Pydantic v1 to v2 migration issues.
- Parse partial JSON with
pydantic_core.from_json. - Expose MCP tools, resources, prompts, plus HTTP health/readiness routes.
list_modelsinspect_typeexplain_modelvalidate_dataserialize_datagenerate_json_schemacreate_example_payloadgenerate_model_from_jsoncompare_validation_modesmigrate_v1_to_v2parse_partial_json
pydantic://server/capabilitiespydantic://project/settingspydantic://project/import-rootspydantic://project/errors/recentpydantic://project/models/changedpydantic://models/indexpydantic://models/{qualified_name}pydantic://schemas/{qualified_name}?mode=validation|serializationpydantic://examples/{qualified_name}pydantic://migration/rulespydantic://reference/overview
explain modelgenerate api contract docsdebug validation errordesign a model from example jsonreview schema compatibilitymigrate to pydantic v2
Install dependencies:
uv syncRun over stdio:
uv run python mcp_server.py --transport stdioRun over HTTP:
uv run python mcp_server.py --transport http --host 127.0.0.1 --port 8000Health endpoints:
GET /healthzGET /readyz
Important environment variables:
PYDANTIC_MCP_ALLOWED_IMPORT_ROOTSPYDANTIC_MCP_DEFAULT_SCAN_PACKAGESPYDANTIC_MCP_IMPORT_TIMEOUT_SECONDSPYDANTIC_MCP_ERROR_HISTORY_LIMITPYDANTIC_MCP_TRANSPORTPYDANTIC_MCP_HOSTPYDANTIC_MCP_PORT
Example:
PYDANTIC_MCP_ALLOWED_IMPORT_ROOTS=your_app.models \
PYDANTIC_MCP_DEFAULT_SCAN_PACKAGES=your_app.models \
uv run python mcp_server.py --transport stdioThese values must point at importable application packages in the runtime environment. For local smoke tests, the repository ships an installable sample package at pydantic_mcp_sample_app, but production deployments should point at your own application modules.
just test