mcsiphon
Read-only MCP server for Cisco Unified CM 15 Trace Collection — wraps
the LogCollectionPortTypeService SOAP API so an LLM can list, select,
and fetch CUCM log files without needing RTMT.
Companion to mcp-cucm-axl (config) and mcp-cisco-docs (docs).
This one handles the operational telemetry.
What it exposes
| Tool | Purpose |
|---|---|
health |
Confirm CUCM connectivity + auth (calls getTimeZone under the hood) |
get_time_zone |
Server's TZ string |
list_node_service_logs |
Enumerate available services per cluster node |
select_log_files |
Find log files matching criteria — returns metadata only |
get_one_file |
Download one file; caches locally; returns path + preview |
render_sip_ladder |
One-shot: fetch SDL trace → preprocess to SIPL/SIPT → run RTMT's HTMLGenerator headlessly → return HTML+PNG ladder diagram. Requires RTMT_LADDER_SCRIPT and RTMT_TEMPLATE_DIR env vars. |
Read-only by structural guarantee — no selectLogFiles write parameters
exposed (SFTP push fields are wired off, never accept user input).
Setup
1. Configure environment
Edit .env:
TCT_BASE=https://cucm-pub.example.org:8443
TCT_USER=YourServiceAccount
TCT_PASS=YourPassword
TCT_VERIFY_TLS=false # set true if you've trusted the CUCM CA
2. Required CUCM RBAC
The service account needs both:
Standard CCM Admin Users— webapp baseline gate (without it, every request is HTTP 403 with no useful error)Standard RealtimeAndTraceCollection— operation-level grant
Grant via Access Control Group, not direct user-role assignment.
3. Run
uvx mcsiphon # if installed
# or from source:
uv run mcsiphon
4. Add to Claude Code
claude mcp add siphon "uvx mcsiphon"
Sample usage from an LLM
LLM: list_node_service_logs()
→ {"cucm-pub.example.org": {"ServiceLog": ["Cisco CallManager", ...], "SystemLog": [...]}, ...}
LLM: select_log_files(services=["Cisco CallManager"], minutes_back=5)
→ [{"node": "cucm-pub", "service": "Cisco CallManager",
"absolute_path": "/var/log/active/cm/trace/ccm/sdl/SDL001_100_000127.txt.gzo",
"size_bytes": "211561", "modified_date": "Sun Apr 26 00:23:22 MDT 2026"}]
LLM: get_one_file(absolute_path="/var/log/active/cm/trace/ccm/sdl/SDL001_100_000127.txt.gzo")
→ {"cache_path": "/home/user/.cache/mcsiphon/files/_var_log_..._SDL001_100_000127.txt.gzo",
"size_bytes": 6742501, "line_count": 56835,
"preview": "18047782.000 |00:23:18.222 |FileHead |..."}
See also
../rtmt/decompiled/docs/— wire protocol research notes that informed this implementation
Metadata
Release files for mcsiphon 2026.4.27.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 | |
|---|---|---|---|---|
| mcsiphon-2026.4.27.1.tar.gz | 101.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcsiphon-2026.4.27.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 122.7 kB
Release files / mcsiphon-2026.4.27.1.tar.gz
| Download URL | mcsiphon-2026.4.27.1.tar.gz |
|---|---|
| Size | 101.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2440572a5f22f3b0d60e3c1eeb1a940ef85bab01c27447dc589d1edb7451c7c4
|
|
BLAKE2b-256 checksum How to use checksums |
b6ad422c8644dc06f718d72f57b353cf5a704d624d2fe9ae7554729061ab9952
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mcsiphon-2026.4.27.1-py3-none-any.whl
| Download URL | mcsiphon-2026.4.27.1-py3-none-any.whl |
|---|---|
| Size | 20.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e21ff606c4ec76ea994972963079260b8a73d98bc866761604e73d86550d7744
|
|
BLAKE2b-256 checksum How to use checksums |
154a49f6abdc9d4fe41e00275cd92904f26eed884ac4ad61a5639d9a02c36673
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for mcsiphon 2026.4.27.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.