mcp-it-ops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FT_FUN_PASS | No | Freqtrade bot2 API password | |
| FT_FUN_USER | No | Freqtrade bot2 API username | |
| INFLUXDB_ORG | No | InfluxDB v2 organization name | |
| FT_STEADY_PASS | No | Freqtrade bot1 API password | |
| FT_STEADY_USER | No | Freqtrade bot1 API username | |
| INFLUXDB_TOKEN | No | InfluxDB v2 authentication token | |
| GRAFANA_PASSWORD | No | Grafana admin password | |
| MCP_IT_OPS_CONFIG | Yes | Path to the configuration YAML file (settings.yaml) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_system_healthA | Report local system health: disk, memory, load, uptime, container count. Reads from /proc and shells out to df, uptime, docker ps. Designed for the host the MCP server runs on. |
| get_grafana_alert_stateA | List Grafana alert rules with their current state. Queries the Grafana Prometheus-style rules API. Reads credentials from the config (Grafana URL + user) and from the env var named in grafana.password_env (defaults to GRAFANA_PASSWORD). Returns a dict with alerts grouped by state (firing/pending/inactive/no_data/error). |
| get_freqtrade_bot_statusA | Query a freqtrade bot's REST API for its current trading state. bot_name must match a key under freqtrade.bots in config (e.g. 'steady', 'fun'). Reads basic-auth credentials from the env vars named in user_env / pass_env on the bot's config entry. Returns a dict with: bot_name, dry_run, strategy, timeframe, exchange, closed_trade_count, open_trade_count, realised_p_and_l_fiat, realised_p_and_l_pct, total_p_and_l_fiat, total_p_and_l_pct, win_rate, open_positions (list of {pair, opened, current_pnl_fiat, current_pnl_pct}). Returns {"error": "..."} on any failure (unknown bot, missing creds, API down). |
| get_container_statusA | Return structured docker-ps output: per-container name, image, state, status, ports, age. Shells out to docker ps with a tab-separated format string. Returns a list of containers plus a summary dict. Read-only — does not stop/restart anything. Returns {"error": "..."} if docker isn't installed or the docker socket is unreachable. |
| query_loki_logsA | Search container/syslog logs via Loki LogQL. query: LogQL query string, e.g. '{container="grafana"}' or '{container=~".+"} |= "ERROR"' since: how far back, e.g. '1h', '30m', '7d' (Loki duration syntax) limit: max log lines to return (Loki default = 100, hard-capped here at 1000) Returns a dict with: total_streams, total_lines, streams (list of {labels, lines}). Lines are timestamp-sorted oldest-first. Returns {"error": "..."} on Loki unreachable or invalid query. |
| get_smartd_healthA | Query SMART health for a storage device via smartctl. device: /dev/nvme0n1, /dev/sda, etc. Default is niborserver's NVMe. Returns: overall_health, critical_warning, temperature_c, available_spare_pct, percentage_used_pct, power_on_hours, unsafe_shutdowns, media_errors. Requires sudo (smartctl needs raw device access). Returns {"error": ...} if smartctl isn't installed or sudo isn't permitted (the calling user must have NOPASSWD sudo for smartctl OR the MCP server must run as root). |
| get_backup_statusA | Report on the niborserver backup pipeline's last run. Reads /var/log/niborserver-backup.log and reports: last_run_started, last_run_completed, last_run_duration_seconds, last_run_size, last_run_succeeded. Returns {"error": ...} if the log doesn't exist (backup not yet run). |
| query_influxdb_fluxA | Execute a Flux query against the local InfluxDB and return parsed records. flux: Flux query string. The bucket is NOT auto-substituted — include
Reads InfluxDB URL from config ( Returns: {bucket, row_count, columns, records (list of dicts), truncated_at}.
Records are capped at 500 rows to keep Claude's context manageable; if more
were returned, Returns {"error": "..."} on missing token, network failure, or Flux syntax error. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bastiaan365/mcp-it-ops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server