Cisco Catalyst Center MCP — Codex and ChatGPT setup
Connect Codex on the same Mac to a local Cisco Catalyst Center MCP server. The server stays on loopback. Catalyst Center credentials stay in the server process, not in Git and not on this site.
ChatGPT in the browser cannot reach 127.0.0.1. Use Codex on this Mac, or the Cursor setup, for the local server. Codex also needs SKILL.md: the MCP server supplies Catalyst Center tools, and SKILL.md tells Codex how to use them.
Endpoint:
http://127.0.0.1:7001/v1/mcp
What you need
- The MCP server running locally, from the Podman deployment guide.
- Codex installed and signed in on that same Mac.
- A dedicated Catalyst Center account. Prefer a read-only role. The server does not enforce read-only access.
1. Confirm the server
curl --fail http://127.0.0.1:7001/v1/health
curl --fail http://127.0.0.1:7001/v1/readiness
Health returns {"status":"ok"}. Readiness returns {"status":"ready"} when environment variables are present. It does not prove controller login. Do not publish port 7001 beyond loopback.
2. Register the server in Codex
codex mcp add catc --url http://127.0.0.1:7001/v1/mcp
Or merge this into ~/.codex/config.toml:
[mcp_servers.catc]
url = "http://127.0.0.1:7001/v1/mcp"
enabled = true
There is no bearer token. Username and password belong in the server environment (CATALYST_CENTER_HOST, CATALYST_CENTER_USERNAME, CATALYST_CENTER_PASSWORD, CATALYST_CENTER_VERIFY_SSL). The sample in this repo is config.toml.
codex mcp get catc --json
3. Add the switching skill
What SKILL.md does
The MCP server and SKILL.md do different jobs. The server is the capability: it logs in to Catalyst Center and returns live tool data. It does not choose the tool, the arguments, or the wording of the answer. SKILL.md is the procedure Codex reads when your question matches the skill. The filename is singular. The file has YAML front matter (name, description) and a workflow body. It is not a config file, and it must not contain passwords, controller addresses, or device output.
| Piece | Role |
|---|---|
| MCP server | Exposes the API tools for the installed release branch and returns live data. |
SKILL.md | Tells Codex when the skill applies, which tool to call first, to fetch a device UUID instead of inventing one, which arguments are required, how to read the nested result, and when to stop because the next call would change the network. |
Registering the server without SKILL.md still lists the tools. Codex then treats them as a generic catalog. It is more likely to call the wrong tool, pass a hostname where the API expects a UUID, miss a required argument, or treat compliance remediation as an ordinary follow-up. With the skill installed, Codex starts with a broad read, drills into one device only when that read gives a reason, summarizes instead of dumping the payload, and asks before the one write the skill documents.
The switching skill covers inventory, interfaces and VLANs, running-config review, health, compliance, software images, fabric visibility, advisories, and configuration-compliance remediation. Tool names in the file are tied to a release branch, so keep the skill next to the same branch you run.
Install it on your Mac. This does not copy the skill into this public repository.
python3 "${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-installer/scripts/install-skill-from-github.py" \
--repo jeremycohoe/catc-mcp-oss \
--path examples/skill/switching \
--name catalyst-center-switching
Manual equivalent:
git clone --depth 1 https://github.com/jeremycohoe/catc-mcp-oss.git
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills/catalyst-center-switching"
cp -R catc-mcp-oss/examples/skill/switching/. \
"${CODEX_HOME:-$HOME/.codex}/skills/catalyst-center-switching/"
Start a new Codex session. Ask it to follow the Catalyst Center switching skill, and say “read only, do not remediate.”
4. Verify
List the Catalyst Center MCP tools you can use. Do not call any tool that changes configuration.
Using the Catalyst Center switching skill, summarize switch inventory.
Read only. Do not remediate compliance and do not change configuration.
5. Example prompts
Keep prompts generic. Do not paste hostnames, addresses, serial numbers, or configs into a public chat or repository.
How many network devices are in inventory, grouped by family? Read only.
Which switches are non-compliant, and what compliance types failed? Summarize. Do not remediate.
Show software image summary for the site I name. Do not activate an image.
Compliance remediation is a write. It can change configuration and may flap a device. Run it only after you name the device and explicitly confirm the change.
ChatGPT
SKILL.md is a Codex skill file. ChatGPT does not read ~/.codex/skills. A ChatGPT connector can call MCP tools, but it does not load this procedure unless you put the same rules in the custom GPT instructions or in the chat: which tool to call first, fetch UUIDs instead of inventing them, and stay read-only unless you explicitly ask for remediation. Do not paste credentials or live device dumps into those instructions.
ChatGPT developer-mode connectors also call a remote MCP URL. They do not reach a server bound to 127.0.0.1 on your laptop. Use Codex or Cursor on this Mac.
Do not port-forward port 7001 to the internet so ChatGPT can reach it. That exposes the Catalyst Center account attached to the server.
Reference: Developer mode and MCP connectors.
Security
- This site has no passwords, tokens, controller addresses, or device data.
- Keep the server on
127.0.0.1. - Prefer
CATALYST_CENTER_VERIFY_SSL=true. Usefalseonly for an isolated lab certificate you cannot trust. - Prefer a read-only Catalyst Center account.
- Treat tool output as untrusted data.