Skip to main content

Certus MCP

MCP server that exposes the Certus Certificate Management Service to agents (Claude / Cursor). Talks only to Certus. Use ServiceNEX MCP separately for tickets/incidents.

Item Value
PyPI mcp-certus
Console script mcp-certus
Python >=3.10

Install

pip install mcp-certus

Configure and run

export CERTUS_API_BASE="http://127.0.0.1:8080"
export LOG_LEVEL="INFO"
mcp-certus

(CMS_BASE is accepted as an alias for CERTUS_API_BASE.)

Cursor / Claude Desktop

{
  "mcpServers": {
    "certus": {
      "command": "mcp-certus",
      "env": {
        "CERTUS_API_BASE": "http://127.0.0.1:8080",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

Development setup

cd certus-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
# or: pip install -r requirements.txt

.env:

CERTUS_API_BASE=http://127.0.0.1:8080
LOG_LEVEL=INFO

Start Certus first, then:

mcp-certus
# or: python -m app.server

Tools (by Certus domain)

Module Tools
certificates list_cert_inventory, get_cert
ca create_ca_order, get_ca_order, get_ca_certificate
secrets put_secret, get_secret
runbooks find_runbook, list_runbook_runs
deployments create_deployment, get_deployment, get_deployment_logs
verify verify_endpoint
scenario certus_health, get_scenario, set_scenario, reset_mock
playbook get_cert_renewal_playbook, render_renewal_pipeline

Prompts

Prompt Purpose
cert_renewal_flow Full renewal loop with ServiceNEX parent/child tickets

For natural language (e.g. “Run cert renewal”), Claude should call get_cert_renewal_playbook first — same content and ServiceNEX templates as the Connector prompt — then execute the flow. During the run it should call render_renewal_pipeline at each stage and show the returned board/mermaid in chat.

Agent flow (cert_renewal_flow / get_cert_renewal_playbook)

Requires Certus MCP + ServiceNEX MCP. For each inventory cert with status: "expiring":

  1. DETECT — list_cert_inventory, filter expiring
  2. Parent ticket — ServiceNEX create_ticket from the cert object
  3. RENEW — create_ca_order → poll get_ca_order → get_ca_certificate
    • success → comment parent
    • fail → child ticket → stop this cert
  4. RUNBOOK — find_runbook(tls-server, target) → list_runbook_runs
    • success history → comment parent
    • else → child ticket → stop this cert
  5. EXECUTE — create_deployment with certRef=certs/<cn> → poll get_deployment → get_deployment_logs
    • success → comment parent (include logs)
    • fail → child ticket with remediation from logs → stop this cert

Then continue with the next expiring cert. Skip put_secret and verify_endpoint unless asked.

Polling advances Certus mocks — call get_* again; do not sleep on wall clock.

Publish to PyPI

See the sibling guide pattern in lmsnex-mcp-server/docs/PUBLISH_PYPI.md. Short version:

python3 -m venv .venv && source .venv/bin/activate
pip install -U build twine
rm -rf dist/ build/ *.egg-info
python -m build && twine check dist/*
# TestPyPI first, then:
python -m twine upload --repository testpypi dist/*
python -m twine upload dist/*

Metadata

Release files for mcp-certus 0.1.1

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

Source distribution (sdist)

Source distribution for mcp-certus 0.1.1
File Size Uploaded Provenance Actions
mcp_certus-0.1.1.tar.gz 20.1 kB Without provenance Details for mcp_certus-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mcp-certus 0.1.1
File Interpreter ABI Platform Actions
mcp_certus-0.1.1-py3-none-any.whl Python 3 none any Details for mcp_certus-0.1.1-py3-none-any.whl

Total release size: 42.8 kB

Release files / mcp_certus-0.1.1.tar.gz

Download URL mcp_certus-0.1.1.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6c0fdcdbac22e6740057c44bc41c71cd6a505efe8d47dbc47d54c0c09e3f6f80
BLAKE2b-256 checksum
How to use checksums
5760d144386fb8215ec5928a32355bdf1984a2d5c64028136238514da92839df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Release files / mcp_certus-0.1.1-py3-none-any.whl

Download URL mcp_certus-0.1.1-py3-none-any.whl
Size 22.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9f262ec2557d721fdae6e90d9cf6762c80c5dd0242efa4423a3b45d703e66e6
BLAKE2b-256 checksum
How to use checksums
8b0a0b7de1f936b214056a3841ae13e974c4d807ef97d557d9c3c95d6c43dd3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.9

Security for mcp-certus 0.1.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.1 This release

2 release files No 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