LibreChat MCP Servers
by wally-kroeker
This repository provides Model Context Protocol (MCP) server implementations designed to extend LibreChat's functionalities via the Supergateway bridge. It offers a framework for integrating various tools and services into LibreChat's agent system.
Last updated: N/A
LibreChat MCP Servers
This directory contains Model Context Protocol (MCP) server implementations that extend LibreChat's capabilities through the Supergateway bridge.
These are the projects I am tiing together.
- This is the think that gives any kind of tool to the Agent. Model Context Protocol Specification
- Converts stdio MCP servers to SSE and each server can run in its own container. I will see how this scales Supergateway Documentation
- Multi-LLM agent and MCP client LibreChat Documentation
Directory Structure
mcp/
├── brave-search/ # Brave Search API integration
│ ├── Dockerfile
│ └── README.md
├── [future-server]/ # Template for future MCP servers
│ ├── Dockerfile
│ └── README.md
└── README.md # This file
Adding New MCP Servers
- Create a new directory under
mcp/
for your server - Add required files:
Dockerfile
- Server build configurationREADME.md
- Server-specific documentation
- Update docker-compose.override.yml to add your service
- Update librechat.yaml to configure the MCP server
Common Configuration
Each MCP server should:
- Use Supergateway as a bridge (stdio to SSE)
- Follow consistent port numbering (8003+)
- Connect to the librechat_default network
- Use environment variables for sensitive data
Port Assignments
- 8003: Brave Search
- 8004-8099: Reserved for future MCP servers
Security Best Practices
- Never commit API keys or sensitive data
- Use environment variables for secrets
- Follow least privilege principle
- Keep services isolated
- Regularly update dependencies
Adding MCP Servers to LibreChat with Supergateway
This guide provides step-by-step instructions for adding any MCP server to LibreChat using Supergateway as a bridge.
Overview
Supergateway allows you to run stdio-based MCP servers over SSE (Server-Sent Events), making it ideal for integrating MCP servers with LibreChat in a Docker environment.
Prerequisites
- A running LibreChat installation
- Docker and Docker Compose
- The MCP server package you want to integrate
Implementation Steps
1. Create Server Directory
Create a directory for your MCP server:
mkdir mcp-server-name
2. Create Dockerfile
Create mcp-server-name/Dockerfile
:
FROM node:18
WORKDIR /app
# Install both supergateway and your MCP server package
RUN npm install -g supergateway @organization/mcp-server-package
# The command runs supergateway as a bridge between your stdio MCP server and SSE
# --stdio: The command to run your MCP server
# --port: The port supergateway will listen on
CMD ["npx", "-y", "supergateway", "--stdio", "npx -y @organization/mcp-server-package", "--port", "8002"]
3. Update docker-compose.override.yml
Add your MCP server service:
services:
mcp-server-name:
build:
context: ./mcp-server-name
ports:
- "8002:8002" # Adjust port as needed
networks:
- librechat_default
environment:
- API_KEY=${YOUR_API_KEY} # If your server needs API keys
volumes:
- ./mcp-server-name:/app # If your server needs access to local files
4. Update librechat.yaml
Add your MCP server configuration:
mcpServers:
server-name:
type: sse
url: "http://mcp-server-name:8002/sse"
Understanding the Architecture
-
Stdio to SSE Bridge:
- Your MCP server communicates via stdio
- Supergateway acts as a bridge, converting stdio to SSE
- LibreChat connects to the SSE endpoint
-
Docker Networking:
- All services run on the
librechat_default
network - Services can communicate using their service names as hostnames
- Only necessary ports are exposed
- All services run on the
-
Configuration Flow:
- LibreChat reads mcpServers config from librechat.yaml
- Connects to Supergateway's SSE endpoint
- Supergateway forwards requests to your MCP server
Common Configurations
1. Basic MCP Server
mcpServers:
basic-server:
type: sse
url: "http://basic-server:8002/sse"
2. MCP Server with API Key
# docker-compose.override.yml
services:
api-server:
environment:
- API_KEY=${API_KEY}
# librechat.yaml
mcpServers:
api-server:
type: sse
url: "http://api-server:8002/sse"
3. MCP Server with File Access
# docker-compose.override.yml
services:
file-server:
volumes:
- ./data:/app/data
# librechat.yaml
mcpServers:
file-server:
type: sse
url: "http://file-server:8002/sse"
Troubleshooting
-
Connection Issues:
- Verify network configuration
- Check container logs:
docker compose logs mcp-server-name
- Ensure ports are not conflicting
-
Server Not Starting:
- Verify package installation in Dockerfile
- Check for environment variables
- Review server logs
-
Communication Problems:
- Verify service names match in all configurations
- Check network connectivity between containers
- Ensure SSE endpoint is correct
Best Practices
-
Security:
- Never commit API keys or sensitive data
- Use environment variables for secrets
- Limit container permissions
-
Networking:
- Only expose necessary ports
- Use internal Docker networking when possible
- Follow least privilege principle
-
Configuration:
- Keep configurations modular
- Document environment variables
- Use version control for configurations
-
Monitoring:
- Log important events
- Monitor resource usage
- Set up health checks
Example: Complete Setup
Here's a complete example of adding a new MCP server:
- Directory Structure:
librechat/
├── mcp-server/
│ └── Dockerfile
├── docker-compose.override.yml
└── librechat.yaml
- Dockerfile:
FROM node:18
WORKDIR /app
RUN npm install -g supergateway @org/mcp-server
CMD ["npx", "-y", "supergateway", "--stdio", "npx -y @org/mcp-server", "--port", "8002"]
- docker-compose.override.yml:
services:
mcp-server:
build:
context: ./mcp-server
ports:
- "8002:8002"
networks:
- librechat_default
environment:
- API_KEY=${MCP_API_KEY}
- librechat.yaml:
mcpServers:
mcp-server:
type: sse
url: "http://mcp-server:8002/sse"