Deployment and operations#

Local stdio#

The default CLI transport is suitable for a local MCP client that launches the server as a subprocess:

python -m scikitplot.mcp

In this mode the process waits for an MCP client on standard input/output. Use --self-test when you only want to validate corpus/retrieval behavior.

Local HTTP#

Use Streamable HTTP when a local service needs an HTTP endpoint:

python -m scikitplot.mcp --transport streamable-http

The default local endpoints are http://127.0.0.1:8000/mcp and http://127.0.0.1:8000/healthz. --probe checks the lightweight health endpoint; --self-test is the stronger retrieval/corpus check. A healthy HTTP route does not prove that the intended corpus is loaded or that search quality is correct.

Docker#

--docker selects container-oriented defaults. For local development, publish the container port only on host loopback when possible:

docker run --rm -p 127.0.0.1:8000:8000 scikitplot-mcp:latest

The Docker profile does not provide authentication, authorization, TLS, firewall policy, or per-user quotas. For production images install a built wheel in a clean runtime stage rather than relying on an editable source-tree install.

Remote/team clients#

Treat remote MCP like any other network service:

MCP client
   |
   v
authenticated TLS proxy / gateway
   |
   v
private scikitplot.mcp service
   |
   v
read-only retriever

Use identity, authorization, TLS, firewall/private-network policy, request and concurrency limits, secret-safe logging, and an explicit corpus/runtime update process. The CLI refuses an ordinary unauthenticated non-local bind unless the operator makes that choice explicitly; that override is not a substitute for a production security layer.

Operational controls#

Common controls include host/port/path, health path, maximum concurrency, request-body limits, stateful HTTP, and log level. Keep those deployment controls separate from retrieval parameters such as k or hybrid-fusion weights.