3b88badd60761f9f19f06d31f61f7e61116ee82e
MCP Servers for Open WebUI
Deployed: 2026-07-15 Status: Live on app1 (152.53.36.131) Docker compose: /root/docker/litellm/docker-compose.yml
Fleet
| MCP | Port | Tools | Description |
|---|---|---|---|
| Super Search | :8899 | 10 | Web search, extract, news, academic, images, lookup |
| Browser | :8901 | 5 | Screenshots, JS execute, click, extract, browse |
| Filesystem | :8900 | 5 | List, read, write, search, create dir |
| :8902 | 3 | Send, inbox, search | |
| Git/Gitea | :8903 | 4 | List repos, search, browse, read files |
Architecture
All MCPs run as Docker services alongside LiteLLM on app1, sharing the litellm-net network.
Wired into Open WebUI via tool_server.connections in SQLite.
Access
In Open WebUI
All MCPs are wired into Open WebUI at http://ai.itpropartner.com (or https://admin-ai.itpropartner.com/ui). They appear as tools available to the AI model — no separate login needed once you're in Open WebUI.
The connections are stored in SQLite at:
/var/lib/docker/volumes/openwebui_data/_data/webui.db → config.key = 'tool_server.connections'
Each connection is a JSON object in the array:
{
"url": "http://host.docker.internal:8899/mcp",
"type": "mcp",
"auth_type": "none",
"info": {"name": "Super Search (MCP)", "description": "..."},
"config": {"enable": true}
}
Adding a new MCP to Open WebUI
- Build and start the MCP service in
/root/docker/litellm/docker-compose.yml(map to127.0.0.1:<port>on app1) - Insert the connection into the SQLite DB:
ssh app1 "sqlite3 /var/lib/docker/volumes/openwebui_data/_data/webui.db \
\"UPDATE config SET value = json_insert(value, '\$[#]', json_object(
'url', 'http://host.docker.internal:PORT/mcp',
'type', 'mcp',
'auth_type', 'none',
'config', json_object('enable', true),
'info', json_object('name', 'NAME', 'description', 'DESC')
)) WHERE key = 'tool_server.connections';\""
- Restart Open WebUI:
cd /root/docker/litellm && docker compose restart openwebui - Verify in admin-ai UI → Workspace → Tools
Direct MCP access (testing)
All MCPs are reachable on app1's loopback. From app1:
# List tools
curl http://127.0.0.1:8899/mcp # Super Search
curl http://127.0.0.1:8901/mcp # Browser
curl http://127.0.0.1:8900/mcp # Filesystem
curl http://127.0.0.1:8902/mcp # Email
curl http://127.0.0.1:8903/mcp # Git/Gitea
From Core (Hermes), MCPs are accessed via the admin-ai proxy URL https://admin-ai.itpropartner.com/mcp (not direct loopback).
Recovery
cd /root/docker/litellm && docker compose up -d