Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
npx claudepluginhub jmagar/claude-homelab --plugin syslog-mcpDeploy rsyslog forwarding drop-ins to configured fleet hosts over SSH. Use when configuring fleet forwarding, repairing missing rsyslog forwarding, or updating forwarding after server_url or syslog port changes.
Run a comprehensive syslog-mcp health check covering environment, config quality, storage, ports, service status, HTTP health, MCP actions, listener reachability, Docker ingest, and fleet rsyslog forwarding. Use when the user asks for syslog doctor, deployment diagnostics, first-run preflight, health check, sanity check, or broad deployment verification.
Consume a syslog abuse_investigate JSON evidence bundle and produce a deep Markdown assessment covering signal authenticity, agent/user/external factors, good practices, recommended follow-ups, and evidence-backed Beads for critical/P1 issues only.
Tail or follow syslog-mcp service logs from Docker Compose. Use when the user asks for syslog-mcp service logs, startup logs, crash logs, plugin deployment logs, Docker logs, or follow mode. This is for the service's stdout/stderr, not client syslog entries.
Re-run the syslog-mcp plugin setup hook with the current userConfig and verify the Docker Compose deployment. Use when the user asks to redeploy syslog-mcp, apply plugin config changes immediately, rerun the setup hook, refresh the Docker deployment, or recover after an automated SessionStart/ConfigChange hook did not run.
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
no_authRun syslog-mcp without service-local MCP auth. Use this only when an upstream gateway or reverse proxy enforces auth before traffic reaches syslog-mcp. Server mode only.
${user_config.no_auth}data_dirDirectory holding the SQLite database file (syslog.db plus its WAL/SHM sidecars in WAL mode). Defaults to the plugin's persistent data directory ($CLAUDE_PLUGIN_DATA), which survives plugin upgrades. Override only if you need the DB on a different volume — e.g. a larger or faster disk. The directory must exist and be writable by the user running the service. Server mode only.
${user_config.data_dir}mcp_hostInterface address the MCP HTTP server binds to. 0.0.0.0 makes the MCP endpoint reachable from other hosts (required if any client-mode peer needs to connect). 127.0.0.1 keeps it local-only (use this if you front the server with a reverse proxy on the same host, or only query from this machine). Server mode only.
${user_config.mcp_host}mcp_portTCP port the MCP HTTP server listens on (serves POST /mcp and GET /health). Default 3100. Must match the port in server_url for clients to reach you. Avoid 3000 to dodge the common Node.js dev server collision. Server mode only.
${user_config.mcp_port}api_tokenBearer token for MCP HTTP authentication, sent on every request as `Authorization: Bearer <token>`. Server mode: pick any value — that becomes the secret the server enforces (generate one with `openssl rand -hex 32`, or use `just gen-token`). Client mode: paste the token your server admin configured. The same token must match on both sides; mismatched tokens return 401.
${user_config.api_token}auth_modeServer auth mode. bearer keeps the static API token only. oauth enables Google OAuth/JWT for clients like Codex while the generated API token remains accepted for this Claude Code plugin connection. OAuth mode requires public_url, google_client_id, google_client_secret, and auth_admin_email.
${user_config.auth_mode}is_serverTrue on the ONE machine in your fleet that should ingest and store logs — it runs the syslog receiver (UDP+TCP), the SQLite store, and the MCP HTTP server. False on every other machine that just needs to query logs from Claude Code; those instances skip all local server setup and act as MCP clients only.
${user_config.is_server}batch_sizeNumber of parsed syslog messages written per SQLite batch. Higher values reduce transaction overhead during bursts but can add write latency. Server mode only.
${user_config.batch_size}public_urlPublic base URL for OAuth issuer/resource metadata, e.g. https://syslog.example.com. If auth_mode=oauth and this is empty, setup derives it from an https server_url by stripping a trailing /mcp if present. Server mode only.
${user_config.public_url}server_urlBase URL the MCP client in this Claude Code session connects to (always used — both modes). Server mode: keep the default http://localhost:3100 so the local MCP client talks to the local server. Client mode: set to the remote server, e.g. http://dookie:3100, http://syslog.lan:3100, or https://syslog.example.com if fronted by a reverse proxy. Must include the scheme and (if non-default) port; do NOT include a trailing /mcp path — the plugin appends it.
${user_config.server_url}use_dockerServer-mode deployment method. True: run via the bundled docker compose stack (containerized, easier to upgrade/move, exposes ports 1514 and 3100, mounts data_dir as a volume). False: run the bundled binary as a systemd user service (lighter weight, no Docker dependency, logs go to journald). Both produce identical syslog-mcp behavior — pick based on your host's conventions. Ignored in client mode.
${user_config.use_docker}fleet_hostsHostnames or SSH config aliases for hosts in your fleet — used by TWO features. (1) Docker ingest: when docker_ingest_enabled is true, each entry becomes the docker-socket-proxy URL http://<host>:2375. (2) The syslog-deploy-dropins skill pushes rsyslog forwarding drop-ins to each host over SSH so they start forwarding logs here. Entries must be reachable by name (resolvable DNS or in /etc/hosts) AND, for deploy-dropins, configured in ~/.ssh/config with a working key. Add one entry per host, e.g. dookie, squirts, tootie. Leave empty if you don't want either feature.
${user_config.fleet_hosts}syslog_hostInterface address the syslog receiver binds to. 0.0.0.0 listens on every interface so other hosts on the LAN/VPN can forward to you (the normal homelab choice). 127.0.0.1 restricts to local-only ingestion (useful when only this host's rsyslog forwards in). Server mode only.
${user_config.syslog_host}syslog_portUDP and TCP port the syslog receiver binds to inside the server process or Docker container (the same port serves both protocols). Keep this at 1514 unless you intentionally grant CAP_NET_BIND_SERVICE or run as root. Server mode only.
${user_config.syslog_port}max_db_size_mbSoft cap on logical SQLite DB size. When exceeded, oldest logs (ordered by received_at) are deleted in batches until the recovery target is met; if cleanup can't free enough space, NEW WRITES are blocked until storage recovers. 0 disables this guard entirely (logs grow until disk fills or retention purges them). Default 8192 MB (8 GB) is sized for a homelab ingesting from a handful of hosts plus Docker stdout — bump much higher (50000+) if you have lots of free disk and want long retention, lower if storage is tight. Server mode only.
${user_config.max_db_size_mb}retention_daysAge-based purge: log entries older than this are PERMANENTLY DELETED hourly with no recovery path — back up first with `scripts/backup.sh` if you need archival. 0 disables age-based purging entirely (storage guards from max_db_size_mb still apply). Default 90 days balances forensic value against DB size for a typical homelab. Server mode only.
${user_config.retention_days}auth_admin_emailBootstrap allowed Google account for OAuth mode. The server refuses to start OAuth without an allowlisted account. Server mode only.
${user_config.auth_admin_email}google_client_idGoogle OAuth client ID used when auth_mode=oauth. Create a Web application OAuth client in Google Cloud Console. Server mode only.
${user_config.google_client_id}syslog_host_portHost port published by Docker Compose to the container's syslog bind port. Set this to 514 when devices can only forward to the privileged syslog port, while leaving syslog_port at 1514 inside the container. Docker server mode only.
${user_config.syslog_host_port}google_client_secretGoogle OAuth client secret used when auth_mode=oauth. Stored in the generated plugin env file with mode 600. Server mode only.
${user_config.google_client_secret}docker_ingest_enabledPull container stdout/stderr from remote Docker socket proxies in addition to syslog. When true, each fleet_host is treated as a docker-socket-proxy endpoint at http://<host>:2375 and continuously polled for container logs. Logs land in the DB tagged hostname=<host>, app_name=<container>, source_ip=docker://<host>/<container>/<stream>. Each fleet host MUST be running docker-socket-proxy (or equivalent) on port 2375 with at least containers/logs read access — exposing the raw Docker socket is unsafe. Server mode only.
${user_config.docker_ingest_enabled}write_channel_capacityIn-memory parsed-message queue capacity before listener backpressure. Increase this for bursty senders like journald backfill or high-volume network devices. Server mode only.
${user_config.write_channel_capacity}auth_allowed_redirect_urisOptional extra non-loopback OAuth client redirect URIs. Setup automatically adds Claude's MCP callback URLs and, when present, the current Codex mcp_oauth_callback_url from ~/.codex/config.toml. Server mode only.
${user_config.auth_allowed_redirect_uris}Analyze log files with ctrlb-decompose — pattern clustering, anomaly detection, and severity scoring
Analyze logs for performance insights and issues
Connect Claude to your Windows PC's AppControl monitor — query running processes, tracked binaries, resource usage history, security events, and idle/uptime intervals.
Set up and use Gonzo, the open-source terminal log analysis tool. Detects deployment platforms (Vercel, Supabase, K8s, Docker, AWS, Cloudflare, Fly, Render, Railway, Netlify), generates the right pipe command with platform-specific normalizers, and configures AI analysis. Use when the user wants to tail, watch, stream, or analyze logs in their terminal.
Axiom CLI and APL query assistance for Claude Code
Auto-capture development command output and search/analyze with Claude Code
Query, monitor, and manage Unraid servers via GraphQL API through MCP tools. Supports system info, Docker, VMs, array/parity, notifications, plugins, rclone, and live telemetry.
Core homelab agents, commands, and setup/health skills for self-hosted service management. Includes interactive credential setup wizard and unified service health dashboard.
UniFi network management via MCP tools. Monitor devices, clients, network health, firewall rules, and perform management operations.
Gotify push notifications and management via MCP tools with HTTP fallback. Sends alerts for long-running tasks, plan completions, and blocked states.
Agents, commands, skills, and scripts for scaffolding, reviewing, aligning, and deploying homelab MCP server plugins. Includes canonical Python, TypeScript, and Rust server templates.
Rust syslog receiver and MCP server for homelab log intelligence. Ingests syslog over UDP and TCP, stores it in SQLite with FTS5 full-text indexing, and exposes action-based log search, inventory, correlation, status, and analysis tools to MCP clients.
┌─────────────────────────────────┐
rsyslog/syslog-ng ─▶ UDP :1514 / TCP :1514 │
network devices ─▶ ┌──────────────────────────┐ │
│ │ parse → batch writer │ │
│ │ SQLite + FTS5 (WAL mode) │ │
│ └──────────────────────────┘ │
Claude / MCP ◀──── ▶ RMCP HTTP :3100/mcp │
local MCP client ◀──▶ syslog mcp query process │
└─────────────────────────────────┘
The daemon listens on a single port for both UDP and TCP syslog (default 1514). All inbound messages are parsed, batched, and written to SQLite with full-text indexing. The MCP HTTP server runs on a separate port (default 3100) and uses RMCP Streamable HTTP in stateless JSON-response mode. Local stdio-only MCP clients can launch syslog mcp, a query-only MCP process that reads the same SQLite database without starting syslog listeners or the HTTP server.
One MCP tool, syslog, is exposed. Use the required action argument to run search, tail, errors, hosts, sessions, search_sessions, abuse, ai_correlate, usage_blocks, project_context, list_ai_tools, list_ai_projects, correlate, stats, status, apps, source_ips, timeline, patterns, context, get, ingest_rate, silent_hosts, clock_skew, anomalies, compare, compose_status, compose_doctor, unaddressed_errors, ack_error, unack_error, notifications_recent, notifications_test, or help.
For the complete action-specific parameter reference, see docs/mcp/SCHEMA.md.
| Action | Purpose |
|---|---|
search | Full-text search with filters |
tail | Recent log entries |
errors | Error/warning summary by host and severity |
hosts | Host registry with first/last seen |
sessions | AI transcript sessions by project |
search_sessions | Ranked grouped session search |
abuse | Abuse hits in AI transcripts with same-session context |
ai_correlate | AI transcript anchors cross-referenced against non-AI logs |
usage_blocks | AI activity in 5-hour UTC windows |
project_context | Summary for one AI project path |
list_ai_tools | Distinct AI tools with counts |
list_ai_projects | Distinct AI projects with counts |
correlate | Cross-host event correlation in a time window |
stats | Database statistics and storage health |
status | Lightweight runtime and DB health |
apps | Distinct application names with log and host counts |
source_ips | Distinct source identifiers with hostname breakdown |
timeline | Bucketed counts over time |
patterns | Near-duplicate message template clusters |
context | Surrounding logs around a log id or timestamp |
get | One log entry by id, including raw frame |
ingest_rate | Recent ingest throughput and write-block state |
silent_hosts | Hosts whose last_seen is older than a threshold |
clock_skew | Per-host received_at minus timestamp distribution |
anomalies | Recent vs baseline volume/error comparison |
compare | Side-by-side comparison of two time ranges |
compose_status | Redacted read-only Compose deployment diagnostics |
compose_doctor | Alias for Compose deployment health diagnostics |
unaddressed_errors | Repeating unacknowledged error signatures |
ack_error | Acknowledge an error signature |
unack_error | Revoke an error acknowledgement |
notifications_recent | Recent notification firings |
notifications_test | Send a test notification via Apprise |
help | Markdown reference for all actions |
syslog searchFull-text search across all syslog messages with optional filters. Uses SQLite FTS5 with porter stemming.
Parameters