fluidmcp
The package manager for fluidmcp to quickly spin up mcp servers behind fastapi
Documentation
🌀 FluidMCP CLI
Orchestrate multiple MCP servers with a single configuration file
⚡ Quick Start - Run Multiple MCP Servers
The main power of FluidMCP is running multiple MCP servers from a single configuration file over a unified FastAPI endpoint.
1. Create a Configuration File
Create a `config.json` file with your MCP servers:
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": ["-y", "@google-maps/mcp-server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your-api-key"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"],
"env": {}
}
}
}2. Launch All Servers
fluidmcp run config.json --file --start-serverThis will:
- Install and configure all MCP servers listed in your config
- Launch them through a unified FastAPI gateway
- Make them available at `http://localhost:8099`
- Provide automatic API documentation at `http://localhost:8099/docs`
🚀 Features
- 📁 Multi-Server Orchestration
- Define multiple MCP servers in a single JSON configuration file
- Launch all servers with one command: `fluidmcp run --file `
- Unified FastAPI gateway serving all your MCP tools
- 📦 Package Management
- Install MCP packages with `fluidmcp install author/package@version`
- Automatic dependency resolution and environment setup
- Support for npm, Python, and custom MCP servers
- 🚀 FastAPI Gateway
- Unified HTTP endpoints for all MCP tools
- Server-Sent Events (SSE) streaming support
- Swagger documentation at `/docs`
- 🔐 Security & Authentication
- Bearer token authentication
- Secure mode with encrypted communications
- Environment variable encryption for API keys
📥 Installation
pip install fluidmcp🔧 Alternative Usage Patterns
Install Individual Packages
fluidmcp install author/package@versionList Installed Packages
fluidmcp listRun Individual Package
fluidmcp run author/package@version --start-server🔐 Advanced Usage
Secure Mode with Authentication
Run with bearer token authentication:
fluidmcp run config.json --file --secure --token your_token --start-serverafter authorisation
☁️ Run from S3 URL
Run configuration directly from S3:
fluidmcp run "https://bucket.s3.amazonaws.com/config.json" --s3Common Options:
- `--start-server` – Starts FastAPI server
- `--master` – Use S3-driven config
- `--file` – Run from local config.json
- `--s3` – Run from S3 URL
- `--secure` – Enable secure token mode
- `--token ` – Custom bearer token
- `--verbose` – Enable verbose logging (DEBUG level)
Run All Installed Packages
fluidmcp run all --start-server📂 Run Modes
🧠 Master Mode (S3 Centralized)
fluidmcp install author/package@version --master
fluidmcp run all --master🧩 Environment Variables
# S3 Credentials (used in --master mode)
export S3_BUCKET_NAME="..."
export S3_ACCESS_KEY="..."
export S3_SECRET_KEY="..."
export S3_REGION="..."
# Registry access
export MCP_FETCH_URL="https://registry.fluidmcp.com/fetch-mcp-package"
export MCP_TOKEN="..."Edit Environment
fluidmcp edit-envShow Version
fluidmcp --versionDisplays FluidMCP version, Python version, and installation path.
Validate Configuration
# Validate a local configuration file
fluidmcp validate config.json --file
# Validate an installed package
fluidmcp validate author/package@versionThe `validate` command checks:
- Configuration file structure and resolution
- Command availability in system PATH
- Required environment variables (marked with `required: true`)
- Optional environment variables and tokens
- Metadata.json existence for installed packages
Note: Environment variable lookup is case-insensitive. For example, if your config specifies `github_token`, the validator will check both `github_token` and `GITHUB_TOKEN` in your environment.
The command distinguishes between errors (fatal issues) and warnings (non-fatal issues):
Errors (exit code 1):
- Missing commands in PATH
- Missing required environment variables
- Configuration resolution failures
Warnings (exit code 0):
- Missing optional environment variables
- Missing TOKEN variables not explicitly marked as required
Example outputs:
Success:
✔ Configuration is valid with no issues found.With warnings only:
⚠️ Configuration is valid with warnings:
- Optional env var 'DEBUG_MODE' is not set (server: test-server)
- Token env var 'GITHUB_TOKEN' is not set (server: github-server)
✔ No fatal errors found. You may proceed, but consider addressing the warnings above.With errors:
❌ Configuration validation failed with errors:
- Command 'nonexistent-command' not found in PATH (server: test-server)
- Missing required env var 'API_KEY' (server: test-server)
⚠️ Warnings:
- Optional env var 'DEBUG_MODE' is not set (server: test-server)📁 Directory Layout
.fmcp-packages/
└── Author/
└── Package/
└── Version/
├── metadata.json
└── [tool files]📑 metadata.json Example
{
"mcpServers": {
"maps": {
"command": "npx",
"args": ["-y", "@package/server"],
"env": {
"API_KEY": "xxx"
}
}
}
}🧪 Try an MCP Server
fluidmcp install Google_Maps/google-maps@0.6.2
fluidmcp run allThen call it using:
import requests, json
url = "http://localhost:8099/google-maps/mcp"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_search_places",
"arguments": {
"query": "coffee shops in San Francisco"
}
}
}
response = requests.post(url, json=payload)
print(json.dumps(response.json(), indent=2))📡 Streaming with SSE
curl -N -X POST http://localhost:8099/package/sse \
-H "Content-Type: application/json" \
-d @payload.json- `sse/start`
- `sse/stream`
- `sse/message`
- `sse/tools_call`
Useful for LLMs, web scraping, or AI workflows that stream data.
📸 Demo
Installing an individual package
Running an individual package
Edit environment of a package
🤝 Contribute
FluidMCP is open for collaboration. We welcome contributions from the community!
- Contributing Guide: See CONTRIBUTING.md for development setup and guidelines
- Report Issues: Open an issue on GitHub
- Submit PRs: Follow our contribution guidelines to submit pull requests
📌 License
GNU General Public License v3.0
Frequently asked questions
What is fluidmcp?
fluidmcp is The package manager for fluidmcp to quickly spin up mcp servers behind fastapi
How do I install fluidmcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is fluidmcp open source?
Yes — it is hosted on GitHub at https://github.com/Fluid-AI/fluidmcp and has 5 stars.
Related MCP tools
AWS MCP Servers — helping you get the most out of AWS, wherever you use MCP. Python-based implementation. Trusted by 6900+ developers.
A simple, secure MCP-to-OpenAPI proxy server Python-based implementation. Trusted by 3500+ developers. Trusted by 3500+ developers.
MCP server that interacts with Obsidian via the Obsidian rest API community plugin Python-based implementation. Trusted by 2300+ developers.
Default Configuration: MCP CLI defaults to using Ollama with the gpt-oss reasoning model for local, privacy-focused operation without requiring API keys.
Official MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
MCP server for long term agent memory with Mem0. Also useful as a template to get you started building your own MCP server with Python!
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP