:shield:AdGuard Home MCP服务器(Rust):机器人:
  
\[!警告\] 该项目目前正在积极开发中(v0.1.16) 可生产的。功能可能会发生变化,可能会发生重大变化,恕不另行通知。 使用此MCP服务器的风险由您自行承担。
AdGuard Home的Rust实现 MCP(模型上下文协议)服务器此服务器连接到一个或多个AdGuard Home实例,并公开工具以通过模型上下文协议监视和管理过滤。
:闪光:特征
- 多种运输支持:
- 音乐节目 : 本地集成的默认传输(例如,Claude Desktop)。 - HTTP/SSE: 远程客户端的网络可访问传输。
- 多实例管理: 从单个MCP服务器管理和定位多个AdGuard Home实例。工具接受可选
instance参数(名称或索引)。 - 多实例同步: 自动或按需将配置(过滤规则、阻止的服务、DNS重写)从主实例同步到一个或多个副本实例。
- 稳健的配置: 支持通过CLI参数、环境变量和配置文件(TOML、YAML、JSON)进行配置。
- 身份验证:
- 使用用户名/密码或API密钥连接到AdGuard Home。 - 使用承载令牌身份验证保护HTTP传输。
- 令牌优化: 将粒度工具整合到功能组中,以优化AI上下文窗口的使用。
- 工具: - manage_system:系统状态、监控统计数据、查询日志、备份和维护。 - manage_dns:DNS重写管理、服务器配置和缓存控制。 - manage_protection:全局保护状态、安全搜索、安全浏览和家长控制。 - manage_filtering:Adblock筛选器列表、自定义用户规则和服务阻止。 - manage_clients:网络客户端管理、DHCP租约和访问控制。 - sync_instances:手动触发与副本实例的同步。 - manage_tools:(仅限懒惰模式)上述工具的动态按需加载。
:package:安装
家酿
brew install nicholaswilde/tap/adguardhome-mcp-rs:hammer_and_wrench:构建
要构建该项目,您需要安装一个Rust工具链。对于交叉编译, 穿过 使用。
本地建设
# Build in release mode
task build:local二进制文件将在 target/release/adguardhome-mcp-rs.
交叉编译
支持的架构可以使用以下方式构建 task:
# Build for AMD64 (x86_64)
task build:amd64
# Build for ARM64 (aarch64)
task build:arm64
# Build for ARMv7
task build:armv7
# Build for all supported architectures
task build:火箭:用途
:键盘:命令行界面
服务器可以通过CLI参数或环境变量进行配置。
./target/release/adguardhome-mcp-rs --adguard-host "192.168.1.10" --adguard-port 8080 --adguard-username "admin" --adguard-password "yourpassword"可用参数
| 参数 | 环境变量 | 描述 | 默认值 |
|---|---|---|---|
-c, --config | - | 配置文件的路径 | config.toml |
--adguard-host | ADGUARD_HOST | AdGuard主实例主机 | (必填) |
--adguard-port | ADGUARD_PORT | AdGuard主实例端口 | 3000 |
--adguard-username | ADGUARD_USERNAME | AdGuard主页用户名 | - |
--adguard-password | ADGUARD_PASSWORD | AdGuard主页密码 | - |
--transport | ADGUARD_MCP_TRANSPORT | 运输方式(stdio 或 http) | stdio |
--http-port | ADGUARD_HTTP_PORT | HTTP传输端口 | 3000 |
--http-token | ADGUARD_HTTP_AUTH_TOKEN | HTTP安全承载令牌 | - |
--no-verify-ssl | ADGUARD_NO_VERIFY_SSL | 禁用SSL证书验证 | true |
--lazy | ADGUARD_LAZY_MODE | 启用令牌优化的延迟加载 | false |
--log-level | ADGUARD_LOG_LEVEL | 日志级别(info, debug等等) | info |
| - | ADGUARD_INSTANCES____ | 多个实例的配置(见下文) | - |
| - | ADGUARD_REPLICAS | JSON副本对象数组(url, api_key) | [] |
| - | ADGUARD_SYNC_INTERVAL_SECONDS | 自动后台同步间隔 | 3600 |
| - | ADGUARD_DEFAULT_SYNC_MODE | 默认同步模式(additive-merge 或 full-overwrite) | additive-merge |
:file_folder:配置文件
服务器会自动查找 config.toml, config.yaml,或 config.json 在当前目录和 ~/.config/adguardhome-mcp-rs/.
多实例配置
您可以配置多个AdGuard主页实例。列表中的第一个实例是默认值。
# Default instance (legacy format supported for single instance)
adguard_host = "192.168.1.10"
adguard_port = 8080
adguard_username = "admin"
adguard_password = "yourpassword"
# OR use the instances list
[[instances]]
name = "primary"
url = "http://192.168.1.10:8080"
username = "admin"
password = "yourpassword"
[[instances]]
name = "homelab"
url = "http://10.0.0.5:3000"
api_key = "your-api-key"
no_verify_ssl = false
# Synchronization settings
sync_interval_seconds = 3600
default_sync_mode = "additive-merge"
[[replicas]]
url = "http://192.168.1.11:3000"
api_key = "replica-api-key-1"多个实例的环境变量
使用图案 ADGUARD_INSTANCES____:
ADGUARD_INSTANCES__0__NAME=primaryADGUARD_INSTANCES__0__URL=http://192.168.1.10:8080ADGUARD_INSTANCES__1__NAME=secondaryADGUARD_INSTANCES__1__URL=http://192.168.1.20:8080
:robot:配置示例(Claude Desktop)
将以下内容添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"adguardhome": {
"command": "/path/to/adguardhome-mcp-rs/target/release/adguardhome-mcp-rs",
"args": [
"--adguard-host", "192.168.1.10",
"--adguard-port", "8080",
"--adguard-username", "admin",
"--adguard-password", "yourpassword"
]
}
}
}:test_tube:测试
该项目使用 go任务 用于开发任务。
# Run all checks (format, lint, unit tests)
task test:ci
# Run unit tests only
task test
# Run Docker integration tests (requires Docker)
RUN_DOCKER_TESTS=true task test:integration
# Run MCP Inspector (requires npx)
task inspector
# Update cargo dependencies
task update:bar_chart:覆盖范围
该项目使用 cargo-llvm-cov 用于代码覆盖率分析。
# Show coverage summary in console
task coverage
# Generate detailed HTML and LCOV reports
task coverage:report
# Upload coverage to Coveralls.io (requires COVERALLS_REPO_TOKEN)
COVERALLS_REPO_TOKEN=your_token task coverage:upload:握手:贡献
欢迎投稿!请遵循标准的Rust编码约定,并确保所有测试通过(task check)在提交功能之前。
:balance_scale:许可证
:writing_hand:作者
该项目于2026年启动 尼古拉斯·王尔德.
