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 방화벽을 관리하려면 웹 UI 탭을 클릭하고, 필드 이름을 기억해야 하며, 실수로 규칙을 잘못 설정하여 접근이 차단되지 않기를 바라야 합니다. 이 MCP 서버를 사용하면 원하는 작업을 평이한 영어로 설명하기만 하면 AI가 REST API 호출을 처리하고, 입력을 검증하며, 파괴적인 작업이 발생하기 전에 경고를 보냅니다.
차별점:
모든 파괴적인 작업은 명시적인 확인이 필요하며 정확히 어떤 일이 일어날지 보여줍니다.
삭제/재부팅 전 자동 구성 백업 — 한 줄의 롤백 명령 제공.
속도 제한(Rate limiting)을 통해 AI 루프가 방화벽에 규칙을 과도하게 생성하는 것을 방지합니다.
입력 살균(Input sanitization)을 통해 모든 매개변수에서 명령 주입, 경로 탐색, 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을 열고 다음과 같이 질문하세요:
"지난 한 시간 동안 차단된 모든 트래픽을 보여줘"
"어떤 서비스가 실행 중이야?"
"포트 443에서 192.168.1.50으로 포트 포워딩을 생성해줘"
"전체 시스템 상태 점검을 실행해줘"
수행 가능한 작업
모든 주요 pfSense 하위 시스템에 걸친 327개의 도구:
도메인 | 도구 | 수행 가능한 작업 |
방화벽 규칙 | 9 | 규칙 생성, 업데이트, 삭제, 순서 변경. IP 대량 차단. 컴파일된 pf 규칙 세트 보기. |
별칭(Aliases) | 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 | 상태, 설정, 진단, 구성 기록, 재부팅, 핑. |
서비스 | 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 패키지가 필요합니다.
인증
세 가지 방법 지원 (.env에서 구성):
방법 | 구성 | 용도 |
기본 인증 |
| 빠른 설정, 로컬 사용자 |
API 키 |
| 자동화, 서비스 계정 |
JWT |
| 단기 토큰, 자동 갱신 |
배포 옵션
stdio (기본값) — Claude Desktop 및 Claude Code용:
python3 -m src.mainHTTP — 원격 접근 및 다중 클라이언트 설정용:
python3 -m src.main -t streamable-http --port 3000Docker — 읽기 전용 파일 시스템이 적용된 강화된 컨테이너:
docker compose up컨테이너 보안: 비루트 사용자 (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 라인) |
|
| 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제공오리진 헤더 검증 (필수 요구 사항)
타이밍 안전 비교를 통한 Bearer 토큰 인증
사양에 따른 기본 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