Cortex
@FreePeak
A declarative platform for building Model Context Protocol (MCP) servers in Golang—exposing tools, resources & prompts in a clean, structured way
Overview
What is Cortex?
Cortex is a Go library for building MCP (Model Context Protocol) servers declaratively. It implements the full MCP specification, enabling developers to expose resources, tools, and prompts over stdio or HTTP/SSE transports while following Go best practices.
How to use Cortex?
Install with go get github.com/FreePeak/cortex. Define tools using the tools package, create a server with server.NewMCPServer, register tools with handlers, and start the server with ServeStdio() or ServeHTTP(). Providers can group related tools and resources for registration.
Key features of Cortex
- Declarative MCP server construction in Go
- Supports Resources, Tools, Prompts, and Providers
- STDIO and HTTP/SSE transport options
- Embeddable into existing Go applications and HTTP servers
- Multi-protocol operation via goroutines
- Adheres to the latest MCP specification
Use cases of Cortex
- Building MCP servers that expose data and tools to LLMs
- Adding MCP capabilities to existing Go web servers
- Creating reusable provider packages for related tools and resources
- Running multi-protocol servers for different client types
FAQ from Cortex
What transports does Cortex support?
Cortex supports STDIO for command-line integration and HTTP with Server-Sent Events (SSE) for web applications.
Can I embed Cortex into an existing server?
Yes, Cortex can be embedded into any Go HTTP server. Examples include integrating with a standard HTTP server or PocketBase.
How do I group related tools and resources?
Use providers, which bundle related tools and resources into a single package that can be registered with the server via mcpServer.RegisterProvider.
What is MCP?
The Model Context Protocol (MCP) is a standardized protocol for providing context and tools to LLMs in a secure, efficient manner. It separates context provisioning from LLM interaction.
What logging requirements exist for STDIO servers?
All logs must be written to stderr to keep stdout clean for JSON-RPC messages. Use log.New(os.Stderr, ...) or fmt.Fprintf(os.Stderr, ...).