A lightweight, production-friendly Model Context Protocol (MCP) server for Mixpeek that:
- Auto-loads Mixpeek's OpenAPI spec and exposes endpoints as MCP tools
- Supports local and hosted use (bring-your-own API key)
- Injects AuthorizationandX-Namespaceheaders
- Includes rate limits, timeouts, and redacted logs
- Ships with Docker and simple configuration
- Install
Python (PyPI):
# global (recommended)
pipx install mixpeek-mcp
# or in a venv
python -m venv .venv && source .venv/bin/activate
pip install mixpeek-mcpnpm (Node):
# run once
npx @mixpeek/mcp
# or install globally
npm i -g @mixpeek/mcpHomebrew (macOS):
# tap and install (once the tap is live)
brew tap mixpeek/tap https://github.com/mixpeek/homebrew-tap
brew install mixpeek-mcp
# temporary local formula (dev/testing):
brew install --build-from-source Formula/mixpeek-mcp.rb- Configure (env or your MCP client secret store)
cp env.sample .env
# edit as neededEnv vars:
- MIXPEEK_API_KEY: Your Mixpeek API key (optional if endpoints don't require auth)
- MIXPEEK_API_BASE: Default- https://api.mixpeek.com
- MIXPEEK_OPENAPI_URL: Defaults to- <API_BASE>/openapi.json(or- /docs/openapi.json)
- MIXPEEK_NAMESPACE: Optional namespace value to send via- X-Namespace
- MCP_RATE_MAX_CALLS: Default- 20per- MCP_RATE_PER_SECONDS
- MCP_RATE_PER_SECONDS: Default- 10
- MCP_CONNECT_TIMEOUT: Default- 5
- MCP_READ_TIMEOUT: Default- 30
- Run locally (stdio)
# PyPI
mixpeek-mcp
# from source
python server.py
# npm
mixpeek-mcpYour MCP client (e.g., Claude Desktop) can attach to this server via stdio.
docker build -t mixpeek-mcp:latest .
docker run --rm -it \
  -e MIXPEEK_API_KEY=sk_... \
  -e MIXPEEK_NAMESPACE=your_namespace \
  mixpeek-mcp:latestOr pull and run (once published):
docker run --rm -it \
  -e MIXPEEK_API_KEY=sk_... \
  -e MIXPEEK_NAMESPACE=your_namespace \
  ghcr.io/mixpeek/mcp:latest- npm: @mixpeek/mcp→https://www.npmjs.com/package/@mixpeek/mcp
- PyPI: mixpeek-mcp→https://pypi.org/project/mixpeek-mcp/(publish pending)
- Docker Hub: mixpeek/mcp(pending push), GHCR:ghcr.io/mixpeek/mcp(pending push)
- Homebrew: mixpeek/tap/mixpeek-mcp(tap repo to be created)
We prepared registry.json compatible with the Official Docker MCP Registry. To submit:
- Fork the registry and create a new entry under the appropriate directory per their CONTRIBUTING guide.
- Include our registry.json(update Docker image reference if you publish under a different org/tag).
- Open a PR. Upon approval, it will appear in the MCP catalog and Docker Desktop's MCP Toolkit.
Required for write-protected endpoints:
- MIXPEEK_API_KEY:- Authorization: Bearer <key>
Optional:
- MIXPEEK_NAMESPACE: sets- X-Namespacefor isolation
- MIXPEEK_API_BASE: defaults to- https://api.mixpeek.com; testing:- https://server-xb24.onrender.com
- MIXPEEK_OPENAPI_URL: defaults to- <API_BASE>/openapi.json(or- /docs/openapi.json)
- MCP_RATE_MAX_CALLS/- MCP_RATE_PER_SECONDS: simple token bucket
- MCP_CONNECT_TIMEOUT/- MCP_READ_TIMEOUT: request timeouts
- Loads OpenAPI spec and maps GET/POST JSON endpoints to tools using operationId
- Tool arguments accept top-level query parameters or a query/bodyenvelope
- Forwards requests to Mixpeek with configured headers
- Provides small allowlist (configurable) and redacts secrets in logs
Unit tests:
pip install -r requirements.txt
pytest -qLive test (optional):
export LIVE_MIXPEEK_API_KEY=sk_...
export LIVE_MIXPEEK_OPENAPI_URL=https://server-xb24.onrender.com/docs/openapi.json
export LIVE_MIXPEEK_API_BASE=https://server-xb24.onrender.com
pytest -q tests/test_live_integration.py- This server uses MCP stdio transport and the official server interface, compatible with common MCP clients.
- Start the server, then point your MCP client to the stdio command (mixpeek-mcp).
- Mixpeek docs: https://docs.mixpeek.com/overview/introduction
- Mixpeek OpenAPI: https://api.mixpeek.com/docs/openapi.json
- MCP overview: https://modelcontextprotocol.io/docs/getting-started/intro
- For production hosting, front with HTTPS, add SSO/session issuance, per-tenant rate limits, and audit logs without bodies/headers. Keep local stdio as the default; hosted HTTP/SSE can be added later.
