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. DETECTlist_cert_inventory, filter expiring
  2. Parent ticket — ServiceNEX create_ticket from the cert object
  3. RENEWcreate_ca_order → poll get_ca_orderget_ca_certificate
    • success → comment parent
    • fail → child ticket → stop this cert
  4. RUNBOOKfind_runbook(tls-server, target)list_runbook_runs
    • success history → comment parent
    • else → child ticket → stop this cert
  5. EXECUTEcreate_deployment with certRef=certs/<cn> → poll get_deploymentget_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/*

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_certus-0.1.1.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_certus-0.1.1-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_certus-0.1.1.tar.gz.

File metadata

  • Download URL: mcp_certus-0.1.1.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.9

File hashes

Hashes for mcp_certus-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6c0fdcdbac22e6740057c44bc41c71cd6a505efe8d47dbc47d54c0c09e3f6f80
MD5 e46ef2a43656e2aac5af81ea86462e1f
BLAKE2b-256 5760d144386fb8215ec5928a32355bdf1984a2d5c64028136238514da92839df

See more details on using hashes here.

File details

Details for the file mcp_certus-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_certus-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.9

File hashes

Hashes for mcp_certus-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a9f262ec2557d721fdae6e90d9cf6762c80c5dd0242efa4423a3b45d703e66e6
MD5 f66037f188c8f4fe9e120ada43f0ba8a
BLAKE2b-256 8b0a0b7de1f936b214056a3841ae13e974c4d807ef97d557d9c3c95d6c43dd3c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

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