mcp-linx
Use MCP-Linx as a read-only-by-default Linux infrastructure diagnostics MCP server, with tools to inspect hosts, services, containers, databases, network, metrics, and logs.
Linux host: CPU/memory/disk/load stats, processes, system logs, network interfaces/ports, firewall/policy routing, memory, and arbitrary read-only commands.
Nginx: service status, error/access logs, config checks, upstream health, and stub_status metrics.
Systemd: unit status, failed units, service logs, boot timing analysis, and effective IP filters.
Docker: containers, logs, stats, info, events, disk usage, and dry-run prune (deletion requires execute and confirm).
PostgreSQL: connections, locks, slow queries, activity, table/index/database stats, replication, and table sizes.
Redis: ping, INFO sections, clients, slowlog, and memory analysis.
Network diagnostics: HTTP checks, TLS certificates, DNS resolution, TCP connect probes, service-user probes, and tcpdump slices.
Prometheus/Loki: PromQL instant/range queries, alerts, targets; LogQL search, labels, and tail.
Kubernetes: pods, events, logs, describe, top, and deployments.
Aggregated/system tools: full diagnostic context, component summaries, health checks, and cross-component correlations.
Provides tools for listing containers, retrieving container logs and stats, inspecting container or system info, monitoring Docker events, and checking Docker disk usage.
Provides tools for monitoring and diagnosing the Linux host, including CPU, memory, disk, load, processes, network activity, system logs, and execution of read-only commands.
Provides tools for checking Nginx service status and processes, reading error and access logs, validating Nginx configuration, and monitoring upstream server status.
Provides tools for inspecting database activity, active connections, locks, slow queries, schema statistics, replication status, and table sizes.
Click on "Deploy 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., "@mcp-linx Check system health and nginx status"
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.
MCP-Linx — MCP Server for Linux Infrastructure Diagnostics
Русская версия:
README.ru.md.Operator guide:
docs/USER_GUIDE.md.
Status: Alpha (1.0.0). The plugin/tool API and configuration keys may change without a deprecation period. Not yet hardened for untrusted networks — see Security.
MCP-Linx is an MCP (Model Context Protocol) server for Linux infrastructure diagnostics. It provides tools for monitoring and diagnosing components: Linux host, Nginx, Docker, PostgreSQL, Redis, Systemd, Netdiag, Kubernetes, Prometheus, Loki.
Installation
# Create a virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -e ".[dev]"Related MCP server: linux-mcp
Running the Server
# Start MCP server (stdio mode)
python -m mcp_linx.main
# With MCP Inspector for debugging
npx @modelcontextprotocol/inspector python -m mcp_linx.mainDocker
Two deployment models with the same image:
Model A (default, safe) — isolated container diagnosing remote hosts over SSH; postgres/redis/prometheus/loki/k8s over the network.
Model B (host) — diagnosing the local host (Linux only): requires
pid: host,network_mode: hostand read-only mounts (seedocker-compose.yml). Note: mountingdocker.sockgrants root-equivalent access to the Docker host.
# Build
docker build -t mcp-linx:latest .
# Run via compose (stdio; MCP clients: command=docker, args=["run","-i","--rm","mcp-linx:latest"])
docker compose run --rm mcp-linx
# Claude Desktop / MCP Inspector config
{
"mcpServers": {
"mcp-linx": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "/absolute/path/config:/app/config:ro", "mcp-linx:latest"]
}
}
}Configuration
Main configuration file: config/settings.yaml
Environment variables: copy .env.example → .env for the five server settings
only (names without a prefix). Plugin secrets must be supplied in the process
environment, not added to .env: unknown dotenv keys cause a validation error.
YAML expands ${VAR} / ${VAR:-default} from that environment; a missing variable
without a default logs a warning and falls back to the entire unexpanded YAML.
An empty environment value does not trigger the default. Expansion is textual
(before YAML parsing), so values must remain valid in their YAML quoting context.
See Environment and configuration
for local and Docker setup, audit logging, and shutdown behavior.
plugins.enabled selects the active plugin set: only listed plugins are loaded,
initialized, expose MCP tools, and participate in health checks. An empty or absent
list means all discovered plugins. This is configuration of composition, not an
access-control boundary (system tools and the MCP transport are unaffected).
security:
readonly: true # Command validation only; not a Docker API write gate
max_command_output_size: 10000
max_log_lines: 500
command_timeout_seconds: 30 # Default plugin command timeout (per-tool timeout wins)
rate_limit_max_calls: 60 # Calls per tool per sliding window
rate_limit_window_seconds: 60 # Window duration in seconds
allowed_hosts: [localhost] # Add names from hosts: to permit remote calls
# Multi-host: named remote targets for SSH-based diagnostics.
hosts: {}
# hosts:
# web-1:
# host: 10.130.0.23
# port: 22
# username: user
# key_file: ~/.ssh/id_rsa
# password: null # prefer env
# host_key_policy: reject # reject | warning | auto_add
# known_hosts: null
plugins:
enabled:
- linux
- nginx
- docker
- postgres
- redis
- systemd
- netdiag
- kubernetes
- prometheus
- loki
postgres:
host: "localhost"
port: 5432
password: "${POSTGRES_PASSWORD:-}" # From process environment; empty if absent
# SSL/TLS modes: disable | allow | prefer | require | verify-ca | verify-full
# verify-full is recommended for production (verifies CA + hostname)
ssl_mode: "prefer"
redis:
host: "localhost"
port: 6379
password: "${REDIS_PASSWORD:-}" # From process environment; empty if absent
nginx:
log_path: "/var/log/nginx"
stub_status_url: null # e.g. "http://127.0.0.1/nginx_status" — enables nginx_stub_status tool
kubernetes:
namespace: "default"PostgreSQL SSL modes
plugins.postgres.ssl_mode is passed to libpq as sslmode (via psycopg2.connect),
so values and semantics are libpq's:
Mode | Encryption | Server certificate | Hostname check |
| no | — | — |
| if server requires | no | no |
| yes, if available | no | no |
| yes | no | no |
| yes | yes (CA must be trusted) | no |
| yes | yes | yes |
prefer protects against passive sniffing only: it silently falls back to plaintext
if TLS is unavailable. For production use verify-full (or at least verify-ca),
make the CA available to the process (~/.postgresql/root.crt or a system trust
store) and keep the configured host identical to the certificate name — otherwise
the connection fails instead of downgrading. This server does not expose a CA path
setting: use libpq's standard locations or PGSSLROOTCERT in the process environment.
SSH reliability: retries and tunnels
SSH command execution retries connection-level failures and reconnects (E1):
Key | Where | Default | Meaning |
|
|
| total attempts; |
| same |
| base pause, grows linearly (× attempt number) |
Only connection errors (SSHException, EOFError, OSError, ConnectionError) are
retried. A non-zero command exit code is a normal result and is never retried, so
read-only diagnostics stay idempotent and predictable.
PostgreSQL can be reached through an SSH server (E2), which helps when the database is only reachable from a bastion:
plugins:
postgres:
host: db.internal # resolved on the SSH side
port: 5432
ssh:
host: bastion # SSH server to tunnel through
username: ops
key_file: ~/.ssh/id_rsa
tunnel: true # opt-in; requires ssh.hostThe plugin opens an ephemeral 127.0.0.1:<port> listener and forwards it to
db.internal:5432 through the SSH connection; the tunnel is closed on plugin
destroy(). Redis does not need this: its tools run redis-cli on the remote host
over SSH. Note that with a tunnel, TLS hostname verification (verify-full) applies to
the tunnel address, so prefer verify-ca with a trusted CA.
End-to-end verification of a tunnel requires a real SSH server; it is not covered by CI (unit tests use a fake transport and cover the forwarding and wiring paths).
Jump host (bastion)
A named host can be reached through a bastion; the pool opens a direct-tcpip channel
on the bastion and runs the SSH session to the target over it (E3):
hosts:
db-1:
host: 10.0.0.20 # target, resolved on the bastion
username: ops
key_file: ~/.ssh/id_rsa
jump_host: bastion.example.com
jump_port: 22 # default 22
jump_username: jumper
jump_key_file: ~/.ssh/jump
# jump_password: use an env-substituted value, not a literal
host_key_policy: reject # applies to both the bastion and the targetThe bastion is verified with the same host_key_policy / known_hosts as the target
(so reject needs both keys in known_hosts). The bastion connection is reused with the
target and closed together with it (drop / close_all).
PostgreSQL multi-target
Any pg_* tool accepts host: <target name>, where targets are described in the config
(E4b). Each target gets its own connection, and — with ssh.tunnel: true — its own
tunnel, so a primary and a replica behind a bastion can be diagnosed from one instance:
plugins:
postgres:
host: primary.db # used when a tool is called without `host`
port: 5432
user: postgres
password: "${POSTGRES_PASSWORD:-}"
targets:
replica:
host: replica.db
behind-bastion: # reached through SSH (E2)
host: internal.db
ssh: {host: bastion, tunnel: true}Unlisted fields are inherited from the plugin-level settings. An unknown target name
returns an error listing the configured targets. Connections and tunnels are closed on
plugin destroy().
Kubernetes multi-cluster
The Kubernetes plugin talks to one cluster per plugin instance, selected by
plugins.kubernetes.kubeconfig / context. For several clusters run additional
instances (separate CONFIG_PATH) or switch context — the k8s_* tools intentionally
have no per-call cluster argument.
Tools
Linux Plugin (9 tools)
linux_host_stats— Host statistics: CPU, memory, disk, loadlinux_processes— List of running processeslinux_logs— Read system logs (journalctl, syslog)linux_network— Network interfaces, ports, connectionslinux_firewall— Firewall snapshot: nftables + policy routing (read-only)linux_disk— Disk and filesystem usagelinux_memory— Detailed memory usage informationlinux_file_diagnostics— File path, permissions, immutable attributes, mount and service-user write check (read-only; user check requiresplugins.linux.privileged_tools: true)linux_execute_command— Execute an arbitrary read-only command
Nginx Plugin (5 tools)
nginx_status— Nginx service status and processesnginx_logs— Read error and access logsnginx_config— Nginx configuration checknginx_upstream— Upstream servers: config + real HTTP health checknginx_stub_status— stub_status metrics: active connections, requests
Docker Plugin (7 tools)
docker_containers— List containers with filteringdocker_logs— Container logsdocker_stats— Container stats: CPU, memory, networkdocker_info— Full container or system infodocker_events— Docker eventsdocker_system_df— Docker disk usagedocker_prune— Preview stopped containers (dry-run by default); deletion requires bothexecute=trueandconfirm=true
PostgreSQL Plugin (7 tools)
pg_connections— Active connectionspg_locks— Locks and blocked queriespg_slow_queries— Slow queriespg_activity— Full activity: current queries, states, waitspg_stats— Statistics: tables, indexes, databasespg_replication— Replication status (if configured)pg_tables— List of tables with sizes and stats
Redis Plugin (5 tools)
redis_ping— Redis availability (PING)redis_info— INFO sections: memory, clients, stats, replicationredis_clients— Client connections (CLIENT LIST)redis_slowlog— Slow log (SLOWLOG GET)redis_memory— Memory analysis: used, peak, fragmentation, evictions
Systemd Plugin (5 tools)
service_status— Unit status (systemctl status/is-active)failed_units— Failed units listservice_logs— Service logs via journalctl -uboot_analysis— Boot time analysis (systemd-analyze blame)service_ip_filter— Effective IP filter: unit files + eBPF/bpftool (ground truth)
Netdiag Plugin (6 tools)
http_check— HTTP(S) check: status, timings, redirectstls_check— TLS certificate: expiry, chain, issuerdns_resolve— DNS resolution A/AAAAtcp_connect— TCP connect with timingtcp_connect_as— TCP probe as service user, per-uid filters (requires privileged_tools)tcpdump_probe— Short tcpdump slice (requires privileged_tools)
Kubernetes Plugin (6 tools)
k8s_pods— Pods with phases and restartsk8s_events— Cluster/namespace eventsk8s_logs— Pod logs (kubectl logs)k8s_describe— Pod describe (conditions)k8s_top— Pod resources (kubectl top)k8s_deployments— Deployment status
Prometheus Plugin (4 tools)
prom_query— Instant PromQL queryprom_range— Range query over periodprom_alerts— Firing/pending alertsprom_targets— Scrape targets up/down
Loki Plugin (3 tools)
log_search— LogQL search over periodlog_labels— Label names/valueslog_tail— Recent lines by selector
System Tools
system_health_check— Health check of all pluginsget_diagnostic_context— Full diagnostic contextget_summary— Brief system status summarydiagnose_host— Parallel host snapshot: host stats, top processes, disk, memory, recent error logs (linux plugin). Optionalhost— a name from thehosts:registry.diagnose_web_service— Parallel web-service snapshot: nginx status, systemd unit status, recent nginx error logs, plushttp_checkwhenurlis given. Optionalservice_name(defaultnginx) andhost.kubeconfig: null # null = ~/.kube/config context: null # null = current-context
prometheus:
Linux Plugin
linux_host_statslinux_processeslinux_logslinux_networklinux_firewall— Firewall snapshot: nftables + policy routing (read-only)linux_disklinux_memorylinux_execute_command
Nginx Plugin
nginx_statusnginx_logsnginx_confignginx_upstreamnginx_stub_status
Docker Plugin
docker_containersdocker_logsdocker_statsdocker_infodocker_eventsdocker_system_dfdocker_prune
PostgreSQL Plugin
pg_connectionspg_lockspg_slow_queriespg_activitypg_statspg_replicationpg_tables
Redis Plugin
redis_pingredis_inforedis_clientsredis_slowlog— Slow log (SLOWLOG GET)redis_memory
Systemd Plugin
service_statusfailed_unitsservice_logsboot_analysisservice_ip_filter
Netdiag Plugin
http_checktls_checkdns_resolvetcp_connecttcp_connect_astcpdump_probe
Kubernetes Plugin
k8s_podsk8s_eventsk8s_logsk8s_describek8s_topk8s_deployments
Prometheus Plugin
prom_queryprom_rangeprom_alertsprom_targets
Loki Plugin
log_searchlog_labelslog_tail
Architecture
mcp-linx/
├── src/mcp_linx/
│ ├── main.py # MCP server entry point (FastMCP + AgentLoop)
│ ├── harness/ # Harness core: agent_loop, plugin_manager (auto-discovery),
│ │ # context (compaction library API)
│ ├── multihost.py # HostRegistry — named remote hosts (`hosts:` config)
│ ├── context_aggregator.py # Cross-component correlations
│ ├── security.py # SecurityGuard (command validation, readonly mode)
│ ├── types.py # Status, ToolResult, ComponentState, Correlation
│ ├── adapters/
│ │ ├── base.py # Base adapter (abstract) + LocalAdapter
│ │ ├── ssh.py # SSH adapter (paramiko)
│ │ ├── ssh_pool.py # SSHConnectionPool + RemoteHostAdapter (multi-host)
│ │ └── docker.py # Docker API adapter
│ └── plugins/ # Auto-discovered plugins (10 total, 57 tools)
│ ├── base.py # DiagnosticPlugin base class (+ `host` resolution)
│ ├── linux/ # 9 tools
│ ├── nginx/ # 5 tools
│ ├── docker/ # 7 tools
│ ├── postgres/ # 7 tools
│ ├── redis/ # 5 tools
│ ├── systemd/ # 5 tools
│ ├── netdiag/ # 6 tools
│ ├── kubernetes/ # 6 tools
│ ├── prometheus/ # 4 tools
│ └── loki/ # 3 tools
├── config/settings.yaml # Server configuration
├── tests/ # Unit + integration tests; see Testing below
├── REMOTE_TROUBLESHOOTING.md # Remote/SSH roadmap
└── docs/ # ARCHITECTURE.md, DEVELOPMENT.md, SKILLS.md,
# INCIDENT_504.md, skills/Key features:
Harness ideology: diagnostic plugins are auto-discovered from
src/mcp_linx/plugins/; agent loops are selectable viaAGENT_LOOPand context compactors are provided as a library API. Sandboxes are not part of the server (seedocs/HARNESS_ANALYSIS.md).Security: readonly mode blocks write commands (rm, mkfs, dd, fork bombs, etc.)
Context Aggregator: detects cross-component correlations
Adapters: Local subprocess, SSH (paramiko), Docker API
Multi-host: named remote targets in
hosts:;linux_*,nginx_*(exceptnginx_stub_status) andsystemd_*accept ahostargument — seeREMOTE_TROUBLESHOOTING.md
Testing
# Run all tests
pytest tests/ -v
# Run specific test file
pytest tests/unit/test_security.py -v
pytest tests/unit/test_new_plugins.py -vSecurity
Rate limiting applies to plugin tool handlers only; the system tools
(get_diagnostic_context, get_summary, system_health_check, diagnose_host,
diagnose_web_service) are registered separately and are not rate limited.
Note that diagnose_* invoke plugin tools directly, so their inner calls are
neither rate limited nor audited individually. Rejected calls are not audited.
SecurityGuard provides:
Read-only mode: Command validation blocks write commands (rm, write, mkfs, dd and others) for command-executing adapters and tools. Non-command write paths are also covered:
docker_prunerefuses to delete whilereadonly: true(theconfirmgate is an additional, independent barrier).Dangerous command blocking: rm -rf /, mkfs, dd if=/dev/zero, fork bombs etc.
Output size limiting: Truncates large command outputs
Log line limiting: Maximum number of log lines returned
Host validation: Linux, Nginx and Systemd validate an explicit
hostagainstsecurity.allowed_hostsbefore resolving the adapter. These are registry names, not destination IPs; define them inhosts:and include them in the allowlist. An empty allowlist disables this restriction. This is not a universal network ACL for API clients or probe destinations.Input validation: MCP handlers accept a
paramsdictionary; field checks are implemented by individual tools, not dedicated Pydantic schemas for every tool.
Context Aggregator
ContextAggregator analyzes states of all components and detects correlations:
Docker + Nginx: If Docker containers are down, Nginx may have no upstreams
PostgreSQL + Docker: If PostgreSQL is in a container and failing
Linux + components: If Linux is in critical state, other components may fail
OOM events: Linux OOM messages may explain container crashes
Redis + PostgreSQL: Redis evictions while PG is slow — cache-miss cascade
Linux + Kubernetes: Pods OOMKilled while host has memory pressure
Netdiag + Nginx: TLS certificate issue while Nginx is failing
License
MIT is declared in package metadata. A standalone LICENSE file is still missing;
license text and copyright attribution remain pending (TODO C1).
Available Tools
59 toolsboot_analysisBoot AnalysisC
Анализ времени загрузки (systemd-analyze)
Inputs: params. Returns: object
dns_resolveDns ResolveC
DNS резолвинг A/AAAA/CNAME/MX
Inputs: params. Returns: object
docker_containersDocker ContainersC
Список контейнеров с фильтрацией
Inputs: params. Returns: object
docker_eventsDocker EventsD
Docker события (контейнеры, образы, сети)
Inputs: params. Returns: object
docker_infoDocker InfoC
Полная информация о контейнере или системе
Inputs: params. Returns: object
docker_logsDocker LogsD
Логи контейнера
Inputs: params. Returns: object
docker_pruneDocker PruneA
Dry-run: список остановленных контейнеров для удаления. Реальное удаление — execute=true, confirm=true
Inputs: params. Returns: object
docker_statsDocker StatsC
Статистика контейнера: CPU, память, сеть
Inputs: params. Returns: object
docker_system_dfDocker System DfD
Использование диска Docker
Inputs: params. Returns: object
failed_unitsFailed UnitsB
Список failed юнитов (systemctl --failed)
Inputs: params. Returns: object
get_diagnostic_contextGet Diagnostic ContextA
Получить полный диагностический контекст со всеми компонентами и корреляциями
Inputs: no named parameters. Returns: object
get_summaryGet SummaryB
Получить сводку по статусам всех компонентов
Inputs: no named parameters. Returns: object
http_checkHttp CheckC
HTTP(S) проверка: status, timings, redirects
Inputs: params. Returns: object
k8s_deploymentsK8S DeploymentsD
Статус деплойментов
Inputs: params. Returns: object
k8s_describeK8S DescribeC
Describe пода (conditions, events)
Inputs: params. Returns: object
k8s_eventsK8S EventsC
События кластера/неймспейса (kubectl get events)
Inputs: params. Returns: object
k8s_logsK8S LogsD
Логи пода (kubectl logs)
Inputs: params. Returns: object
k8s_podsK8S PodsC
Список подов с фазами и рестартами
Inputs: params. Returns: object
k8s_topK8S TopC
Ресурсы подов (kubectl top pods)
Inputs: params. Returns: object
linux_diskLinux DiskD
Использование диска и файловых систем
Inputs: params. Returns: object
linux_execute_commandLinux Execute CommandC
Выполнение произвольной read-only команды
Inputs: params. Returns: object
linux_firewallLinux FirewallC
Firewall snapshot: nftables + iptables + policy routing (read-only)
Inputs: params. Returns: object
linux_host_statsLinux Host StatsB
Получение статистики хоста: CPU, память, диск, загрузка
Inputs: params. Returns: object
linux_logsLinux LogsC
Чтение системных логов (journalctl, syslog)
Inputs: params. Returns: object
linux_memoryLinux MemoryC
Детальная информация об использовании памяти
Inputs: params. Returns: object
linux_networkLinux NetworkD
Сетевые интерфейсы, порты, соединения
Inputs: params. Returns: object
linux_processesLinux ProcessesB
Список запущенных процессов с фильтрацией
Inputs: params. Returns: object
log_labelsLog LabelsC
Список label names/values в Loki
Inputs: params. Returns: object
log_searchLog SearchC
LogQL поиск по логам за период
Inputs: params. Returns: object
log_tailLog TailC
Последние строки по селектору (tail)
Inputs: params. Returns: object
nginx_configNginx ConfigC
Проверка конфигурации Nginx
Inputs: params. Returns: object
nginx_logsNginx LogsC
Чтение error и access логов Nginx
Inputs: params. Returns: object
nginx_statusNginx StatusC
Статус службы Nginx и процессов
Inputs: params. Returns: object
nginx_stub_statusNginx Stub StatusC
HTTP-проверка stub_status: active connections, requests, reading/writing/waiting
Inputs: params. Returns: object
nginx_upstreamNginx UpstreamC
Статус upstream серверов
Inputs: params. Returns: object
pg_activityPg ActivityC
Полная активность: текущие запросы, состояния, ожидания
Inputs: params. Returns: object
pg_connectionsPg ConnectionsC
Активные подключения к PostgreSQL
Inputs: params. Returns: object
pg_locksPg LocksC
Блокировки и заблокированные запросы
Inputs: params. Returns: object
pg_replicationPg ReplicationC
Статус репликации (если настроена)
Inputs: params. Returns: object
pg_slow_queriesPg Slow QueriesC
Медленные запросы (pg_stat_statements)
Inputs: params. Returns: object
pg_statsPg StatsC
Статистика: таблицы, индексы, базы данных
Inputs: params. Returns: object
pg_tablesPg TablesC
Список таблиц с размерами и статистикой
Inputs: params. Returns: object
prom_alertsProm AlertsC
Активные алерты (firing/pending)
Inputs: params. Returns: object
prom_queryProm QueryC
Instant query (PromQL) к Prometheus
Inputs: params. Returns: object
prom_rangeProm RangeB
Range query за период (графики/история)
Inputs: params. Returns: object
prom_targetsProm TargetsC
Статус scrape targets (up/down)
Inputs: params. Returns: object
redis_clientsRedis ClientsC
Список клиентских подключений (CLIENT LIST)
Inputs: params. Returns: object
redis_infoRedis InfoC
Секции INFO: memory, clients, stats, replication
Inputs: params. Returns: object
redis_memoryRedis MemoryB
Анализ памяти: used, peak, fragmentation, evictions
Inputs: params. Returns: object
redis_pingRedis PingA
Проверка доступности Redis (PING)
Inputs: params. Returns: object
redis_slowlogRedis SlowlogC
Slow log Redis (SLOWLOG GET)
Inputs: params. Returns: object
service_ip_filterService Ip FilterC
Эффективный IP-фильтр юнита: unit-файлы + eBPF/bpftool (ground truth)
Inputs: params. Returns: object
service_logsService LogsC
Логи сервиса через journalctl -u
Inputs: params. Returns: object
service_statusService StatusC
Статус systemd юнита (systemctl status/is-active)
Inputs: params. Returns: object
system_health_checkSystem Health CheckB
Провести health check всех плагинов
Inputs: no named parameters. Returns: object
tcp_connectTcp ConnectC
TCP connect к host:port с замером времени
Inputs: params. Returns: object
tcp_connect_asTcp Connect AsC
TCP-проба от имени сервисного пользователя (per-uid фильтры, требует privileged_tools)
Inputs: params. Returns: object
tcpdump_probeTcpdump ProbeC
Короткий tcpdump-срез host:port (требует privileged_tools)
Inputs: params. Returns: object
tls_checkTls CheckC
TLS сертификат: expiry, chain, issuer
Inputs: params. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 59 tools
Most tools target distinct resources (nginx, docker, k8s, pg, redis), but there is notable overlap among health/summary tools: get_diagnostic_context, get_summary, and system_health_check all provide overall status and could be confused. Additionally, nginx_status and nginx_stub_status are similar in name despite different purposes.
Names are all snake_case and generally follow a logical pattern with domain prefixes (nginx_*, docker_*, k8s_*, linux_*, pg_*, redis_*). However, a few tools like http_check, tls_check, tcp_connect, and get_diagnostic_context deviate from the prefix convention, creating minor inconsistency.
59 tools is a very large surface for an MCP server, far exceeding the 25+ threshold that typically feels heavy. While the breadth is understandable for multi-stack diagnostics, many niche tools (e.g., tcpdump_probe, redis_slowlog) could be consolidated or exposed via a more parameterized interface.
The tool set covers an impressively broad range of diagnostic domains: Nginx, systemd, Docker, network, Prometheus, Loki, Kubernetes, Linux, PostgreSQL, and Redis. It includes health checks, summaries, and detailed metrics, though there are minor gaps like Docker inspect (partially covered by docker_info) and no write/action tools beyond docker_prune.
Maintenance
Related MCP Connectors
Hosted MCP server for PostgreSQL diagnostics: slow queries, missing indexes, connection pressure.
Gain visibility into the performance, availability, and health of your apps and infrastructure.
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Read-only server insight: why a Linux server or K8s cluster is slow, failing or changed.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Linux system operations via MCP, including CPU, memory, processes, storage, filesystem, hardware, network, monitoring, and logs.9MIT
- AlicenseAqualityBmaintenanceA Linux system monitoring MCP server that provides real-time information on CPU, memory, disk, network, processes, Docker, security, and more via MCP tools.10653MIT
- AlicenseBqualityFmaintenanceEnables explaining Linux incidents over SSH with baseline-aware MCP tooling, including live diagnostics, SQLite history, and review-first workflows.10284 npm2MIT
- AlicenseNot gradedqualityCmaintenanceEnables read-only observability of a Linux host via MCP, exposing allowlisted systemd, docker, nginx, logs, disk, and cert info without shell access.MIT