MCP Explorer Frontend ā Vue 3 + Vite + PrimeVue UI for mcp-explorer-x (docker-compose deployment)
10K+
A modern MCP (Model Context Protocol) and HTTP API explorer ā browse tools, prompts, resources, invoke HTTP APIs, and chat with LLMs over live MCP connections. Built with a Vue 3 / Vite / PrimeVue frontend and an ASP.NET Core 10 backend, with a companion .NET CLI for scripted HTTP API and YAML runbook workflows.
š Full Documentationā ā user guide, feature reference, and configuration
| Image | Description |
|---|---|
garrardkitchen/mcp-explorer-x | Single container ā gateway + API bundled; simplest way to run |
garrardkitchen/mcp-explorer-x-api | API only ā for docker-compose separate-services deployments |
garrardkitchen/mcp-explorer-x-frontend | Frontend (nginx) only ā for docker-compose separate-services deployments |
dataRoot="$HOME/.config/McpExplorerX-docker"
docker run -d \
-p 8091:8080 \
-v "${dataRoot}:/root/.local/share/McpExplorer" \
-e PREFERENCES__StoragePath=/data/settings.json \
-e ASPNETCORE_ENVIRONMENT=Production \
garrardkitchen/mcp-explorer-x:latest
Open http://localhost:8091ā in your browser.
dataRoot="$HOME/.config/McpExplorerX-docker"
docker run -d \
-p 8091:8080 \
-v "${dataRoot}:/root/.local/share/McpExplorer" \
-v ~/.azure:/root/.azure \
-e AZURE_CONFIG_DIR=/root/.azure \
-e HOST_AZURE_CONFIG_DIR=${HOME}/.azure \
-e PREFERENCES__StoragePath=/data/settings.json \
-e ASPNETCORE_ENVIRONMENT=Production \
garrardkitchen/mcp-explorer-x:latest
curl -O https://raw.githubusercontent.com/garrardkitchen/mcp-explorer-x/main/.env.example
cp .env.example .env
docker-compose.yml:name: mcp-explorer
services:
api:
image: garrardkitchen/mcp-explorer-x-api:latest
restart: unless-stopped
env_file: .env
environment:
- ASPNETCORE_URLS=http://+:5000
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Production}
- PREFERENCES__StoragePath=${PREFERENCES__StoragePath:-/data/settings.json}
- AZURE_CONFIG_DIR=/root/.azure
volumes:
- ${MCP_DATA_PATH:-mcp-data}:/data
- ${HOST_AZURE_CONFIG_DIR:-azure-config-empty}:/root/.azure
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:5000/healthz"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- internal
frontend:
image: garrardkitchen/mcp-explorer-x-frontend:latest
restart: unless-stopped
ports:
- "${GATEWAY_PORT:-8090}:8080"
depends_on:
api:
condition: service_healthy
networks:
- internal
volumes:
mcp-data:
azure-config-empty:
networks:
internal:
driver: bridge
docker compose up -d
Open http://localhost:8090ā in your browser.
If you plan to use the Dev Tunnels feature to expose webhook callbacks publicly, sign the API container into Microsoft Dev Tunnels once. The credential persists in the devtunnels-cli Docker volume, so every future tunnel you create from the UI will start with zero friction ā no device-code dialog.
./scripts/devtunnel-login.sh
The script runs devtunnel user login --use-device-code-auth inside the api container: open the URL it prints, enter the code, and you're done. Skipping this step is fine ā the app will fall back to showing an in-app login dialog the first time you click Start on a tunnel.
mcp-http) ā Script HTTP API invoke/compare/history, YAML runbook validate/execute (MCP + HTTP), and definition import/export from terminal automationaz login| Variable | Default | Description |
|---|---|---|
ASPNETCORE_ENVIRONMENT | Production | Runtime environment ā controls logging verbosity and error detail. Values: Development | Staging | Production |
ASPNETCORE_URLS | http://+:5000 | URL(s) the API listens on inside the container. Do not change unless you also change the port mapping. |
AppMetadata__Version | 0.5.0 | Version string returned by GET /api/v1/info and shown in the UI footer. |
MCP_CLIENT_NAME | mcp-explorer | Client name sent to MCP servers during the protocol handshake and included in the User-Agent header. |
| Variable | Default | Description |
|---|---|---|
MCP_DATA_PATH | (named volume) | Host directory containing persisted app data (settings.json plus HttpApis/* definition/history files). Mount this to persist data across restarts. macOS: /Users/<you>/Library/Application Support/McpExplorer |
PREFERENCES__StoragePath | /data/settings.json | Path to settings.json inside the container. Only change if you customise the volume target. |
| Variable | Default | Description |
|---|---|---|
HOST_AZURE_CONFIG_DIR | (empty) | Absolute path to your host ~/.azure directory. Mounted into the container so the API can use your existing az login session. Leave empty to skip ā Azure features show "not connected" but everything else still works. |
AZURE_CONFIG_DIR | /root/.azure | Path to the .azure directory inside the container. Set automatically when HOST_AZURE_CONFIG_DIR is provided ā do not change. |
| Variable | Default | Description |
|---|---|---|
LlmService__OpenAiBaseUrl | https://api.openai.com/v1 | Base URL for OpenAI-compatible APIs (OpenAI, Azure OpenAI, local proxies). |
LlmService__AzureApiVersion | 2024-02-15-preview | Azure OpenAI REST API version used in the ?api-version= query parameter. |
LlmService__MaxRetryAttempts | 3 | Maximum retry attempts for a failed LLM request. |
LlmService__TimeoutSeconds | 30 | Seconds to wait for an LLM response before timing out. |
| Variable | Default | Description |
|---|---|---|
ToolInvoke__TimeoutSeconds | 300 | Seconds to wait for a single MCP tool call to complete. Increase for slow or long-running tools. 0 = no timeout. |
ToolInvoke__MaxRetryAttempts | 2 | Maximum automatic retry attempts when a tool call fails due to a dropped connection. |
| Variable | Default | Description |
|---|---|---|
Elicitation__TimeoutSeconds | 0 | Seconds to wait for a user to respond to an elicitation dialog. 0 = wait indefinitely (recommended for interactive use). |
| Variable | Default | Description |
|---|---|---|
GATEWAY_PORT | 8090 | Host port the frontend is exposed on. Access the app at http://localhost:<GATEWAY_PORT>. |
ReverseProxy__Clusters__api-cluster__Destinations__api__Address | http://api:5000/ | YARP cluster destination. Routes /api/* to the API service over the internal Docker network. Only needed in multi-container deployments. |
These are baked into the static JS bundle at image build time and cannot be changed at runtime.
| Variable | Default | Description |
|---|---|---|
VITE_API_BASE_URL | (empty) | Base URL the browser uses to reach the API. Empty = same origin through the gateway (recommended). Override only when the API is on a different origin, e.g. http://localhost:5000. |
VITE_APP_VERSION | 0.5.0 | App version displayed in the UI footer. |
Content type
Image
Digest
sha256:2b0d80e95ā¦
Size
26.8 MB
Last updated
2 months ago
docker pull garrardkitchen/mcp-explorer-x-frontend