
Loggly Mcp
io.github.andrewbabuv1.3.0更新於 Oct 3, 2026
Read-only Loggly search and analytics with aggregation-first traffic tools and IP intelligence.
概覽
唯讀的 Loggly 日誌搜尋與分析,提供以聚合為主的流量摘要與 IP 情報查詢。
- 功能
- 包裝 Loggly 的 /apiv2 端點進行唯讀日誌作業:建立搜尋、取得與翻頁事件、計數、volume metrics、stats 查詢、欄位清單與欄位分面。聚合優先工具(search_logs、traffic_by_ip、traffic_by_host、traffic_by_path、group_by_*、timeline、sample_events)回傳總量、Top-N 分佈、分桶時間軸與少量樣本,而非原始事件傾印。IP 情報工具提供 RDAP 歸屬查詢、GreyNoise 與 AbuseIPDB 信譽檢查,以及 get_ip_context,後者結合這些資料與各已設定帳號的 Loggly 流量計數。寫入類端點會被阻擋。
- 適用情境
- 適合讓助理排查日誌、彙整流量模式或研判可疑 IP,而不必把原始事件傾印塞進上下文。適用於事件應變、機器人流量研判與 Loggly 帳號的日常日誌分析。
- 執行需求
- 透過 npm 套件 @andrewbabu/loggly-mcp 以 stdio 在本機執行(需要 Node.js 與 npx)。需要 LOGGLY_SUBDOMAIN 與密鑰 LOGGLY_TOKEN;選用的 LOGGLY_ACCOUNTS 可設定多個帳號。IP 信譽需要 GREYNOISE_API_KEY 與 ABUSEIPDB_API_KEY。選用的 HTTP 版本需要 MCP_BEARER_TOKEN,並應置於內網或 VPN 之後。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Loggly Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Loggly MCP
[loggly-mcp MCP server – quality and maintenance score on Glama]
Read-only Model Context Protocol (MCP) server for Loggly /apiv2/* APIs, plus IP
intelligence (RDAP, GreyNoise, AbuseIPDB). Exposes Loggly search/analytics/field tools,
aggregation-first traffic tools, and IP-context tools, while blocking write endpoints.
Skill Usage
For efficient log retrieval (less token use) and summarization, pair this server with a skill.
Quickstart
Install from npm
MCP client configuration:
Run from source
Edit .env with your Loggly credentials, then run:
Once the repo is trusted in Codex, the MCP server can also be started automatically via .codex/config.toml.
Configuration
The server loads .env from its working directory on startup.
Required
LOGGLY_SUBDOMAIN
Loggly account subdomain or full Loggly URL (e.g.your-subdomainorhttps://your-subdomain.loggly.com)LOGGLY_TOKEN
Loggly API token
Optional
LOGGLY_AUTH_MODE
bearer(default) orbasicLOGGLY_MAX_RETRIES
Default:2LOGGLY_REQUEST_TIMEOUT_MS
Default:15000LOGGLY_LOG_LEVEL
error,warn,info(default), ordebug
Remote (HTTP) Server
For a stdio server anyone on the team can reach from Claude Code without a local checkout, run the HTTP variant instead and host it on an internal server/VM.
Edit .env with your Loggly credentials plus MCP_BEARER_TOKEN (generate one with
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"), then:
This starts a stateless Streamable HTTP MCP server on MCP_HTTP_PORT (default 8787):
GET /healthz— unauthenticated liveness check.POST /mcp— the MCP endpoint. RequiresAuthorization: Bearer <MCP_BEARER_TOKEN>; every other request to/mcpgets401.
The Loggly credentials stay server-side — everyone connecting shares the same Loggly account
access. MCP_BEARER_TOKEN only gates access to the MCP server itself, so treat it as a secret
and rotate it if it leaks (e.g. re-generate and redistribute).
Only run this behind your internal network/VPN, not exposed directly to the public internet — there's a single shared token, not per-user auth.
Connecting from Claude Code
Each org member adds the remote server once:
Swap in the internal hostname/port you deployed to and the token you were given.
Running with Docker
Multiple Accounts / Domains
The server can hold credentials for several Loggly accounts (different subdomains, different tokens) at once and target them per tool call.
Set LOGGLY_ACCOUNTS to a JSON object mapping an account name to its credentials:
When LOGGLY_ACCOUNTS is set, it replaces LOGGLY_SUBDOMAIN/LOGGLY_TOKEN/LOGGLY_AUTH_MODE.
Every tool then accepts an optional account argument (e.g. account: "acme") to pick which
account's credentials to use for that call.
- If
accountis omitted, the server usesLOGGLY_DEFAULT_ACCOUNTif set, otherwise"default", otherwise the single configured account if there's only one. - An unknown
accountvalue returns an error listing the configured account names. iterate_events_nextcan also infer the account from thenext_urlhost whenaccountis omitted, as long as exactly one configured account matches that host.
Existing single-account setups (just LOGGLY_SUBDOMAIN/LOGGLY_TOKEN) keep working unchanged —
they're treated as one account named "default".
Aggregation-First Traffic Tools
Raw event dumps are slow and expensive to reason about. These tools return a summary — totals, top-N breakdowns, a bucketed timeline, and a small representative sample — instead:
search_logs— the general-purpose version: query + time range in, aggregated summary out.traffic_by_ip/traffic_by_host/traffic_by_path— same aggregation, pre-scoped to one IP/hostname/path.group_by_ip/group_by_path/group_by_user_agent— facet counts only (thin wrappers overfield_facets), for when you just need a breakdown, not the full aggregate.timeline— bucketed counts over a range, computed client-side via repeated/apiv2/events/countcalls (Loggly'svolume-metricsendpoint doesn't accept a free-text query, so this is the only way to get a timeline for an arbitrary search).sample_events— a handful of representative raw events, when you need examples rather than the complete result set.
Field naming depends on how each Loggly source parses its logs, and can differ between accounts
and even between tags within one account — so these tools resolve field names discovery-first:
for any role not explicitly overridden (host_field/path_field/status_field/user_agent_field/
ip_field arguments, or the LOGGLY_FIELD_HOST/_PATH/_STATUS/_USER_AGENT/_IP env vars),
they check /apiv2/fields/ for the actual query and match candidates against known role patterns:
- Exactly one match → used automatically, reported under
discovered_fieldsin the result. - Multiple plausible matches (e.g. a source with both
ClientIpandCustIP) → never guessed between — reported underambiguous_fieldsinstead, falling back to the configured default. Pass the correct one explicitly via the matching*_fieldargument. - No match → falls back to the configured default (
host,path,status,user_agent,ip).
Run list_fields yourself if you want to see every candidate before deciding on an override.
IP Intelligence
rdap_lookup— IP ownership/network registration (RIR, netblock, org, country) via public RDAP (rdap.org). No API key required.ip_reputation— GreyNoise (internet-wide scanning noise) + AbuseIPDB (community abuse reports) for an IP. RequiresGREYNOISE_API_KEY/ABUSEIPDB_API_KEY; either one missing just comes back asavailable: falsefor that source, not an error.get_ip_context— combines all of the above with Loggly traffic (1h/24h/30d counts, first/last seen, hosts, top paths) checked across every configured Loggly account unlessaccountis given, and flagscross_domain_correlationwhen the IP shows activity in more than one account. Per thebot-traffic-triageplaybook, that cross-domain pattern is the single strongest signal for distinguishing targeted reconnaissance from background noise.
Treat all IP-intel output as one input among several — identity/reputation data (who owns an
IP, third-party scanner reports) should carry less weight than behavioral evidence from your own
logs. See the bot-traffic-triage skill for the full investigation methodology.
Logging
Logs are written to stderr to avoid interfering with MCP stdio traffic.
Use LOGGLY_LOG_LEVEL to control verbosity. Default is info.
Timeouts, Retries & Concurrency
Requests enforce a per-call timeout of LOGGLY_REQUEST_TIMEOUT_MS (default 15000).
Transient failures (429, 500 with timeout-like body, 503, 504, or network timeouts) are retried up to LOGGLY_MAX_RETRIES times, honoring a Retry-After header on 429 when Loggly sends one, falling back to exponential backoff otherwise.
The aggregation tools (search_logs, traffic_by_*, get_ip_context, etc.) fan out several requests per call via Promise.all (facets + timeline buckets + a sample). LOGGLY_MAX_CONCURRENT_REQUESTS (default 4) caps how many of those run at once per account, so that fan-out doesn't trip Loggly's own rate limit by itself. If you still see 429s from a single aggregation call, lower this; if Loggly's limit is more generous, raise it.
Tool Manifest
Tool metadata is stored in tool-manifest.json and verified against src/server.js.
Smoke Test
Smoke test runs without Loggly credentials by setting LOGGLY_SMOKE_TEST=1.
Implemented MCP Tools
Low-level Loggly API wrappers:
connection_testcreate_searchget_eventssearch_and_get_eventsiterate_events_pageiterate_events_nextcount_eventsvolume_metricsstats_querylist_fieldsfield_facetsraw_api_call
Aggregation-first traffic tools:
search_logstraffic_by_iptraffic_by_hosttraffic_by_pathgroup_by_ipgroup_by_pathgroup_by_user_agenttimelinesample_events
IP intelligence:
rdap_lookupip_reputationget_ip_context
Examples
Example tool argument payloads are in examples/.
Development
npm test runs manifest verification and the smoke test. CI runs the same checks in .github/workflows/ci.yml.
Versioning
VERSIONcontains the current release version.CHANGELOG.mdtracks changes by release.
Security Notes
.envfiles must never be committed.- Tokens and API keys (
LOGGLY_TOKEN,LOGGLY_ACCOUNTS,GREYNOISE_API_KEY,ABUSEIPDB_API_KEY,MCP_BEARER_TOKEN) are treated as secrets. - This server enforces read-only access to Loggly
/apiv2/*endpoints. IP-intel calls (RDAP/GreyNoise/AbuseIPDB) are read-only GET requests to those third-party services; no Loggly credentials are ever sent to them, and no IP-intel keys are sent to Loggly.
來源:README.md,提交 0115d59
工具
0版本歷史
1- v1.3.0最新Oct 3, 2026


