Open WebUI Knowledge Base MCP Server
An MCP (Model Context Protocol) server that exposes Open WebUI Knowledge Bases as tools and resources, enabling AI assistants like Cursor and Claude Desktop to search and access knowledge bases.
Features
- 🔍 Semantic Search - Search knowledge bases using semantic search
- 📚 Knowledge Base Management - List and get information about knowledge bases
- 👥 Multi-User Support - Each connection uses its own API token for isolation
- 🌐 Dual Transport Modes - Supports both stdio (local) and HTTP (remote) transports
- 🔒 Secure - Per-connection authentication, input validation, rate limiting, CORS protection
Quick Start
Prerequisites
- Python 3.8+ or Docker
- Open WebUI instance with API access
- API token from Open WebUI (Settings → Account → API keys)
Installation
pip install -r requirements.txt
Or using uvx:
pip install uv # or: brew install uv
uvx --from . python mcp_server.py
Usage
stdio Mode (Local)
export OPEN_WEBUI_API_URL="https://your-open-webui-instance.com/api/v1"
export OPEN_WEBUI_API_TOKEN="sk-your-token-here"
python mcp_server.py
HTTP Mode (Production)
Docker Compose:
# Create .env file
echo "OPEN_WEBUI_API_URL=https://your-open-webui-instance.com/api/v1" > .env
# Start server
docker-compose up -d
# View logs
docker-compose logs -f
Direct Python:
export OPEN_WEBUI_API_URL="https://your-open-webui-instance.com/api/v1"
export MCP_TRANSPORT="http"
export MCP_HTTP_PORT="8001"
python mcp_server.py
Server endpoints:
- MCP:
http://localhost:8001/mcp - Health:
http://localhost:8001/health
Configuring Cursor to use your MCP server
Cursor: stdio Mode
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"open-webui-knowledge": {
"command": "uvx",
"args": ["--from", "/path/to/open-webui-mcp-server", "python", "/path/to/open-webui-mcp-server/mcp_server.py"],
"env": {
"OPEN_WEBUI_API_URL": "https://your-open-webui-instance.com/api/v1",
"OPEN_WEBUI_API_TOKEN": "sk-your-token-here"
}
}
}
}
Cursor: HTTP Mode
{
"mcpServers": {
"open-webui-knowledge": {
"url": "http://localhost:8001/mcp",
"headers": {
"Authorization": "Bearer sk-your-token-here"
}
}
}
}
Available Tools
-
list_knowledge_bases- List all accessible knowledge basespermission(optional):"read"or"write"(default:"read")
-
search_knowledge_base- Search a knowledge base using semantic searchknowledge_base_id(required): The ID of the knowledge basequery(required): Your search queryk(optional): Number of results (default: 5)
-
get_knowledge_base_info- Get detailed information about a knowledge baseknowledge_base_id(required): The ID of the knowledge base
Environment Variables
| Variable | Description | Default |
|---|---|---|
OPEN_WEBUI_API_URL |
Open WebUI API base URL | Required |
OPEN_WEBUI_API_TOKEN |
Default API token (optional) | None |
MCP_TRANSPORT |
Transport mode: stdio or http |
stdio |
MCP_HTTP_HOST |
HTTP server host | 0.0.0.0 |
MCP_HTTP_PORT |
HTTP server port | 8001 |
MCP_CORS_ORIGINS |
Comma-separated CORS origins (empty = no CORS) | Empty |
MCP_RATE_LIMIT_PER_IP |
Rate limit per IP (e.g., "1000/minute") | 1000/minute |
MCP_RATE_LIMIT_PER_TOKEN |
Rate limit per token | 1000/minute |
MCP_RATE_LIMIT_HEALTH |
Rate limit for health endpoint | 10/minute |
Security
- Input validation and sanitization
- Rate limiting (per-IP and per-token)
- CORS protection (disabled by default)
- Request size limits (10MB max)
- Error message sanitization
- Token validation
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
This project is licensed under the MIT License.
Metadata
Release files for owui-mcp-server 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| owui_mcp_server-1.0.0.tar.gz | 17.2 kB | Without provenance | Details for owui_mcp_server-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| owui_mcp_server-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for owui_mcp_server-1.0.0-py3-none-any.whl |
Total release size: 32.7 kB
Release files / owui_mcp_server-1.0.0.tar.gz
| Download URL | owui_mcp_server-1.0.0.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f1972aaa4a409218f7df57fb8e6fc376623520213e0c449ce0f1c20a6027c8e
|
|
BLAKE2b-256 checksum How to use checksums |
0de3df9368c96ddb2ddef00027257b3e6aa761dde2a5162864d023112d6f1fc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|
Release files / owui_mcp_server-1.0.0-py3-none-any.whl
| Download URL | owui_mcp_server-1.0.0-py3-none-any.whl |
|---|---|
| Size | 15.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f6b3ca1fd793d82a47c3c24cda09d9bf628ea7234f87cafb441d31482396c339
|
|
BLAKE2b-256 checksum How to use checksums |
5179deed5f3e6ba9091d0402bf6d0cf5aa416804b7b1fbca49960405586abeef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|
Security for owui-mcp-server 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.