Overview
MCP provides a mechanism for Chainlit applications to connect to either server-sent events (SSE) or streamable HTTP based services, or command-line (stdio) based tools. Once connected, your application can discover available tools, execute them, and integrate their responses into your application’s flow.Chainlit MCP Cookbook
End to end cookbook example showcasing MCP tool calling with Claude.
Connect to an MCP server
Contact us for Enterprise Ready MCP
We’re working with companies to create their MCP stacks, enabling AI agents to consume their data and context in standardized ways. Fill out this form.Connections Types
WebSockets | HTTP+SSE | Streamable HTTP | stdio |
---|---|---|---|
❌ | ✅ | ✅ | ✅ |
- SSE (Server-Sent Events): Connect to a remote service via HTTP
- Streamable HTTP: Send HTTP requests to a server and receive JSON responses or connect using SSE streams
- stdio: Execute a local command and communicate via standard I/O
⚠️ Security Warning: The stdio connection type spawns actual subprocesses on the Chainlit server. Only use this with trusted commands in controlled environments. Ensure proper validation of user inputs to prevent command injection vulnerabilities.
Command Availability Warning: When using the stdio connection type with commands like
npx
or uvx
, these commands must be available on the Chainlit server where the application is running. The subprocess is executed on the server, not on the client machine.Server-Side Configuration (config.toml
)
You can control which MCP connection types are enabled globally and restrict allowed stdio commands by modifying your project’s config.toml
file (usually located at the root of your project or .chainlit/config.toml
).
Under the [features.mcp]
section, you can configure SSE, Streamable HTTP and stdio separately:
Setup
1. Register Connection Handlers
To use MCP in your Chainlit application, you need to implement theon_mcp_connect
handler. The on_mcp_disconnect
handler is optional but recommended for proper cleanup.
2. Client Configuration
The client needs to provide the connection details through the Chainlit interface. This includes:- Connection name (unique identifier)
- Client type (
sse
,streamable-http
orstdio
) - For SSE and Streamable HTTP: URL endpoint
- For stdio: Full command (e.g.,
npx your-tool-package
oruvx your-tool-package
)

Adding an MCP
Working with MCP Connections
Retrieving Available Tools
Upon connection, you can discover the available tools provided by the MCP service:Executing Tools
You can execute tools using the MCP session:Integrating with LLMs
MCP tools can be seamlessly integrated with LLMs that support tool calling:Session Management
MCP connections are managed at the session level. Each WebSocket session can have multiple named MCP connections. The connections are cleaned up when:- The user explicitly disconnects
- The same connection name is reused (old connection is replaced)
- The WebSocket session ends