LimaCharlie MCP
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., "@LimaCharlie MCPlook up IOC for IP 192.168.1.1"
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.
LimaCharlie MCP
Standalone local MCP server for LimaCharlie investigation, administration, and content-review workflows.
This project is a controllable alternative to the hosted LimaCharlie MCP endpoint. It uses LimaCharlie API surfaces directly, requires explicit organization scope for org data, records a local audit line for each tool call, and starts with a broad read-only tool surface.
Why This Exists
The official LimaCharlie docs describe:
a hosted HTTP MCP endpoint at
https://mcp.limacharlie.io/mcp,OAuth, JWT, and org API key authentication options,
CLI and SDK helper surfaces layered on top of the same APIs.
This server is different: it runs locally over stdio, exchanges an org API key for short-lived LimaCharlie JWTs, refreshes those JWTs automatically, and calls the APIs directly. That avoids shelling out to the CLI and keeps the MCP implementation small and reviewable.
Related MCP server: MCP Server ELK
Install From Geoff's Plugins
The easiest agent-facing install path is the geoffs-plugins marketplace:
/plugin marketplace add geoffbelknap/geoffs-plugins
/plugin install limacharlie-mcp@geoffs-pluginsThe marketplace plugin starts MCP profiles with uvx from this repository, for
example:
uvx --from git+https://github.com/geoffbelknap/limacharlie-mcp limacharlie-mcp-reviewConfigure credentials through Vault for deployment before starting profile servers. See Onboarding And Auth for the full Vault-first setup and local development fallback.
Tool Surface
The implementation covers LimaCharlie broadly, but normal agent sessions should use a focused profile instead of loading every tool into context. Each profile uses the same API client, auth model, audit log, response envelope, and preview/confirm mutation contract.
Command | Profile | Intended use |
|
| Auth, org discovery, runtime status, schemas, ontology, event types, and download references. |
|
| Sensor onboarding, installation keys, tags, online state, and fleet maintenance. |
|
| Organizations, users, groups, API keys, billing, outputs, extensions, and org configuration. |
|
| D&R, false positives, YARA, Hive content, lookups, playbooks, SOPs, and content governance. |
|
| Bounded detection triage, events, cases, IOC lookups, audit, search, artifacts, and jobs. |
|
| Endpoint containment, response tasking, reliable tasks, job cancellation, and supporting evidence. |
|
| Response tasking plus content/YARA surfaces used to remove adversary footholds. |
|
| Post-incident recovery verification plus guarded rejoin, unseal, tasking, tagging, spotcheck, and case-update previews. |
|
| Read-only posture review, operational/admin issue discovery, detection tuning, content coverage, case backlog, and access hygiene. |
|
| Full developer surface for parity work and audits. Not recommended for normal agent sessions. |
You can also run limacharlie-mcp with LC_MCP_PROFILE set to one of those
profile names. Call lc_tool_catalog after startup to see the active profile,
available profiles, and the filtered operation catalog.
Skills Pack
The repo includes an initial Codex skills pack in skills/ for agent workflows
that should use these MCP profiles:
Skill | Workflow |
| Vault-first auth setup, reauth, UID/OID confusion, and secret-safe smoke tests. |
| Bounded expert review across fleet, content, access, outputs, cases, and detection noise. |
| Evidence-led noisy-alert and missing-alert tuning. |
| Detection, case, event, IOC, search, artifact, and vulnerability triage. |
| Guarded containment with preview/confirm endpoint actions. |
| Evidence-backed adversary eviction and durable content/action changes. |
| Post-incident restoration and recurrence checks. |
This MCP intentionally does not expose live telemetry streaming, spout, or firehose tools. Historical event, detection, audit, search, replay, and spotcheck workflows remain bounded by explicit limits, cursors, selectors, and time windows. Use LimaCharlie outputs, storage, SIEM pipelines, or purpose-built stream processors for operational telemetry streams instead of sending an unbounded firehose into an LLM.
Platform
Tool | Purpose |
| Describe tools, inputs, bounds, side effects, and intended use cases. |
| Show current API identity, optionally scoped to an org or permission check. |
| Show credential mode and cached JWT freshness without exposing secrets. |
| Force a local JWT refresh from configured API-key credentials. |
| List organizations available to the authenticated API key. |
| List supported sensor installer URLs without downloading binaries. |
| List supported adapter binary URLs without downloading binaries. |
Review And Tuning
These tools aggregate bounded reads into compact findings for recurring posture review, noisy-alert triage, and operational hygiene checks. They do not mutate LimaCharlie state and they keep source records summarized instead of returning entire detections, cases, or rule bodies.
Tool | Purpose |
| Aggregate fleet, outputs, access, content, cases, org errors, and optional detection-noise findings. |
| Summarize sensor, online-sensor, and tag evidence for fleet health. |
| Summarize bounded detection volume, concentration, and related case sample evidence for a time window. |
| Summarize D&R, false positive, logging, integrity, YARA, and MITRE coverage evidence. |
| Summarize case backlog, status distribution, severity distribution, and dashboard evidence. |
| Summarize outputs, extension subscriptions, and feedback channel evidence. |
| Summarize users, permissions, groups, and organization API key metadata. |
Investigation
Tool | Purpose |
| List sensors for an explicit org, optionally filtered by selector. |
| Fetch one sensor by sensor ID. |
| List currently online sensors or online counts for an org. |
| Poll one sensor until it is online or a bounded timeout expires. |
| List one bounded page of events for a sensor and time window. |
| Fetch event timeline overview before pulling full events. |
| Fetch one event by atom. |
| Fetch child events for a parent atom. |
| Inspect retained event counts for a time window. |
| List one bounded page of detections for an explicit org and time window. |
| Fetch one detection by detection ID. |
| Search Insight prevalence or locations for an IOC/object. |
| Batch Insight prevalence or location lookups for bounded IOC groups. |
| Lookup one object through Insight with enrichment-oriented naming. |
| Check whether Insight retention appears enabled. |
| Validate LCQL through the org search service before estimation or execution. |
| Estimate LCQL cost for an explicit time window. |
| Start a paginated LCQL search and return a query ID. |
| Poll one bounded LCQL result page and return checkpoint state. |
| Cancel a running LCQL search job. |
| List saved LCQL queries stored in the query hive. |
| Fetch one saved LCQL query by name. |
| Preview creating or updating one saved LCQL query. |
| Preview deleting one saved LCQL query. |
| Load a saved query and start a paginated LCQL search job. |
| List artifacts for an org, sensor, time window, or cursor. |
| Request original artifact payload or signed export URL. |
| List payload metadata without downloading payload bytes. |
| Request payload metadata including a signed download URL when returned. |
| Preview requesting a signed payload upload URL. |
| Preview deleting a payload. |
| Resolve a LimaCharlie authenticated resource locator. |
| List service jobs for an explicit org and time window. |
| Fetch one service job. |
| Poll one service job until terminal state or bounded timeout. |
| List CVE rollups from the Vulnerability Reporting extension. |
| Fetch one CVE detail record, optionally with enrichment. |
| List endpoints affected by one CVE. |
| List package/version pairs affected by one CVE. |
| List endpoints with vulnerability counts. |
| List vulnerable packages and CVEs on one sensor. |
| Fetch vulnerability dashboard graph data. |
| List stored finding resolution overlays. |
| List daily open-finding counts. |
| Fetch EPSS score history for one CVE. |
| List one bounded page of audit logs for a time window. |
| List tags observed across sensors in an org. |
| List tags applied to one sensor. |
| Find sensors with a specific tag. |
| Find sensors by hostname prefix. |
| Export the full sensor manifest for an org. |
| Preview changing org sensor version policy. |
| List services/replicants available to an org. |
| Preview a generic non-impersonated service request. |
| Fetch org IaC configuration through ext-infrastructure. |
| Preview pushing org IaC configuration through ext-infrastructure. |
| List cases for an explicit org with filters and pagination. |
| Fetch one case by case number. |
| Preview creating a case through ext-cases. |
| Preview updating case status, severity, assignment, classification, summary, conclusion, or tags. |
| Preview adding a case note. |
| Preview changing case note stakeholder visibility. |
| Preview bulk-updating up to 200 cases. |
| Preview merging source cases into a target case. |
| List detections linked to a case. |
| Preview linking a detection to a case. |
| Preview removing a detection link from a case. |
| List entities/IOCs attached to a case. |
| Search case entities across an org. |
| Preview adding an entity/IOC to a case. |
| Preview updating an entity note or verdict. |
| Preview removing an entity from a case. |
| List telemetry references linked to a case. |
| Preview linking telemetry to a case. |
| Preview updating telemetry note or verdict. |
| Preview removing telemetry from a case. |
| List forensic artifacts linked to a case. |
| Preview adding a forensic artifact reference to a case. |
| Preview removing a forensic artifact reference from a case. |
| Export a case with detections, entities, telemetry, and artifacts. |
| Fetch Cases report summary metrics. |
| Fetch Cases dashboard counts. |
| Fetch Cases configuration. |
| Preview replacing Cases configuration. |
| List unique case assignees for an org. |
| List ext-cases orgs accessible to the caller. |
| Preview replacing all tags on a case. |
| Preview adding tags through an exact replacement list. |
| Preview removing tags through an exact replacement list. |
Administration
Tool | Purpose |
| Fetch org inventory and quota metadata. |
| Fetch org usage statistics. |
| List current org component errors. |
| Fetch service URLs for sensors, adapters, webhooks, replay, and related connectivity. |
| Fetch runtime metadata, optionally filtered by entity type/name. |
| Fetch enforced quota usage for capacity checks. |
| Check whether an organization name is available. |
| Preview creating a new organization. |
| Fetch one organization config value. |
| Preview setting one organization config value. |
| Preview dismissing one organization component error. |
| Request the LimaCharlie org delete confirmation token. |
| Preview deleting an organization with a confirmation token. |
| Preview setting an org sensor quota. |
| Preview renaming an org. |
| Fetch current billing status. |
| Fetch detailed billing information. |
| Fetch an invoice URL for a specific billing month. |
| List available billing plans. |
| List organization groups accessible to the authenticated identity. |
| Preview creating an organization group. |
| Fetch one organization group definition. |
| Preview deleting an organization group. |
| List audit logs for one organization group. |
| Preview adding a group member. |
| Preview removing a group member. |
| Preview adding a group owner. |
| Preview removing a group owner. |
| Preview replacing group permissions. |
| Preview adding an org to a group. |
| Preview removing an org from a group. |
| List org users. |
| Preview inviting a user to an org. |
| Preview removing a user from an org. |
| List org user permission mappings. |
| Preview granting one user permission. |
| Preview revoking one user permission. |
| Preview setting a user's predefined role. |
| List org API key metadata. |
| Preview creating an org API key. |
| Preview deleting an org API key. |
| List installation key metadata. |
| Fetch one installation key. |
| Preview creating an installation key. |
| Preview deleting an installation key. |
| List configured output integrations. |
| Preview creating an ingestion key. |
| Preview deleting an ingestion key. |
| Preview creating an output integration. |
| Preview deleting an output integration. |
| List extension subscriptions for an org. |
| Preview subscribing an org to an extension. |
| Preview unsubscribing an org from an extension. |
| Preview rotating an extension subscription key. |
| List globally available extension definitions. |
| Fetch one extension definition. |
| Preview creating an extension definition. |
| Preview updating an extension definition. |
| Preview deleting an extension definition. |
| Fetch extension schema for an org context. |
| Preview a generic extension request. |
| List ingestion key metadata. |
| List org-scoped AI sessions for governance and cost visibility. |
| Fetch one org-scoped AI session. |
| Fetch bounded history for one org-scoped AI session. |
| Preview terminating a running AI session. |
| List API key identities with AI-session usage data. |
| Fetch bounded token and cost usage for one AI identity. |
Content Review
Tool | Purpose |
| List event schemas for an org. |
| Fetch one event schema. |
| Fetch LimaCharlie ontology/event definitions. |
| List available event types. |
| Fetch MITRE ATT&CK coverage data. |
| List artifact collection rules. |
| Preview creating or updating an artifact collection rule. |
| Preview deleting an artifact collection rule. |
| List logging collection rules. |
| Preview creating or updating a logging collection rule. |
| Preview deleting a logging collection rule. |
| Validate a D&R rule through Replay using dry-run evaluation. |
| Dry-run a D&R rule against explicit events. |
| Dry-run a D&R rule against historical data without creating detections. |
| List D&R rules from a hive namespace. |
| Fetch one D&R rule from a hive namespace. |
| Preview creating or updating a D&R rule. |
| Preview deleting a D&R rule. |
| List false-positive rules. |
| Fetch one false-positive rule. |
| Preview creating or updating a false-positive rule. |
| Preview deleting a false-positive rule. |
| List integrity monitoring rules. |
| Fetch one integrity monitoring rule. |
| Preview creating or updating an integrity monitoring rule. |
| Preview deleting an integrity monitoring rule. |
| Validate USP mapping/input configuration. |
| List known LimaCharlie Hive type names. |
| List records from a Hive partition. |
| Fetch one Hive record data payload. |
| Fetch one Hive record metadata payload. |
| Fetch the JSON Schema for a typed Hive. |
| Validate a Hive record without saving it. |
| Preview creating or updating a generic Hive record. |
| Preview deleting a generic Hive record. |
| Preview renaming a generic Hive record. |
| Preview toggling a Hive record's enabled metadata. |
| List secret Hive records without exposing secret values. |
| Fetch one secret Hive record with sensitive fields redacted. |
| Preview creating or updating a secret Hive record. |
| Preview deleting a secret Hive record. |
| Preview toggling a secret Hive record's enabled metadata. |
| List lookup Hive records. |
| Fetch one lookup Hive record. |
| Preview creating or updating a lookup Hive record. |
| Preview deleting a lookup Hive record. |
| Preview toggling a lookup Hive record's enabled metadata. |
| List cloud adapter Hive records. |
| Fetch one cloud adapter Hive record. |
| Preview creating or updating a cloud adapter Hive record. |
| Preview deleting a cloud adapter Hive record. |
| Preview toggling a cloud adapter Hive record's enabled metadata. |
| List external adapter Hive records. |
| Fetch one external adapter Hive record. |
| Preview creating or updating an external adapter Hive record. |
| Preview deleting an external adapter Hive record. |
| Preview toggling an external adapter Hive record's enabled metadata. |
| List playbook Hive records. |
| Fetch one playbook Hive record. |
| Preview creating or updating a playbook Hive record. |
| Preview deleting a playbook Hive record. |
| Preview toggling a playbook Hive record's enabled metadata. |
| List SOP Hive records. |
| Fetch one SOP Hive record. |
| Preview creating or updating an SOP Hive record. |
| Preview deleting an SOP Hive record. |
| Preview toggling an SOP Hive record's enabled metadata. |
| List organization-note Hive records. |
| Fetch one organization-note Hive record. |
| Preview creating or updating an organization-note Hive record. |
| Preview deleting an organization-note Hive record. |
| Preview toggling an organization-note Hive record's enabled metadata. |
| List AI agent Hive records. |
| Fetch one AI agent Hive record. |
| Preview creating or updating an AI agent Hive record. |
| Preview deleting an AI agent Hive record. |
| Preview toggling an AI agent Hive record's enabled metadata. |
| List AI skill Hive records. |
| Fetch one AI skill Hive record. |
| Preview creating or updating an AI skill Hive record. |
| Preview deleting an AI skill Hive record. |
| Preview toggling an AI skill Hive record's enabled metadata. |
| List ai_memory Hive records. |
| Fetch the full ai_memory record for an agent. |
| List memory entries for an ai_memory agent record. |
| Fetch one memory entry from an ai_memory agent record. |
| Preview setting one ai_memory entry. |
| Preview deleting one ai_memory entry. |
| Preview deleting an entire ai_memory agent record. |
| List YARA scanning rules. |
| Preview running an ad-hoc YARA scan on one sensor. |
| Preview creating or updating a YARA scanning rule. |
| Preview deleting a YARA scanning rule. |
| List YARA source names. |
| Fetch one YARA source. |
| Preview creating or updating a YARA source. |
| Preview deleting a YARA source. |
| List exfil prevention rules. |
| Preview creating an exfil watch rule. |
| Preview creating an exfil event rule. |
| Preview deleting an exfil event rule. |
| Preview deleting an exfil watch rule. |
| List ext-feedback channel configuration. |
| Preview replacing ext-feedback channel configuration. |
| Preview sending an external approval request through ext-feedback. |
| Preview sending an external acknowledgement request through ext-feedback. |
| Preview sending an external free-form question through ext-feedback. |
Response
Tool | Purpose |
| List local mutation previews that can still be confirmed. |
| Preview tasking one sensor. |
| Preview running a fleet-wide spotcheck task. |
| Check whether one sensor is currently network-isolated. |
| Preview isolating one sensor from the network. |
| Preview removing network isolation from one sensor. |
| Check whether one sensor is currently sealed. |
| Preview sealing one sensor against uninstall. |
| Preview unsealing one sensor. |
| Preview deleting one sensor record. |
| Preview deleting one service job record. |
| List pending reliable-tasking extension tasks for an org. |
| Preview queueing one reliable task through ext-reliable-tasking. |
| Preview cancelling one pending reliable task through ext-reliable-tasking. |
| Preview adding a tag to one sensor, optionally with TTL. |
| Preview removing a tag from one sensor. |
| Execute the exact typed mutation bound to a preview token. |
| Cancel a pending local mutation preview without calling LimaCharlie. |
Mutations are available only through the preview/confirm contract. Current typed previews cover sensor response actions, job deletion, sensor tags, sensor version policy, case lifecycle/investigation/config/tag changes, administration writes, extension/service/config-sync/feedback requests, generic Hive records, AI-memory records, payload metadata, spotcheck requests, and artifact/logging/D&R/false-positive/integrity/YARA/exfil content changes. Live telemetry streaming, spout, and firehose surfaces are intentionally unsupported. Remaining multi-request helper surfaces stay gated until they have typed preview/confirm tools or bounded read contracts with request-shape tests.
Credential-shaped upstream fields such as API keys, JWTs, secrets, passwords, and private/client keys are redacted from MCP responses and audit excerpts. Local preview confirmation tokens remain visible in preview responses because they are required to execute the explicit confirmation step.
Broad AI-generation and chat wrappers are not a default parity target. This MCP focuses on deterministic LimaCharlie administration, investigation, content, response, feedback, and evidence workflows. AI-adjacent coverage is limited to auditable state, memory, session governance, and usage visibility with cost and credential guardrails.
Agent Experience Contract
Every tool returns the same envelope:
{
"ok": true,
"operation": "sensor.list",
"request_id": "req_...",
"resource": {"type": "sensor_collection", "id": "<oid>"},
"state": {},
"data": {},
"side_effects": [],
"warnings": [],
"meta": {
"status_code": 200,
"duration_ms": 42,
"truncated": false,
"summary": {"sensors_count": 12}
},
"observed_at": "2026-06-18T23:00:00Z"
}Errors use structured classes and retryability:
{
"ok": false,
"operation": "sensor.list",
"error": {
"code": "forbidden",
"class": "policy",
"message": "missing permission",
"retryable": false,
"same_input_retryable": false,
"suggested_next_actions": [
"Verify LC_API_KEY and org scope.",
"Check the required LimaCharlie permission for this operation."
]
},
"side_effects": []
}The design follows the AX rule that after each tool call an agent should know what happened, what changed, what proves it, and what to do next.
LCQL search follows a bounded lifecycle:
lc_validate_search_querylc_estimate_search_querylc_execute_search_querylc_poll_search_queryuntilstate.terminalis true orstate.checkpoint.next_tokenis exhaustedlc_cancel_search_querywhen a running query is no longer needed
lc_poll_search_query returns at most the requested result rows per poll and
puts resume state under state.checkpoint, so agents can continue explicitly
without hiding pagination in a long-running tool call.
Install
python -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"Configure stable API-key credentials through Vault. Users do not need to
generate or paste JWTs, and they should not put the LimaCharlie API key in a
.env file. The MCP server handles LimaCharlie JWT exchange and refresh in
memory.
If you already have a Vault token file from vault login, Vault Agent, or your
platform secret mount, use the bootstrap helper. It prompts for the
LimaCharlie API key without echoing it, writes the key to Vault, and prints a
nonsecret MCP env block.
limacharlie-mcp-vault-bootstrap \
--vault-addr "https://vault.example.com" \
--token-file "/run/secrets/limacharlie-mcp-bootstrap-token" \
--runtime-token-file "/run/secrets/limacharlie-mcp-vault-token"Store the LimaCharlie API key in Vault KV v2 at
secret/data/limacharlie/mcp, field api_key. For unattended setup, pass
--api-key-stdin and pipe the key from an approved secret manager. For local
development only, you can use LC_SECRET_PROVIDER=env with LC_API_KEY.
Org-scoped tools always require an explicit oid. Discovery tools
(lc_list_orgs, unscoped lc_auth_whoami) use LimaCharlie's minimal JWT org
placeholder internally.
MCP Client Config
Example stdio config:
{
"mcpServers": {
"limacharlie-local": {
"command": "/path/to/limacharlie-mcp/.venv/bin/limacharlie-mcp",
"env": {
"LC_SECRET_PROVIDER": "vault",
"LC_VAULT_ADDR": "https://vault.example.com",
"LC_VAULT_TOKEN_FILE": "/run/secrets/limacharlie-mcp-vault-token",
"LC_API_KEY_REF": "vault://secret/data/limacharlie/mcp#api_key"
}
}
}
}After starting the server, call lc_auth_status. If credentials are configured
correctly, call lc_auth_refresh only when you want to force a new JWT after
credential rotation or auth troubleshooting.
For first-time setup, read Onboarding And Auth
before creating keys. LimaCharlie organization API keys and user API keys come
from different UI locations and should be kept in separate MCP variables.
Run limacharlie-mcp-auth-doctor to validate the selected auth mode before
connecting the MCP to an agent client.
Environment
Variable | Default | Purpose |
|
| Credential provider. Supported values: |
|
| Vault reference for the LimaCharlie API key. |
| unset | Vault server URL. Required for the Vault provider. |
| unset | File containing a Vault token from Vault Agent, platform secret mount, or |
| unset | Vault token value. Useful for local tests; avoid in shared configs. |
| unset | Optional Vault Enterprise namespace. |
| unset | Local-development fallback when |
| unset | Local-development fallback for user-scoped API key mode. Keep separate from |
| unset | Vault reference for a user-scoped LimaCharlie API key. |
| unset | User ID for user-scoped API keys. Does not switch org-key mode unless a user key source is configured. |
|
| Optional auth selector. Use |
|
| LimaCharlie API root. |
|
| JWT exchange root. |
|
| Cases API root. |
|
| AI-session governance API root. |
|
| Per-command timeout. |
| platform cache dir | JSONL audit log path. |
|
| Optional profile filter: |
The audit log records timestamp, purpose, org ID, HTTP method, URL, query parameters, status code, duration, and output size. It does not record credentials or authorization headers.
See docs/onboarding-auth.md for the onboarding, auth, and reauth flow. See docs/deployment.md for the Vault-first deployment model, Vault policies, Vault Agent token-file example, and MCP client config templates.
Development
python -m pytest tests/ -qThe tests do not require LimaCharlie credentials or network access.
Run the category parity audit before claiming new LimaCharlie API/SDK coverage or adding a new tool family:
python tools/parity/audit_parity.py --fetch-current-docs --format markdownRun the full local readiness gate before release or handoff:
scripts/readiness-check.shDocumentation Boundary
User-facing setup and auth docs live in this repo. Internal coverage matrices, AX reviews, tool contracts, implementation plans, and work tracking live in the LimaCharlie MCP Notion space.
References
LimaCharlie docs: https://docs.limacharlie.io/
AI assistant setup: https://docs.limacharlie.io/6-developer-guide/mcp-server/
Python SDK docs: https://docs.limacharlie.io/6-developer-guide/sdks/python-sdk-v4/
API key docs: https://docs.limacharlie.io/7-administration/access/api-keys/
Onboarding and auth: docs/onboarding-auth.md
Deployment: docs/deployment.md
This server cannot be installed
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/geoffbelknap/limacharlie-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server