kolide-mcp-server
v0.12.5
Published
Model Context Protocol server for Kolide security platform
Maintainers
Readme
Kolide MCP Server
Model Context Protocol server for Kolide API integration. Provides complete access to Kolide's device management and security monitoring platform with enhanced Live Query capabilities, caching, and resilience patterns.
Latest: v0.11.0 - Toolhost Pattern implementation reduces context overhead by ~90% while maintaining 100% backward compatibility!
Features
- 🎯 Toolhost Pattern Architecture - 5 intelligent dispatchers replacing 58 individual tools
- 🚀 Enhanced Live Query Experience - Simplified workflow with auto-publishing and status tracking
- 💾 Intelligent Caching - Reduces API calls and improves response times
- 🔄 Automatic Retries - Exponential backoff with jitter for transient failures
- 🛡️ Circuit Breaker - Protects against cascading failures
- 📊 Built-in Telemetry - Track usage, performance, and errors
- ✅ Query Validation - Validate osquery syntax before execution
- 📚 Query Templates - Pre-built queries for common use cases
- 🔍 Full Transparency - Complete operation discovery with MCP compliance
Installation
npm install -g kolide-mcp-serverConfiguration
Required environment variable:
export KOLIDE_API_KEY="your-api-key"Optional:
export KOLIDE_API_VERSION="2023-05-26"
export KOLIDE_BASE_URL="https://api.kolide.com"Usage
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"kolide": {
"command": "npx",
"args": ["kolide-mcp-server"],
"env": {
"KOLIDE_API_KEY": "your-api-key"
}
}
}
}Command Line
npx kolide-mcp-serverToolhost Architecture (v0.11.0+)
The Kolide MCP Server now uses an intelligent Toolhost Pattern that consolidates operations into 5 category-based dispatchers, reducing context overhead by ~90% while maintaining full backward compatibility.
Category Dispatchers
- Device Management (
device.dispatch) - 13 operations- Device CRUD, refresh checks, authentication modes
- Issues tracking and check results
- Identity & Access (
identity.dispatch) - 13 operations- People management, device assignments
- Person and device groups
- Compliance & Security (
compliance.dispatch) - 13 operations- Security checks and configurations
- Exemption and registration requests
- Query & Analytics (
query.dispatch) - 17 operations- Live queries with auto-publishing
- Reporting tables and saved queries
- System Administration (
admin.dispatch) - 7 operations- Audit and authentication logs
- Admin users and current user info
Using Toolhost Dispatchers
// Example: Get all devices using toolhost
{
"tool": "device.dispatch",
"arguments": {
"operation": "list",
"cursor": "optional_cursor",
"per_page": 100
}
}
// Example: Execute a live query
{
"tool": "query.dispatch",
"arguments": {
"operation": "execute",
"query": "SELECT * FROM os_version",
"target": "all_macs",
"wait_for_results": true
}
}Available Tools (Legacy)
All 58 original tools remain available for backward compatibility:
Audit & Auth (4)
get_audit_logs- Get audit logsget_audit_log- Get audit log by IDget_auth_logs- Get authentication logsget_auth_log- Get authentication log by ID
Devices (14)
get_devices- Get all devicesget_device- Get device by IDdelete_device- Permanently delete devicedelete_device_registration- Delete device registrationrefresh_device_checks- Refresh checks on deviceupdate_device_auth_mode- Update authentication modeget_device_issues- Get open issues for deviceget_device_check_results- Get check results for devicesearch_devices- Search devices with query syntax
People (8)
get_people- Get all peopleget_person- Get person by IDget_deprovisioned_people- Get deprovisioned peopleget_person_devices- Get devices for personget_person_issues- Get issues for personsearch_people- Search people with query syntaxwhoami- Get current authenticated user
Groups (7)
get_device_groups- Get device groupsget_device_group- Get device group by IDget_device_group_devices- Get devices in groupadd_device_to_group- Add device to groupremove_device_from_group- Remove device from groupget_person_groups- Get person groupsget_person_group- Get person group by ID
Checks (6)
get_checks- Get all checksget_check- Get check by IDget_check_results- Get check resultsget_check_configuration- Get check configurationupdate_check_configuration- Update check configurationsearch_checks- Search checks with query syntax
Issues (2)
get_issues- Get all issuesget_issue- Get issue by ID
Packages (2)
get_packages- Get all packagesget_package- Get package by ID
Exemption Requests (4)
get_exemption_requests- Get exemption requestsget_exemption_request- Get exemption request by IDapprove_exemption_request- Approve exemption requestdeny_exemption_request- Deny exemption request
Registration Requests (3)
get_registration_requests- Get registration requestsget_registration_request- Get registration request by IDupdate_registration_request- Update registration status
Live Query (7)
get_live_query_campaigns- Get all campaignsget_live_query_campaign- Get campaign by IDcreate_live_query- Create new query campaignupdate_live_query- Update existing campaigndelete_live_query- Delete campaignget_live_query_results- Get query resultspublish_live_query- Publish campaign for execution
Reporting (6)
get_reporting_tables- Get reporting tablesget_reporting_table- Get table by nameget_reporting_queries- Get reporting queriesget_reporting_query- Get query by IDget_table_records- Get records from tableget_query_results- Get results from query
Admin Users (2)
get_admin_users- Get admin usersget_admin_user- Get admin user by ID
Live Query Examples
Basic Usage
Create and run osquery on devices:
// Simple query with auto-publish (NEW!)
{
"tool": "create_live_query",
"arguments": {
"query": "SELECT name, version FROM os_version",
"name": "OS Version Check",
"target_macs": true
}
}
// Get results
{
"tool": "get_live_query_results",
"arguments": {
"campaign_id": "12345",
"per_page": 100
}
}Common Query Templates
The server includes pre-built query templates for common operations:
// Security audit - find listening ports
{
"tool": "create_live_query",
"arguments": {
"query": "SELECT DISTINCT p.name, l.port, l.protocol FROM processes p JOIN listening_ports l ON p.pid = l.pid WHERE l.port < 1024",
"name": "Privileged Port Audit",
"target_macs": true
}
}
// Application inventory
{
"tool": "create_live_query",
"arguments": {
"query": "SELECT name, version, bundle_identifier FROM apps WHERE name IN ('Google Chrome', 'Firefox', 'Safari', 'Microsoft Edge')",
"name": "Browser Inventory",
"target_macs": true
}
}
// Find suspicious processes
{
"tool": "create_live_query",
"arguments": {
"query": "SELECT * FROM processes WHERE on_disk = 0",
"name": "Memory-only Processes",
"target_macs": true
}
}
// USB device monitoring
{
"tool": "create_live_query",
"arguments": {
"query": "SELECT * FROM usb_devices WHERE removable = 1",
"name": "Removable USB Devices",
"target_macs": true
}
}Advanced Live Query Features
Query Validation
Queries are automatically validated for dangerous operations and syntax errors:
- Prevents DROP, DELETE, TRUNCATE, ALTER operations
- Warns about SELECT * on large tables
- Estimates query complexity
Automatic Retries
Failed API calls are automatically retried with exponential backoff:
- Default: 3 retries with 1s, 2s, 4s delays
- Adds jitter to prevent thundering herd
Caching
Results are intelligently cached to reduce API calls:
- Campaign status: 5 second cache
- Query results: 5 second cache
- Device/person data: 60 second cache
Circuit Breaker
Protects against API failures:
- Opens after 5 consecutive failures
- Half-open state for gradual recovery
- 60 second reset timeout
Search Syntax
Kolide query syntax for search tools:
name~Chrome- Partial matchdevice_type:Mac- Exact matchserial:ABC123- Serial numberwill_block_at:[2024-01-01,2024-12-31]- Date range
Pagination
Most list endpoints support pagination:
{
"cursor": "next_page_cursor",
"per_page": 100 // Max 100
}Error Handling
All errors include descriptive messages. Common errors:
- 401: Invalid API key
- 404: Resource not found
- 422: Invalid parameters
- 429: Rate limit exceeded
Development
git clone https://github.com/CoreWeave-Sandbox/kolide-mcp-server
cd kolide-mcp-server
npm install
npm run buildTesting
npm testTypeScript
Project uses TypeScript with ES2022 target and Node16 module resolution.
Version
Current: 0.11.0 (Toolhost Pattern - 90% context reduction)
License
MIT
