Channels MCP Server
Allows searching for related incidents, creating LINFRA tickets, and adding comments to tickets in Jira.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Channels MCP Serverinvestigate cha3.abn.green.sophos"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Channels MCP Server
An MCP (Model Context Protocol) server for investigating and managing Sophos Channel Server incidents. Works with any AI tool that supports MCP — Kiro, Claude Desktop, Cursor, Cline, Windsurf, etc.
Overview
This MCP server enables AI assistants to autonomously investigate channel server incidents by:
Connecting to channel servers via SSH and reading logs, status files, and system state (read-only, no destructive commands)
Checking Zabbix for active alerts and acknowledging them with proper ticket references
Searching Jira for related past incidents and upstream dependencies (e.g., antispam-publishing outages)
Pattern matching — automatically identifies known root causes:
block_repeat_tarballs→ upstream antispam-publishing server is downdisable_akamai_rsyncs→ intentional DR setup, suppress alertChannels overdue by millions of minutes → decommissioned, suppress
eicar.msgmissing → AV deleted test file from old RPM, suppresstraffix.labs.sophosunreachable → dead DB dependency, suppresslarge_file_alert→ files over 3GB need rotation/compression
Creating LINFRA tickets with categorized findings and proper documentation
Following SOP — knows BOS=DR=P4, ABN=Primary=P3, and to check antispam-publishing first when multiple alerts fire
What problem does this solve?
Channel server alerts often require manual SSH investigation, cross-referencing Jira for past incidents, checking upstream dependencies, and documenting findings. This MCP automates the entire workflow — the AI connects, investigates, correlates, and documents in minutes instead of hours.
Related MCP server: SSH MCP Server
Prerequisites
Before setting up, you need:
SSH access to channel servers (your key must be authorized on the servers)
Zabbix API token from https://zabbix.sophosapps.com (User Settings → API Tokens)
Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens
Node.js 18+ installed on your machine
Quick Start
1. Clone and install
git clone https://github.com/pavanbhatt19/labs.platform-infra.channels-mcp.git
cd labs.platform-infra.channels-mcp
npm installNo build step needed — dist/ is pre-built and included in the repo.
2. Load your SSH key
ssh-add ~/.ssh/id_rsaVerify it's loaded: ssh-add -l
3. Add to your AI tool's MCP config
SSH_AUTH_SOCK is auto-detected on macOS — you don't need to set it manually. The MCP will find your SSH agent socket automatically as long as your key is loaded with ssh-add.
Kiro (~/.kiro/settings/mcp.json):
{
"mcpServers": {
"channels": {
"command": "node",
"args": ["/full/path/to/labs.platform-infra.channels-mcp/dist/index.js"],
"env": {
"SSH_USERNAME": "your_ssh_username",
"ZABBIX_URL": "https://zabbix.sophosapps.com",
"ZABBIX_API_TOKEN": "your_zabbix_api_token",
"ATLASSIAN_HOST": "https://sophos.atlassian.net",
"ATLASSIAN_EMAIL": "your.name@sophos.com",
"ATLASSIAN_API_TOKEN": "your_atlassian_api_token"
}
}
}
}Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"channels": {
"command": "node",
"args": ["/full/path/to/labs.platform-infra.channels-mcp/dist/index.js"],
"env": {
"SSH_USERNAME": "your_ssh_username",
"ZABBIX_URL": "https://zabbix.sophosapps.com",
"ZABBIX_API_TOKEN": "your_zabbix_api_token",
"ATLASSIAN_HOST": "https://sophos.atlassian.net",
"ATLASSIAN_EMAIL": "your.name@sophos.com",
"ATLASSIAN_API_TOKEN": "your_atlassian_api_token"
}
}
}
}Cursor/Cline — same format, add to your MCP settings.
4. Test it
Ask your AI: "List all channel servers" or "Investigate cha3.abn.green.sophos"
Configuration Reference
Variable | Required | How to get it |
| Yes | Your SSH username for channel servers (e.g., |
| No (auto-detected) | Auto-detected on macOS. Only set manually if auto-detection fails. |
| Optional | Alternative to SSH agent: path to your key (e.g., |
| Optional | Passphrase for the private key (if using SSH_PRIVATE_KEY_PATH) |
| Yes |
|
| Yes | Zabbix → User Settings → API Tokens → Create |
| Yes |
|
| Yes | Your Sophos email (e.g., |
| Yes | https://id.atlassian.com/manage-profile/security/api-tokens → Create |
Important Notes
SSH Authentication
SSH_AUTH_SOCKis auto-detected on macOS — the MCP scans/var/run/com.apple.launchd.*to find the agent socket automaticallyYou do NOT need to hardcode it in the config (it changes on every reboot anyway)
Just make sure your key is loaded:
ssh-add ~/.ssh/id_rsabefore using the MCPVerify your key is loaded: Run
ssh-add -l— you should see your key listed. If it says "The agent has no identities", runssh-add ~/.ssh/id_rsafirstThe MCP connects as your SSH user and all commands run as the
channeluser viasudo su - channel -c "..."
Pre-flight Check
Before your first use, confirm everything is ready:
# 1. Is your SSH key loaded?
ssh-add -l
# Should show your key. If not: ssh-add ~/.ssh/id_rsa
# 2. Can you SSH to a channel server manually?
ssh your_username@cha3.abn.green.sophos
# Should connect without password prompt. If not, your key isn't authorized on the server.
# 3. Is Node.js installed?
node --version
# Should be 18+How Kiro/Claude Desktop starts the MCP
You do NOT run
npm run devornode dist/index.jsmanuallyYour AI tool (Kiro, Claude Desktop, etc.) reads the MCP config and starts the server process itself
After updating the config, restart your AI tool or reconnect MCP servers (Kiro: command palette → "MCP: Reconnect Servers")
If the MCP doesn't appear in your tool list, check the MCP server panel for errors
After git pull
If you pull new changes, rebuild the dist:
git pull
npm run buildThen restart your AI tool or reconnect MCP servers.
Command Safety
All SSH commands are enforced to run as the channel user. The following commands are blocked and will throw an error:
Package management:
yum,rpm install,apt,dnf,pipFile deletion:
rm,rmdirService control:
systemctl,service,kill,rebootFile manipulation:
mv,cp,chmod,chownEditors:
vi,vim,nanoChannel updates:
chwatcher,chupdate(investigation only, no modifications)
Read-only commands are allowed: tail, cat, ls, find, stat, grep, df, ps, python (for JSON parsing)
Available Tools
Tool | What it does | Safe? |
| Full auto-investigation: connects via SSH, reads all status JSONs, pattern matches, returns categorized findings | ✅ Read-only |
| Read latest chan.log entries for a specific channel path | ✅ Read-only |
| Check Jira for active antispam-publishing incidents (most common root cause) | ✅ Read-only |
| Get all active Zabbix alerts for a server | ✅ Read-only |
| Find files over 500MB that may trigger large_file_alert | ✅ Read-only |
| List all 13 channel servers with roles, priorities, Zabbix IDs | ✅ Read-only |
| Search Jira for past similar incidents | ✅ Read-only |
| Acknowledge Zabbix alerts with a message | ⚠️ Write |
| Create a LINFRA Jira ticket | ⚠️ Write |
| Add a comment to an existing Jira ticket | ⚠️ Write |
Safety
This MCP is designed to be safe by default:
All SSH commands are read-only (
tail,cat,ls,stat,find,grep,pythonfor JSON parsing)NEVER runs:
yum,rpm install,rm,service restart, config changesWrite operations (Zabbix ack, Jira tickets) require explicit tool calls — AI won't do these without your approval
Usage Examples
Just ask your AI naturally:
"Investigate cha3.abn.green.sophos — we have alerts firing"
"Check if antispam-publishing is down"
"What are the active problems on cha7.bos.green.sophos?"
"Check the chan.log for /home/channel/channels/as/2.7.2.376379/b2/data on cha3.abn"
"Are there any large files on pmuedge.abn.green.sophos?"
"Search for past incidents related to block_repeat_tarballs"
"Create a LINFRA ticket for the dead channels on cha3.bos"
Channel Servers
Server | Role | Priority | Notes |
cha1.abn.green.sophos | Primary (ABN) | P3 | |
cha2.abn.green.sophos | Primary (ABN) | P3 | |
cha3.abn.green.sophos | Primary (ABN) | P3 | Main AS/antispam server |
cha3.bos.green.sophos | DR (BOS) | P4 | Next business day |
cha4.abn.green.sophos | Primary (ABN) | P3 | |
cha5.abn.green.sophos | Primary (ABN) | P3 | Currently disabled |
cha6.abn.green.sophos | Primary (ABN) | P3 | Akamai channels |
cha6.bos.green.sophos | DR (BOS) | P4 | disable_akamai_rsyncs active |
cha7.abn.green.sophos | Primary (ABN) | P3 | datadir/import channels |
cha7.bos.green.sophos | DR (BOS) | P4 | disable_akamai_rsyncs active |
chmetrics.abn.green.sophos | Metrics (ABN) | P3 | |
chmetrics.bos.green.sophos | Metrics DR (BOS) | P4 | |
pmuedge.abn.green.sophos | PMU Edge (ABN) | P3 | bandwidth-stats.csv growth |
SOP Reference
BOS (Boston) = DR = P4 — next business day, ignore until ABN is resolved
Multiple channel alerts? Check antispam-publishing first — it's almost always the root cause
Archiver2 alerts are byproducts of channel issues
Troubleshooting
"SSH connection failed: All authentication methods failed"
Load your key:
ssh-add ~/.ssh/id_rsaVerify:
ssh-add -lshould show your keyIf your key has a passphrase and isn't in the agent, you must
ssh-addit firstTest manually:
ssh your_username@cha3.abn.green.sophos
"ZABBIX_API_TOKEN not configured"
Create a token: Zabbix → User icon → API Tokens → Create
Add it to your MCP env config
"ATLASSIAN_EMAIL and ATLASSIAN_API_TOKEN not configured"
Create token: https://id.atlassian.com/manage-profile/security/api-tokens
Use your @sophos.com email as ATLASSIAN_EMAIL
MCP not showing up in your AI tool?
Verify the path to
dist/index.jsis correct and absolute (e.g.,/Users/yourname/labs.platform-infra.channels-mcp/dist/index.js)Check Node.js is installed:
node --version(need 18+)Do NOT run
npm run devmanually — the AI tool starts the server itselfRestart your AI tool after config changes, or reconnect MCP servers
Check the MCP server panel for error messages
"BLOCKED: Command contains X which is not allowed"
This means the command safety filter caught a dangerous operation
The MCP is read-only by design — it cannot run yum, rm, service restart, etc.
If you need to run a blocked command, do it manually via SSH
Tools appear but SSH fails silently
The SSH_AUTH_SOCK is auto-detected on macOS, but if it fails, set it explicitly:
echo $SSH_AUTH_SOCK # copy this valueThen add
"SSH_AUTH_SOCK": "your_value"to the env config
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pavanbhatt19/labs.platform-infra.channels-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server