MCP Servers
Model Control Protocol (MCP) allows you to integrate external tool providers with your Chainlit application. This enables your AI models to use tools through standardized interfaces.
Overview
MCP provides a mechanism for Chainlit applications to connect to either server-sent events (SSE) 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.
Connections Types
Chainlit supports two types of MCP connections:
- SSE (Server-Sent Events): Connect to a remote service via HTTP
- 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.
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.Setup
1. Register Connection Handlers
To use MCP in your Chainlit application, you need to implement the on_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
orstdio
) - For SSE: 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
Was this page helpful?