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":
- DETECT —
list_cert_inventory, filterexpiring - Parent ticket — ServiceNEX
create_ticketfrom the cert object - RENEW —
create_ca_order→ pollget_ca_order→get_ca_certificate- success → comment parent
- fail → child ticket → stop this cert
- RUNBOOK —
find_runbook(tls-server, target)→list_runbook_runs- success history → comment parent
- else → child ticket → stop this cert
- EXECUTE —
create_deploymentwithcertRef=certs/<cn>→ pollget_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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.