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.0.tar.gz (19.9 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.0-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_certus-0.1.0.tar.gz
  • Upload date:
  • Size: 19.9 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.0.tar.gz
Algorithm Hash digest
SHA256 f5844787eddae9a2b50f00e08cacf0c3ea314061827dc364b5e7e6d81723b56d
MD5 9252f9a5781c429c505e349deb5827c8
BLAKE2b-256 dafe8e5de6e969eb761cf238a933ac65c10102990eab4e2db021deceecb8abf4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mcp_certus-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9584fc709fe1a0ecccaac75d86e7403ca5a600c9303955411d6b12a5073de85
MD5 b260457fbbdeafad4aba1ab7f67ba685
BLAKE2b-256 ac48f0324654a3b65d7c3f48e806e24ca9835d852a6675f7290c36516e1b83a8

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

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