docs.json navigation. The mcp field accepts either a local JSON file path or a remote MCP server URL:1234567891011121314{ "navigation": { "tabs": [ { "tab": "Documentation", "groups": [{ "group": "Getting Started", "pages": ["index"] }] }, { "tab": "MCP Tools", "mcp": "mcp-tools.json" } ] } }
1234{ "tab": "MCP Tools", "mcp": "https://api.example.com/mcp" }
tools/list, resources/list, and prompts/list, and generates the same pages as the local file approach.pagesDir, Holocron checks pagesDir first, then falls back to the project root.tools/list, resources/list, and prompts/list responses. If you already have an MCP server, you can export its definitions directly. The file is a JSON object with three optional arrays:1234567891011121314151617181920212223242526272829303132333435363738394041{ "serverUrl": "https://api.example.com/mcp", "tools": [ { "name": "query_database", "description": "Execute a read-only SQL query.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "SQL query to execute", "example": "SELECT * FROM users LIMIT 10" }, "database": { "type": "string", "enum": ["production", "staging"] } }, "required": ["query", "database"] } } ], "resources": [ { "uri": "db://schema/users", "name": "Users Table Schema", "description": "Database schema for the users table.", "mimeType": "application/sql" } ], "prompts": [ { "name": "explain_query", "description": "Break down what a SQL query does", "arguments": [ { "name": "query", "description": "The SQL query to explain", "required": true } ] } ] }
serverUrl field is optional. It stores the live MCP server URL for future AI chat integration.namestringrequireddescriptionstringinputSchemaobjectrequiredoutputSchemaobjectannotationsobjectexecutionobjecttaskSupport is "optional" or "required", a long-running badge appears.uristringrequireddb://schema/users, config://app/settings).namestringrequireddescriptionstringmimeTypestringapplication/json, application/sql).TOOL badge, the description, input parameters as a field list (with types, required markers, defaults, and enum values), and a request example in the right sidebar showing the JSON-RPC tools/call shape with sampled values from the schema.outputSchema, a Response field list and a <ResponseExample> code block also appear.RES badge, the URI, MIME type, and description./mcp/ by default (e.g. /mcp/query-database, /mcp/resources/users-table-schema).example field on the propertyexamples[0]enum[0]default value"string", 0, true, "user@example.com" for format: "email", etc.)example values to your inputSchema properties for the best documentation experience.| Badge | Annotation | Meaning |
| read-only | readOnlyHint: true | Tool does not modify its environment |
| idempotent | idempotentHint: true | Repeated calls with same args have no additional effect |
| destructive | destructiveHint: true | Tool may perform destructive updates |
| closed-world | openWorldHint: false | Tool operates in a closed domain (e.g. memory), not open like web search |
| long-running | execution.taskSupport: "optional" | "required" | Tool supports long-running async tasks |
/mcp/. Change the prefix with base:12345{ "tab": "MCP Tools", "mcp": "mcp-tools.json", "base": "/tools" }
/tools/query-database instead. A leading slash is optional: "/tools" and "tools" behave the same. Set base to "" for no prefix.groups or pages array to the tab:1234567891011121314{ "tab": "MCP Tools", "mcp": "mcp-tools.json", "groups": [ { "group": "Getting Started", "pages": ["mcp/overview", "mcp/authentication"] }, { "group": "Database", "pages": ["query_database", "..."] } ] }
"..." entry expands all remaining tools and resources not already listed.npx vite dev, editing the MCP definition file hot-reloads the generated tool pages. Add a new tool to the JSON, save, and the new page is immediately routable without restarting the dev server.