AdGuard Home MCP服务器

一个用于连接和管理多个AdGuard Home实例的Rust实现的MCP服务器,提供监控和过滤管理功能。

  • by nicholaswilde
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 nicholaswilde/adguardhome-mcp-rs

使用说明

: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__<N>__<FIELD> 多个实例的配置(见下文) -
- 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__<INDEX>__<FIELD>:

  • ADGUARD_INSTANCES__0__NAME=primary
  • ADGUARD_INSTANCES__0__URL=http://192.168.1.10:8080
  • ADGUARD_INSTANCES__1__NAME=secondary
  • ADGUARD_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:许可证

​Apache许可证2.0

:writing_hand:作者

​该项目于2026年启动 尼古拉斯·王尔德.