pfSense MCP Server
pfSense MCPサーバー
自然言語でpfSenseファイアウォールを管理しましょう。327個のツール。9層の安全対策。コマンド一つで開始。
You: "Block all traffic from 203.0.113.5 on WAN"
Claude: Creates block rule → applies changes → confirms with rollback instructionspfSense MCPサーバーは、Claude Desktop、Claude Code、およびその他のMCP互換AIクライアントを、お使いのpfSenseファイアウォールに接続します。質問、問題の診断、ファイアウォールの管理をすべて会話を通じて行えます。
なぜこれが必要なのか
pfSenseファイアウォールの管理には、Web UIのタブをクリックし、フィールド名を覚え、設定ミスで締め出されないことを祈る必要があります。このMCPサーバーを使えば、やりたいことを平易な英語で説明するだけで、AIがREST API呼び出しを処理し、入力を検証し、破壊的な操作を行う前に警告を表示します。
特徴:
すべての破壊的な操作には明示的な確認が必要であり、何が起こるかを正確に表示します
削除/再起動のたびに自動的に設定をバックアップし、1行のコマンドでロールバック可能
レート制限により、AIの暴走ループがファイアウォールにルールを大量送信するのを防ぎます
入力サニタイズにより、すべてのパラメータにおけるコマンドインジェクション、パストラバーサル、XSSをブロックします
Related MCP server: Firewalla MCP Server
クイックスタート
前提条件: Python 3.10以上、REST API v2パッケージがインストールされたpfSense
git clone https://github.com/gensecaihq/pfsense-mcp-server.git
cd pfsense-mcp-server
pip install -r requirements.txt
cp .env.example .env
# Edit .env: set PFSENSE_URL, AUTH_METHOD, and credentialsClaude Desktopへの接続 — ~/Library/Application Support/Claude/claude_desktop_config.json に追加します:
{
"mcpServers": {
"pfsense": {
"command": "python3",
"args": ["-m", "src.main"],
"cwd": "/path/to/pfsense-mcp-server",
"env": {
"PFSENSE_URL": "https://192.168.1.1",
"AUTH_METHOD": "basic",
"PFSENSE_USERNAME": "admin",
"PFSENSE_PASSWORD": "your-password",
"PFSENSE_VERSION": "CE_2_8_0",
"VERIFY_SSL": "false"
}
}
}
}ファイアウォールとの対話を開始 — Claude Desktopを開いて以下のように尋ねてください:
"Show me all blocked traffic in the last hour" (過去1時間のブロックされたトラフィックをすべて表示して)
"What services are running?" (現在実行中のサービスは何?)
"Create a port forward for port 443 to 192.168.1.50" (ポート443から192.168.1.50へのポートフォワードを作成して)
"Run a full system health check" (システム全体のヘルスチェックを実行して)
何ができるか
pfSenseの主要なサブシステム全体で327個のツールが利用可能です:
ドメイン | ツール数 | 何ができるか |
ファイアウォールルール | 9 | ルールの作成、更新、削除、並べ替え。IPの一括ブロック。コンパイル済みpfルールセットの表示。 |
エイリアス | 5 | ホスト/ネットワーク/ポート/URLエイリアスの管理。アドレスの追加と削除。 |
NAT | 16 | ポートフォワード、アウトバウンドNAT、1:1 NAT — フルライフサイクル管理。 |
VPN | 51 | OpenVPNサーバー/クライアント、IPsecトンネル、WireGuardピア — CRUD、ステータス、適用。 |
ルーティング | 16 | ゲートウェイ、ゲートウェイグループ、スタティックルート、デフォルトゲートウェイ管理。 |
DNS | 24 | Unboundリゾルバーおよびdnsmasqフォワーダー: ホストオーバーライド、ドメインオーバーライド、アクセスリスト。 |
DHCP | 17 | リース、スタティックマッピング、アドレスプール、カスタムオプション、サーバー設定。 |
証明書 | 15 | 証明書、CA、CRL — 生成、更新、PKCS12エクスポート。 |
ユーザー | 12 | ユーザーアカウント、グループ、LDAP/RADIUS認証サーバー設定。 |
インターフェース | 14 | インターフェース設定、VLAN、ブリッジ、グループ。 |
システム | 44 | ステータス、設定、診断、設定履歴、再起動、ping。 |
サービス | 14 | サービスの開始/停止/再起動。NTP、cron、SSH、サービスウォッチドッグ。 |
ログ | 3 | IPv4/IPv6 filterlogデータを解析したファイアウォールログ分析。 |
トラフィックシェーピング | 12 | 帯域幅管理のためのシェーパー、キュー、リミッター。 |
スケジュール | 8 | 時間ベースのファイアウォールルールスケジュール。 |
仮想IP | 5 | CARP、ProxyARP、IPエイリアス管理。 |
トラブルシューティング | 10 | 接続性、ブロックされたトラフィック、VPN、DHCP、DNS、HAの診断。完全なヘルスレポート。 |
パッケージ | 43 | HAProxy、ACME/Let's Encrypt、BIND DNS、FreeRADIUS。 |
ユーティリティ | 9 | HATEOASナビゲーション、オブジェクトID管理、ガードレールステータス。 |
安全第一
本番環境のファイアウォールを管理するAIにはガードレールが必要です。このサーバーには9つの層があります:
"Delete firewall rule 5"
1. CLASSIFY → HIGH risk (destructive)
2. ALLOWLIST → tool is permitted
3. SANITIZE → parameters clean (no injection)
4. RATE LIMIT → under 10 deletes/minute
5. DRY RUN? → user can preview first
6. CONFIRM → blocked until confirm=True
7. BACKUP → config revision captured
8. EXECUTE → API call made
9. AUDIT LOG → action recorded with redacted params
Response includes:
"config_backup": {
"pre_change_revision_id": 42,
"rollback_instruction": "restore_config_backup(revision_id=42, confirm=True)"
}すべての破壊的な操作(52個の削除/再起動/停止ツール)には confirm=True が必要です。すべての作成および更新操作(112個のツール)はレート制限され、サニタイズされます。すべての機密パラメータ(パスワード、キー、トークン)は、ログおよび出力で編集(隠蔽)されます。
また、以下の操作も可能です:
dry_run=Trueを渡して、実行せずに破壊的な操作をプレビューするverify_descr="Allow HTTPS"を渡して、削除しようとしているルールが正しいか検証する(IDのずれを防ぐ)MCP_READ_ONLY=trueを設定して、118個の読み取り専用ツール(検索、取得、診断)のみを公開するMCP_ALLOWED_TOOLS=search_firewall_rules,get_firewall_logを設定して、特定のツールのみに制限する
サポートされているpfSenseバージョン
バージョン | REST API | ステータス |
pfSense CE 2.8.1 | 検証済み | |
pfSense Plus 25.11 | 検証済み | |
pfSense CE 2.8.0 | v2.6.0+ | サポート |
pfSense Plus 24.11 | v2.6.0+ | サポート |
jaredhendrickson13 による pfSense REST API v2パッケージ が必要です。
認証
3つのメソッドをサポート(.envで設定):
メソッド | 設定 | 用途 |
Basic Auth |
| クイックセットアップ、ローカルユーザー |
API Key |
| 自動化、サービスアカウント |
JWT |
| 短命トークン、自動更新 |
デプロイオプション
stdio (デフォルト) — Claude DesktopおよびClaude Code用:
python3 -m src.mainHTTP — リモートアクセスおよびマルチクライアント設定用:
python3 -m src.main -t streamable-http --port 3000Docker — 読み取り専用ファイルシステムを備えた強化コンテナ:
docker compose upコンテナのセキュリティ: 非rootユーザー (mcp:1000)、読み取り専用ファイルシステム、すべてのケーパビリティをドロップ、noexec tmpfs、no-new-privileges。
設定
変数 | 必須 | デフォルト | 説明 |
| はい | — | pfSense URL (例: |
|
|
| |
| * | — | REST APIキー |
| * | — | pfSenseユーザー名 (basic/jwt用) |
| * | — | pfSenseパスワード (basic/jwt用) |
|
|
| |
|
| 自己署名証明書の場合は | |
|
| リクエストタイムアウト(秒) | |
|
| 読み取り専用ツールのみを公開 |
変数 | デフォルト | 説明 |
|
| APIレスポンスでHATEOASリンクを有効にする |
|
|
|
|
|
|
|
| HTTPモードのバインドアドレス |
|
| HTTPモードのポート |
| — | HTTPトランスポート用のBearerトークン(必須) |
| localhost | カンマ区切りの許可されたオリジン |
| — | 監査ログファイルのパス (JSON lines) |
|
| 60秒あたりの最大削除数 |
|
| 60秒あたりの最大作成数 |
|
| 300秒あたりの最大クリティカル操作数 |
| all | カンマ区切りのツール許可リスト |
|
| メモリ内に保持されるロールバックエントリ数 |
テスト
python3 -m pytest tests/ -v # 308 tests
python3 -m pytest tests/ --cov=src # with coverageMCP仕様への準拠
MCP 2025-11-25 (最新) に準拠:
327個すべてのツールに
ToolAnnotations(readOnlyHint, destructiveHint, idempotentHint) を付与serverInfo.versionおよびinstructionsを提供Originヘッダーの検証 (MUST要件)
タイミング攻撃耐性のある比較を用いたBearerトークン認証
仕様SHOULDに従い、デフォルトでlocalhostにバインド
stdioおよびStreamable HTTPトランスポート
プロジェクト構造
src/
main.py Entry point
server.py FastMCP instance + API client
client.py pfSense REST API v2 HTTP client
guardrails.py 9-layer defense-in-depth system
helpers.py Validation, parsing, safety guards
models.py Data models
middleware.py HTTP auth + Origin validation
tools/ 34 tool modules (327 tools)
tests/ 308 tests貢献
多様なpfSense環境での実環境テストが必要です。CONTRIBUTING を参照するか、以下を行ってください:
フォークしてフィーチャーブランチを作成
python3 -m pytest tests/ -vを実行PRを提出
アイデア: 実機pfSenseに対する統合テスト、追加パッケージサポート (Snort, Suricata)、OllamaローカルLLMブリッジ、マルチインスタンス管理。
ライセンス
謝辞
jaredhendrickson13 / pfrest — pfSense REST API v2パッケージ
JeremiahChurch — モジュール式書き換え (PR #5)
shawnpetersen — API v2エンドポイント検出 (PR #3)
Netgate — pfSense
FastMCP — MCPフレームワーク
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityBmaintenanceA server that enables managing OPNSense firewalls through natural language interactions with Claude Desktop, supporting VLAN management, firewall rules configuration, and network interface queries.6414875MIT
- -licenseNot gradedqualityNot gradedmaintenanceA production-ready server that connects Claude Desktop to Firewalla network management capabilities, allowing users to monitor devices, analyze network traffic, manage security alerts, and configure firewall rules through natural language.
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction and management of pfSense firewalls through Claude and other GenAI applications using the Model Context Protocol. It provides advanced tools for firewall rule configuration, interface management, and intelligent log analysis via a REST API integration.1MIT
- AlicenseCqualityCmaintenanceAn AI-powered penetration testing server that integrates over 30 security tools with Groq LLM analysis for automated vulnerability scanning, triage, and reporting. It enables users to perform comprehensive security assessments through natural language natively within Claude Desktop.29MIT
Related MCP Connectors
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
GibsonAI MCP server: manage your databases with natural language
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/gensecaihq/pfsense-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server