Xplainable MCP Server
A Model Context Protocol server for the Xplainable platform. It lets an LLM agent (Claude, or any MCP client) train, deploy, optimise, and explain transparent machine-learning models. The agent is the orchestrator: it inspects the data, decides features and preprocessing, trains, reads the metrics, and iterates.
Training always runs server-side on the Xplainable platform — the MCP host never fits a model locally.
Two Ways to Use It
- Hosted — connect your MCP client to
https://mcp.xplainable.io(OAuth login, no installation). - Local — run the server yourself over stdio with an Xplainable API key. This is what the rest of this README covers.
Quick Start (Local)
1. Get an API key
Create one at platform.xplainable.io.
2a. Claude Code
claude mcp add xplainable \
-e XPLAINABLE_API_KEY=your-api-key-here \
-- uvx --from git+https://github.com/xplainable/xplainable-mcp-server.git xplainable-mcp
2b. Claude Desktop
Add to your MCP settings file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"xplainable": {
"command": "uvx",
"args": ["--from", "git+https://github.com/xplainable/xplainable-mcp-server.git", "xplainable-mcp"],
"env": {
"XPLAINABLE_API_KEY": "your-api-key-here"
}
}
}
}
No uv? Clone and install instead:
git clone https://github.com/xplainable/xplainable-mcp-server.git
cd xplainable-mcp-server
python -m venv .venv && source .venv/bin/activate
pip install -e .
then use "command": "/path/to/xplainable-mcp-server/.venv/bin/xplainable-mcp"
(no args) in the config above.
3. Try it
Ask your agent: "What models and datasets do I have?" — it should call
models_list_team_models and datasets_list_team_datasets.
The Iterate Loop
The tool surface puts the agent in control of every training decision:
datasets_list_team_datasets/models_list_team_models/deployments_list_deployments— see the team's assetsdatasets_preview_dataset_json(dataset_id)— inspect columns, types, and sample rows; decide the target, columns to drop, and whether preprocessing is needed- (Optional)
preprocessing_list_available_transformers→preprocessing_create_preprocessor_from_spec→preprocessing_preview_from_datato verify transformed output models_train_model(dataset_id, target_column, model_name, ...)— synchronous server-side training; returns model/version IDs, train/test metrics, and feature importances- Inspect:
models_get_feature_info/gpt_explain_model; compare train vs test metrics - Iterate:
models_refit_modelfor hyperparameter tuning, or train again with different features / preprocessing deployments_deploy(version_id)— deploy once satisfied (thendeployments_activate_deployment)- Act on the model:
inference_predict/optimisers_run_optimiser/reports_create_report(+ pollreports_get_job_status)
Tool Surface
Tools are generated at server startup from @mcp_tool-decorated methods
in the xplainable-client
package — there are no checked-in generated files. The surface is flat:
every registry tool is exposed, with MCP annotations derived from its
category (read → read-only hint, write → destructive hint).
Configuration
| Variable | Required | Description |
|---|---|---|
XPLAINABLE_API_KEY | yes (local) | API key from platform.xplainable.io |
XPLAINABLE_HOST / XPLAINABLE_HOSTNAME | no | Platform host override (defaults to https://platform.xplainable.io). Set both to the same value. |
XPLAINABLE_ORG_ID / XPLAINABLE_TEAM_ID | no | Org/team binding, if your API key is not bound to a team |
MCP_TRANSPORT | no | stdio (default) or streamable-http |
LOG_LEVEL | no | DEBUG, INFO (default), WARNING, ERROR |
See .env.example. The API key is read from the environment only and is never exposed through a tool.
CLI
xplainable-mcp-cli list-tools # list all available tools
xplainable-mcp-cli validate-config # check env configuration
xplainable-mcp-cli test-connection # test API connectivity
xplainable-mcp-cli generate-docs # generate tool documentation
Docker (HTTP mode)
cp .env.example .env # fill in your API key
docker compose up --build
The container serves streamable-HTTP on port 8000 with a /health
endpoint. For anything beyond localhost, terminate TLS at a reverse proxy.
Development
git clone https://github.com/xplainable/xplainable-mcp-server.git
cd xplainable-mcp-server
pip install -e ".[dev]"
pytest # run tests
ruff check . # lint
Runtime tool generation
Client-backed tools are generated at import time by
xplainable_mcp/runtime_tools.py from the @mcp_tool registry in
xplainable-client — there is no sync step. Upgrading the pinned
xplainable-client version is all it takes to pick up new or changed
tools; the test suite (tests/test_surface.py) pins the tool count so
surface changes are always deliberate.
Compatibility
| MCP Server | xplainable-client | fastmcp |
|---|---|---|
| current (main) | >=1.13.0 | >=2.0.0,<3.0.0 |
Contributing
See CONTRIBUTING.md.
License
MIT License — see LICENSE.