typed-schema-demo · git:20260505.5c57b27 · 2026-05-05 · sha256 750fa0b466c2b6e8
typed-schema-demo git:20260505.5c57b27A
Immutable. This exact content is served forever at /api/v1/blob/750fa0b466c2b6e8.
---
name: typed-schema-demo
description: >-
Example skill — demonstrates zero-dependency JSON Schema derivation from
Python dataclasses and type annotations (issue #242). Use as a reference
when authoring typed handlers that should publish inputSchema /
outputSchema without hand-writing JSON. Not intended for production use.
license: MIT
compatibility: Python 3.10+
metadata:
dcc-mcp:
dcc: python
version: "1.0.0"
layer: example
search-hint: "structured schema, dataclass, json schema, inputSchema, outputSchema, typed handler, pydantic-free"
tags: "example, schema, structured"
---
# Typed Schema Demo (issue #242)
This skill demonstrates the `dcc_mcp_core.schema` helpers landed for
issue #242: authors write a typed handler and
`tool_spec_from_callable` derives both `inputSchema` and `outputSchema`
from the annotations, with no dependency on `pydantic`, `jsonschema`, or
`attrs`.
## What to look at
- `scripts/demo.py` — one handler using a dataclass input and a dataclass
output. The derived schemas are structurally compatible with pydantic's
`model_json_schema()` so callers can swap in pydantic later without
migrating agents or cached schemas.
## How to wire it into a server
The demo module builds a `ToolSpec` that is ready for
`dcc_mcp_core._tool_registration.register_tools(server, [spec])`. Inside
an adapter (e.g. Maya/Blender), register it during bootstrap:
```python
from dcc_mcp_core._tool_registration import register_tools
from typed_schema_demo.scripts.demo import spec
register_tools(server, [spec], dcc_name="python")
```
When the negotiated MCP session is `2025-06-18`, the gateway publishes
`outputSchema` alongside `inputSchema` so clients can validate the
`structuredContent` payload our handler returns.