Cortex turns API specifications and Markdown into typed SDKs, interactive documentation, and an MCP server from one project configuration.
OpenAPI · AsyncAPI · GraphQL · gRPC · OpenRPC · Markdown
Cortex combines OpenAPI, AsyncAPI, GraphQL, Protocol Buffer, OpenRPC, and Markdown sources. Developers get interactive documentation, applications get typed SDKs, and AI agents get an MCP server with project context.
If Cortex helps your team, star this repository to support its development.
Create a sample project and inspect the generation plan:
mkdir petstore
cd petstore
npm install --global @cortex-docs/cli
cortex init petstore
cortex validate
cortex generate --dry-runCortex validates each source and shows every planned output:
✓ Config is valid
✓ Parsed AsyncAPI: WebSocket API
✓ Parsed GraphQL: GraphQL
✓ Parsed OpenRPC: OpenRPC
✓ Parsed OpenAPI: REST API V1
Languages: typescript, python, go, java, kotlin, ruby, php, csharp, rust, cpp, c
typescript [REST + WS + GraphQL + OpenRPC] → generated/typescript/petstore-typescript-client-sdk
python [REST + WS + GraphQL + OpenRPC] → generated/python/petstore-python-sdk
...
mcp-server → generated/mcp-server
The generated MCP server gives AI agents typed tools, specifications, SDK guides, and project documentation.
Generate the files. Then start the documentation server:
cortex generate
cortex docs serveOpen http://localhost:3012. Press Ctrl+C to stop the server.
- Generate SDKs for TypeScript, Python, Go, Java, Kotlin, Ruby, PHP, C#, Rust, C++, and C.
- Combine multiple specification files in one generated SDK.
- Generate HTTP, WebSocket, GraphQL, gRPC, and JSON-RPC clients.
- Generate a production documentation server with interactive API reference pages.
- Generate an MCP server with typed tools, embedded specifications, SDK guides, and project documentation for AI agents.
- Add Markdown pages, SDK guides, and all API specifications to the MCP server.
- Customize generated output with sparse Eta template overrides.
- Publish generated packages and MCP servers to language registries and GitHub repositories.
Generate interactive docs for exploration, typed SDKs for integration, and MCP servers for AI agents.
| Task | Split toolchain | Cortex Docs |
|---|---|---|
| Configuration | Configure SDK, documentation, and MCP generators | Declare all API sources in one project configuration |
| Generation | Coordinate separate commands and output directories | Generate all configured outputs with one command |
| Customization | Maintain templates for each generator | Override only the required Eta templates |
| Publishing | Maintain a release process for each package | Review one publish plan for registries and GitHub |
| Developer interface | Keep guides separate from API references | Combine Markdown, API references, and SDK guides |
| Agent interface | Maintain MCP servers and context separately | Generate MCP servers with specifications, SDK guides, and project documentation |
- Node.js 20 or later
- npm 10 or later
Some generated SDKs require the normal compiler or package manager for their target language.
cortex init creates cortex.config.yml. Relative paths start from the directory that contains this file.
project: my-api
title: My API Docs
logo: ./assets/logo.svg
theme: system
custom_head_html: |-
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="/assets/custom.css">
sources:
- title: REST API
type: openapi-spec
spec: ./specs/openapi.yaml
intro: ./docs/rest.md
languages:
- language: typescript
package_name: '@my-org/my-api'
- language: python
package_name: my-api
- title: Realtime API
type: asyncapi-spec
spec: ./specs/asyncapi.yaml
languages:
- language: typescript
package_name: '@my-org/my-api'
- title: GraphQL API
type: graphql-spec
spec: ./specs/schema.graphql
endpoint: https://api.example.com/graphql
languages:
- language: typescript
package_name: '@my-org/my-api'
output:
base_dir: ./generated
docs:
- section: Get started
sources:
- title: Quickstart
document: ./docs/quickstart.md
mcp:
package_name: '@my-org/my-api-mcp'custom_head_html adds trusted HTML to every documentation page. This field supports metadata, stylesheets, and analytics scripts.
Store local head resources in the project assets directory. Cortex serves these files from /assets/*.
Cortex does not sanitize this value. Add only HTML that you trust.
Add ?appearance=dark or ?appearance=light to any documentation URL to select its initial appearance. The parameter takes priority over the project theme and the visitor's stored preference.
For example, /docs/quickstart?appearance=dark opens the quickstart in dark mode. The theme button can change the appearance after the page loads.
Sources that use the same language and package_name are merged into one SDK. Cortex rejects duplicate operation and type names that would make a merge ambiguous.
See the configuration reference for all fields.
| Command | Result |
|---|---|
cortex init <name> |
Create a project and sample files. |
cortex validate |
Validate the config and every API source. |
cortex generate |
Generate configured SDKs and the MCP server. |
cortex generate --language typescript |
Generate one configured language. |
cortex generate --dry-run |
Show planned output without writing files. |
cortex docs serve |
Start the development server and watch project files. |
cortex docs build --output .cortex/docs |
Create a production Node.js documentation build. |
cortex docs start --output .cortex/docs |
Start a production documentation build. |
cortex mcp generate |
Generate only the MCP server. |
cortex publish --dry-run |
Check package publication without uploading. |
cortex publish |
Publish enabled generated packages. |
| Source | Generated SDK | Documentation | Generated MCP server |
|---|---|---|---|
| OpenAPI | REST clients | Interactive API reference | Callable tools and embedded specs |
| AsyncAPI | WebSocket clients | Channel and message reference | Payload-preparation tools and specs |
| GraphQL SDL | Query, mutation, and subscription clients | Operation and type reference | Callable tools and embedded schema |
| Protocol Buffer | Unary and streaming gRPC clients | Service and message reference | Embedded .proto resources |
| OpenRPC | JSON-RPC clients | Method and schema reference | Callable tools and embedded specs |
The generated MCP server does not call gRPC methods. It exposes Protocol Buffer files as MCP resources so an agent can inspect the service contract.
The build command creates a self-contained Next.js server. It is not a static HTML export.
cortex docs build --output .cortex/docs
NODE_ENV=production cortex docs start --output .cortex/docs --port 3000Deploy the output directory to a service that can run Node.js. Keep cortex.config.yml and its referenced specifications available at runtime.
cortex mcp generate --output .cortex/mcp-server
cd .cortex/mcp-server
npm install
npm run build
npm startThe generated package contains local copies of every configured specification. It also embeds configured Markdown and generated SDK README files as tools.
The release workflow publishes @cortex-docs/cli and @cortex-docs/mcp. The CLI tarball includes the internal runtime workspaces.
| Package | Distribution | Purpose |
|---|---|---|
@cortex-docs/cli |
npm | Command-line interface and project workflow |
@cortex-docs/mcp |
npm | MCP server for the Cortex documentation |
@cortex-docs/core |
Included in CLI | Configuration loader and specification parsers |
@cortex-docs/codegen |
Included in CLI | SDK generation engine and language templates |
@cortex-docs/mcp-gen |
Included in CLI | MCP server generator |
@cortex-docs/docs-ui |
Included in CLI | Documentation runtime used by the CLI |
Read CONTRIBUTING.md and DEVELOPMENT.md before you open a pull request.
Report vulnerabilities through the private process in SECURITY.md.
Cortex Docs is available under the MIT License.
If Cortex saves you time, give the repository a star. It helps more developers find the project.