Skip to main content

kervo-mcp

MCP server for the Kervo public API. It runs locally over stdio, so any MCP client (Claude Desktop, Cursor, VS Code…) can read and change your Kervo organization with the permissions of a service account API key.

At startup it downloads the OpenAPI schema from your Kervo instance and creates one tool per operation, so new API endpoints show up without upgrading this package. Only the tools allowed by the key's scopes are listed.

Requirements

  • uv (for uvx) or Python 3.10+.
  • A Kervo organization whose plan includes the public API.
  • A service account API key (kvo_…), created in Organization › Integrations.

Configuration

Variable Required Default Description
KERVO_API_KEY yes — Service account key (kvo_<prefix>_<secret>).
KERVO_API_URL no https://api.kervo.app/public/v1 Public API base URL (self-hosted instances). Must be https:// (plain http:// only for localhost).
KERVO_MCP_LOG no info info or debug. Logs go to stderr only (stdout is the MCP channel).

Replace <paste your kvo_ key here> with your key in the examples below.

Claude Desktop

Settings › Developer › Edit Config opens claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows). Restart Claude Desktop after saving.

{
  "mcpServers": {
    "kervo": {
      "command": "uvx",
      "args": ["kervo-mcp"],
      "env": {
        "KERVO_API_URL": "https://api.kervo.app/public/v1",
        "KERVO_API_KEY": "<paste your kvo_ key here>"
      }
    }
  }
}

The same mcpServers block works in:

  • Antigravity — ~/.gemini/config/mcp_config.json (agent panel › MCP Servers › View raw config) or .agents/mcp_config.json in the workspace.
  • Gemini CLI — ~/.gemini/settings.json or .gemini/settings.json in the project.
  • Windsurf / Devin Desktop — ~/.config/devin/mcp_config.json (%APPDATA%\devin\ on Windows).
  • Cursor — ~/.cursor/mcp.json or .cursor/mcp.json in the project; add "type": "stdio" to the kervo entry.

Claude Code

claude mcp add --env "KERVO_API_URL=https://api.kervo.app/public/v1" --env "KERVO_API_KEY=<paste your kvo_ key here>" --transport stdio --scope user kervo -- uvx kervo-mcp

VS Code

.vscode/mcp.json. VS Code asks for the key when the server starts and stores it encrypted, so it never goes into the file:

{
  "inputs": [
    { "type": "promptString", "id": "kervo-api-key", "description": "Kervo API key (kvo_…)", "password": true }
  ],
  "servers": {
    "kervo": {
      "type": "stdio",
      "command": "uvx",
      "args": ["kervo-mcp"],
      "env": {
        "KERVO_API_URL": "https://api.kervo.app/public/v1",
        "KERVO_API_KEY": "${input:kervo-api-key}"
      }
    }
  }
}

Codex

~/.codex/config.toml (or codex mcp add kervo --env KERVO_API_KEY=… -- uvx kervo-mcp):

[mcp_servers.kervo]
command = "uvx"
args = ["kervo-mcp"]

[mcp_servers.kervo.env]
KERVO_API_URL = "https://api.kervo.app/public/v1"
KERVO_API_KEY = "<paste your kvo_ key here>"

Zed

Run zed: open settings file and add under context_servers:

{
  "context_servers": {
    "kervo": {
      "command": "uvx",
      "args": ["kervo-mcp"],
      "env": {
        "KERVO_API_URL": "https://api.kervo.app/public/v1",
        "KERVO_API_KEY": "<paste your kvo_ key here>"
      }
    }
  }
}

Troubleshooting

If the client cannot start uvx (spawn uvx ENOENT, common in desktop apps on macOS), use the full path printed by which uvx as command.

Security

  • The agent acts as the service account and only sees what it sees. Use a dedicated key with the smallest scopes that do the job (read-only when possible) and an expiration date.
  • The key lives in your MCP client's config file; keep that file private and never commit it.
  • This package never writes the key to disk or logs, and never logs tool arguments.
  • Task contents are data written by people: the server tells the model never to follow instructions found in them, but review destructive actions your agent proposes.

Exit codes

  • 2 — invalid configuration (missing or malformed key, bad URL).
  • 1 — startup failed (schema unreachable, invalid or revoked key, plan without the public API).

Development

The code lives in backend/kervo_mcp/ of the Kervo repository (shared with the remote connector). Build the wheel with python -m build --wheel packaging/kervo-mcp from backend/; only the wheel is published (the build pulls the modules from ../../kervo_mcp). Releases are tagged kervo-mcp-v<version>, matching kervo_mcp.__version__.

Metadata

Release files for kervo-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for kervo-mcp 0.1.0
File Interpreter ABI Platform
kervo_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Release files / kervo_mcp-0.1.0-py3-none-any.whl

Download URL kervo_mcp-0.1.0-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c02ff1eebb14bdcaa4789d591e97b3142dd4c067d1127ea99a947f4ff1d56dc0
BLAKE2b-256 checksum
How to use checksums
d9ecbb8c5726f9d6ac58be1a631a77c8f2b6d9ff8a77671fa48d9b2fe41b540a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Security for kervo-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 1 file in this release has been uploaded with provenance metadata.

Attestation for kervo_mcp-0.1.0-py3-none-any.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page