Dynamic Schema
A Dynamic Schema is a JSON Schema used in MCP that is not fixed at build time, but is instead generated or modified by the server depending on the current state.
Use Cases
- Database Servers: A server that generates a different
insert_rowtool schema for every table it discovers. - API Wrappers: A server that adjusts its tool list based on the permissions of the logged-in user.
- Workflow Tools: A tool whose arguments change based on the output of a previous step in an agentic chain.
Implementation
Servers use the notifications/capabilities/changed method to signal to the host that it should re-fetch (tools/list or resources/list) the latest dynamic schema.
Questions & Answers
What is a "Dynamic Schema" in the context of MCP?
A Dynamic Schema is a JSON Schema that is not static; instead, it is generated or updated by the MCP server at runtime based on the server's current state, discovered data, or user permissions.
In what scenarios would an MCP server use a dynamic schema?
Dynamic schemas are useful for database-backed servers that need to generate schemas for discovered tables, API wrappers that adjust tool lists based on user auth, or workflow tools where arguments depend on previous steps.
How does an MCP server notify a client that its schema has changed?
The server sends a notifications/capabilities/changed message to the host application, which then triggers the host to re-fetch the tool or resource list to obtain the latest schema.