A secure, minimal, and schema-enforced MCP server for eBPF β purpose-built for AI integration, kernel introspection, and automation.
ebpf-mcp
is a secure Model Context Protocol (MCP) server that exposes a minimal set of structured tools to interact with eBPF β optimized for safe AI control, automation agents, and human operators.
It enables loading, attaching, introspecting, and streaming eBPF programs β all through strict JSON Schema contracts validated at runtime. No REST APIs, no shell escapes, and no bpftool wrappers.
# Install ebpf-mcp server
curl -fsSL https://raw.githubusercontent.com/sameehj/ebpf-mcp/main/install.sh | sudo bash
# Start the service (runs on port 8080 by default)
sudo systemctl start ebpf-mcp
sudo systemctl enable ebpf-mcp
# Get your auth token
cat /etc/ebpf-mcp-token
# Check service status
sudo systemctl status ebpf-mcp
# View logs if needed
sudo journalctl -u ebpf-mcp -f
For air-gapped or development environments:
git clone https://github.com/sameehj/ebpf-mcp.git
cd ebpf-mcp
sudo ./install.sh v1.0.2
# Run the complete test suite
cd scripts/
chmod +x test-ebpf-mcp-server.sh
./test-ebpf-mcp-server.sh <your-token>
If no token is provided, the script will prompt for it interactively.
Once installed, connect Claude to your eBPF server (runs on port 8080):
# Add MCP server to Claude CLI
claude mcp add ebpf http://localhost:8080/mcp \
-t http \
-H "Authorization: Bearer $(cat /etc/ebpf-mcp-token)"
# Start Claude with eBPF tools
claude --debug
# Optional: Test with MCP Inspector (requires Node.js)
npx @modelcontextprotocol/inspector http://localhost:8080/mcp
Example prompts:
> Get system info and kernel version
> Load and attach a kprobe program to monitor sys_execve
> Show me all active eBPF programs and their types
> Stream events from ringbuffer maps for 10 seconds
> Trace kernel errors for the next 5 seconds
Method | Command | Use Case |
---|---|---|
One-liner | curl ... | sudo bash |
Production systems |
Manual | git clone && sudo ./install.sh |
Development/air-gapped |
Build from source | make build |
Custom modifications |
Docker | Coming soon | Containerized environments |
Each tool is designed to be schema-validatable, AI-orchestrable, and safe-by-default. They cover 80%+ of real-world observability and control workflows.
Tool Name | Status | Description | Capabilities Required |
---|---|---|---|
info |
β | System introspection: kernel, arch, BTF | CAP_BPF or none (read-only) |
load_program |
β | Load and validate .o files (CO-RE supported) |
CAP_BPF or CAP_SYS_ADMIN |
attach_program |
β | Attach program to XDP, kprobe, tracepoint hooks | Depends on type (e.g. CAP_NET_ADMIN for XDP) |
inspect_state |
β | List programs, maps, links, and tool metadata | CAP_BPF (read-only) |
stream_events |
β | Stream events from ringbuf/perfbuf maps | CAP_BPF (read-only) |
trace_errors |
β | Monitor kernel tracepoints for error conditions | CAP_BPF (read-only) |
All tools return structured JSON output β AI-ready, streaming-compatible, and schema-validated.
π See
docs/TOOL_SPECS.md
for full schema definitions.
- β Query kernel version, architecture, and BTF availability
- β Load programs from disk or inline base64 with optional BTF
- β Attach to live systems with type-safe constraints
- β Inspect pinned objects, kernel version, verifier state
- β Stream real-time events with filtering by pid/comm/cpu
- β Trace kernel errors and system anomalies
- β Discover available tools and their schemas
- β Integrate with Claude, Ollama, or MCP-compatible clients
Layer | Controls |
---|---|
eBPF execution | Kernel verifier + resource caps |
Filesystem | No shell, no exec, path-validated |
Runtime isolation | Session-scoped cleanup, strict inputs |
AI safety | Capability-aware schemas + output limits |
Authentication | Bearer token + HTTPS ready |
π§Ό All resources are automatically cleaned up when a client disconnects (no manual unload/detach required unless pinned).
.
βββ cmd/ # MCP server + CLI client
βββ internal/ # Core logic: eBPF, tools, kernel adapters
βββ pkg/types/ # JSON schema bindings + shared types
βββ docs/ # Tool specs, design notes, schemas
βββ scripts/ # Install script + test suite
βββ schemas/ # JSON Schema files for each tool
- π No manual detach: Links are closed automatically unless pinned
- π§Ή Auto cleanup: FDs and memory are released on disconnect
- π Pinning: Optional pin paths (
/sys/fs/bpf/...
) for maps/programs/links
- All tools are strictly typed with published schemas and return structured JSON output
- AI-ready: No parsing required β direct integration with language models
- Streaming-compatible: Real-time data flows for observability workflows
- Responses include:
tool_version
verifier_log
(for debugging)- Structured
error
withcontext
Future optional tools:
pin_object
/unpin_object
detach_link
map_batch_op
These are omitted from the default for security and simplicity.
- Linux Kernel eBPF Docs
- Model Context Protocol
- MCP Inspector Tool
- JSON Schema Spec (2020-12)
- eBPF Security Best Practices
- Cilium for Kubernetes Observability
π§ͺ See scripts/test-ebpf-mcp-server.sh
for full validation suite.
Basic Architecture:
Claude / Ollama / AI Client
β
MCP JSON-RPC
β
ebpf-mcp server
β
Kernel APIs
Component | License |
---|---|
internal/ebpf/ |
GPL-2.0 |
Everything else | Apache-2.0 |
π¬ GitHub β sameehj/ebpf-mcp π Contributions, issues, and PRs welcome!
Structured. Safe. Schema-native.
ebpf-mcp
brings eBPF to the age of AI.