](https://www.npmjs.com/package/@samik081/mcp-adguard-home) ](https://ghcr.io/samik081/mcp-adguard-home)  ](https://nodejs.org)
MCP AdGuard主页
MCP服务器 AdGuard主页.通过Cursor、Claude Code和Claude Desktop中的自然语言管理DNS过滤、客户端、DHCP、重写等。
特性
- 65工具 穿过 16个类别 涵盖完整的AdGuard Home API
- 只读模式 通过
ADGUARD_ACCESS_TIER=read-only用于安全监测 - 类别筛选 通过
ADGUARD_CATEGORIES仅公开您需要的工具 - 零HTTP依赖 --使用本地
fetch(Node.js 18+) - Docker镜像 为了
linux/amd64和linux/arm64上 GHCR - 远程MCP 通过HTTP传输(
MCP_TRANSPORT=http)使用流式HTTP协议 - Types/ESM 具有全类型安全性
API兼容性
使用AdGuard Home进行测试 v0.107.72.
快速开始
使用npx直接运行服务器:
ADGUARD_URL="http://your-adguard-ip:3000" \
ADGUARD_USERNAME="your-username" \
ADGUARD_PASSWORD="your-password" \
npx -y @samik081/mcp-adguard-home服务器在启动时验证您的AdGuard Home连接,如果凭据丢失或无效,则立即失败并显示明确的错误。
码头工人
使用Docker运行(stdio传输,与npx相同):
docker run --rm -i \
-e ADGUARD_URL=http://your-adguard-ip:3000 \
-e ADGUARD_USERNAME=your-username \
-e ADGUARD_PASSWORD=your-password \
ghcr.io/samik081/mcp-adguard-home要作为具有HTTP传输的远程MCP服务器运行:
docker run -d -p 3000:3000 \
-e MCP_TRANSPORT=http \
-e ADGUARD_URL=http://your-adguard-ip:3000 \
-e ADGUARD_USERNAME=your-username \
-e ADGUARD_PASSWORD=your-password \
ghcr.io/samik081/mcp-adguard-homeMCP端点位于 http://localhost:3000 健康检查在 http://localhost:3000/health.
配置
Claude Code命令行界面(推荐):
# Using npx
claude mcp add --transport stdio adguard-home \
--env ADGUARD_URL=http://your-adguard-ip:3000 \
--env ADGUARD_USERNAME=your-username \
--env ADGUARD_PASSWORD=your-password \
-- npx -y @samik081/mcp-adguard-home
# Using Docker
claude mcp add --transport stdio adguard-home \
--env ADGUARD_URL=http://your-adguard-ip:3000 \
--env ADGUARD_USERNAME=your-username \
--env ADGUARD_PASSWORD=your-password \
-- docker run --rm -i ghcr.io/samik081/mcp-adguard-home
# Using remote HTTP (connect to a running Docker container or HTTP server)
claude mcp add --transport http adguard-home http://localhost:3000JSON配置 (与Claude Code合作 .mcp.json,克劳德桌面 claude_desktop_config.json,光标 .cursor/mcp.json):
{
"mcpServers": {
"adguard-home": {
"command": "npx",
"args": ["-y", "@samik081/mcp-adguard-home"],
"env": {
"ADGUARD_URL": "http://your-adguard-ip:3000",
"ADGUARD_USERNAME": "your-username",
"ADGUARD_PASSWORD": "your-password"
}
}
}
}Docker(标准操作系统):
{
"mcpServers": {
"adguard-home": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "ADGUARD_URL=http://your-adguard-ip:3000",
"-e", "ADGUARD_USERNAME=your-username",
"-e", "ADGUARD_PASSWORD=your-password",
"ghcr.io/samik081/mcp-adguard-home"
]
}
}
}远程MCP (连接到正在运行的Docker容器或HTTP服务器):
{
"mcpServers": {
"adguard-home": {
"type": "streamable-http",
"url": "http://localhost:3000"
}
}
}访问层
使用控制哪些工具可用 ADGUARD_ACCESS_TIER 环境变量:
| 层级 | 工具 | 描述 |
|---|---|---|
full (默认) | 65 | 读写--完全控制 |
read-only | 29 | 只读-监控安全,无状态更改 |
- 满的:全部65个工具。包括配置更改、添加/删除筛选器、清除日志和所有破坏性操作。
- 只读:29个工具。状态、配置查看和查询日志只读。没有状态变化。
您层中不可用的工具未在MCP服务器上注册。它们不会出现在你的人工智能工具的工具列表中,保持上下文干净。
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
ADGUARD_URL | 是 | -- | AdGuard主页URL(例如。, http://192.168.1.1:3000) |
ADGUARD_USERNAME | 是 | -- | 管理员用户名 |
ADGUARD_PASSWORD | 是 | -- | 管理员密码 |
ADGUARD_ACCESS_TIER | 没有 | full | read-only 仅适用于只读工具, full 适用于所有工具 |
ADGUARD_CATEGORIES | 没有 | *(全部)* | 逗号分隔的类别列表(例如。, dns,filtering,stats) |
ADGUARD_TOOL_BLACKLIST | 没有 | *(无)* | 以逗号分隔的要排除的工具名称列表(例如。, dns_clear_cache,stats_reset) |
ADGUARD_TOOL_WHITELIST | 没有 | *(无)* | 以逗号分隔的工具名称列表将强制包含,绕过访问层和类别筛选器 |
DEBUG | 没有 | false | 启用stderr的调试日志记录 |
MCP_TRANSPORT | 没有 | stdio | 运输方式: stdio (默认)或 http |
MCP_PORT | 没有 | 3000 | HTTP服务器端口(仅在以下情况下使用 MCP_TRANSPORT=http) |
MCP_HOST | 没有 | 0.0.0.0 | HTTP服务器绑定地址(仅在以下情况下使用 MCP_TRANSPORT=http) |
MCP_EXCLUDE_TOOL_TITLES | 没有 | false | 设置 true 从注册中省略工具标题(保存标记) |
可用类别
global, dns, querylog, stats, filtering, safebrowsing, parental, safesearch, clients, dhcp, rewrites, tls, blocked_services, access, install, mobile_config
工具
mcp adguard home提供按类别组织的65个工具。每个工具的“访问”列显示了所需的最低级别: read-only (两层都有)或 full (要求 full 层)。提示列显示工具行为: read-only (无状态变化), destructive (修改现有状态), idempotent (如果调用两次,结果相同)。
Global (6 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
global_get_status | 检索服务器状态,包括版本、DNS地址、保护状态和端口 | 只读 | 只读,幂等 |
global_get_profile | 检索用户配置文件(姓名、语言、主题) | 只读 | 只读,幂等 |
global_check_version | 检查AdGuard主页更新,并与当前版本进行比较 | 只读 | 只读,幂等 |
global_set_protection | 全局启用或禁用DNS保护,临时禁用的持续时间可选 | 完全 | 破坏性,幂等 |
global_update_profile | 更新用户配置文件设置(名称、语言、主题) | 完全 | 破坏性、幂等 |
global_begin_update | 启动AdGuard Home软件更新 | 完全 | 破坏性 |
DNS (4 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
dns_get_info | 检索完整的DNS配置,包括上游、缓存设置、阻止模式和DNSSEC | 只读 | 只读,幂等 |
dns_test_upstream | 测试上游DNS服务器配置,以验证服务器是否可访问 | 只读 | 只读,幂等 |
dns_set_config | 更新DNS服务器配置(19个可选字段用于部分更新) | 完全 | 破坏性,幂等 |
dns_clear_cache | 清除DNS解析器缓存 | 满 | 破坏性,幂等 |
Query Log (4 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
querylog_get | 搜索DNS查询日志,可选择按响应状态、搜索词和分页进行筛选 | 只读 | 只读,幂等 |
querylog_get_config | 检索查询日志配置设置 | 只读 | 只读,幂等 |
querylog_set_config | 更新查询日志配置(启用、间隔、匿名) | 完全 | 破坏性、幂等 |
querylog_clear | 清除整个DNS查询日志 | full | 破坏性,幂等 |
Statistics (4 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
stats_get | 检索DNS统计信息,包括顶级域、阻止计数和客户端活动 | 只读 | 只读,幂等 |
stats_get_config | 检索统计配置设置 | 只读 | 只读,幂等 |
stats_reset | 重置所有DNS统计信息 | 完全 | 破坏性,幂等 |
stats_set_config | 更新统计配置(启用、间隔、忽略域) | 完全 | 破坏性、幂等 |
Filtering (8 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
filtering_get_status | 检索过滤配置,包括块列表、分配列表和用户规则 | 只读 | 只读,幂等 |
filtering_check_host | 测试主机名是否会被当前筛选规则阻止 | 只读 | 只读,幂等 |
filtering_set_config | 更新全局筛选配置(启用状态和更新间隔) | 完全 | 破坏性,幂等 |
filtering_add_url | 添加新的过滤器URL(阻止列表或允许列表) | full | -- |
filtering_remove_url | 从阻止列表或允许列表中删除筛选器URL | 完全 | 破坏性 |
filtering_set_url | 更新现有筛选器URL(重命名、更改URL或启用/禁用) | 完全 | 破坏性、幂等 |
filtering_refresh | 强制刷新筛选器列表以获取最新更新 | 完整 | 破坏性,幂等 |
filtering_set_rules | 设置自定义筛选规则(替换所有现有的自定义规则) | 完全 | 破坏性,幂等 |
Safe Browsing (2 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
safebrowsing_get_status | 检索安全浏览(恶意软件/网络钓鱼防护)状态 | 只读 | 只读,幂等 |
safebrowsing_set | 启用或禁用安全浏览保护 | 完全 | 破坏性、幂等 |
Parental (2 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
parental_get_status | 检索家长筛选状态 | 只读 | 只读,幂等 |
parental_set | 启用或禁用家长过滤(内容限制) | 完全 | 破坏性、幂等 |
Safe Search (2 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
safesearch_get_status | 检索显示每个引擎强制状态的安全搜索设置 | 只读 | 只读,幂等 |
safesearch_set_settings | 使用每个引擎配置(Bing、DuckDuckGo、Google、Pixabay、Yandex、YouTube)更新安全搜索设置 | 完全 | 破坏性,幂等 |
Clients (5 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
clients_get | 检索所有已配置和自动检测的客户端及其设置 | 只读 | 只读,幂等 |
clients_search | 按ID(IP、MAC、CIDR或客户端ID)搜索特定客户端 | 只读 | 只读,幂等 |
clients_add | 使用每个客户端设置 | full | --添加新的持久客户端 |
clients_update | 按名称 | full | 破坏性、幂等性更新现有的持久客户端 |
clients_delete | 按名称 | full | destructive删除持久客户端 |
DHCP (9 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
dhcp_get_status | 检索DHCP服务器配置、静态租约和活动租约 | 只读 | 只读,幂等 |
dhcp_get_interfaces | 检索DHCP服务器绑定的可用网络接口 | 只读 | 只读,幂等 |
dhcp_find_active | 扫描网络接口上的竞争DHCP服务器 | 只读 | 只读,幂等 |
dhcp_set_config | 更新DHCP服务器配置(启用状态、接口、IPv4/IPv6设置) | 完全 | 破坏性、幂等 |
dhcp_add_static_lease | 添加将MAC地址映射到IP的静态DHCP租约 | full | -- |
dhcp_remove_static_lease | 删除静态DHCP租约 | 完全 | 破坏性 |
dhcp_update_static_lease | 更新静态DHCP租约(删除+添加模式) | full | 破坏性,幂等 |
dhcp_reset | 将DHCP配置重置为默认值 | 完全 | 破坏性,幂等 |
dhcp_reset_leases | 清除所有DHCP租约 | 完全 | 破坏性,幂等 |
Rewrites (6 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
rewrites_list | 检索所有配置的DNS重写规则 | 只读 | 只读,幂等 |
rewrites_get_settings | 检索DNS重写模块启用/禁用状态 | 只读 | 只读,幂等 |
rewrites_add | 添加新的DNS重写规则 | full | -- |
rewrites_update | 更新DNS重写规则(删除+添加模式) | full | 破坏性,幂等 |
rewrites_delete | 删除DNS重写规则 | 完全 | 破坏性 |
rewrites_set_settings | 启用或禁用DNS重写模块 | full | 破坏性、幂等 |
TLS (3 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
tls_get_status | 检索TLS配置和证书验证状态 | 只读 | 只读,幂等 |
tls_validate | 验证TLS配置而不应用更改 | 只读 | 只读,幂等 |
tls_set_config | 更新TLS配置,包括证书和HTTPS/DoH/DoT设置 | 完全 | 破坏性,幂等 |
Blocked Services (3 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
blocked_services_get_all | 列出所有可以阻止的可用服务,按组 | 只读 | 只读、幂等进行组织 |
blocked_services_get | 检索当前被阻止的服务列表和计划 | 只读 | 只读,幂等 |
blocked_services_update | 更新被阻止服务和可选计划的列表 | 完整 | 破坏性,幂等 |
Access (2 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
access_get_list | 检索访问控制列表:允许的客户端、不允许的客户端和被阻止的主机 | 只读 | 只读,幂等 |
access_set_list | 为允许的客户端、不允许的客户端和被阻止的主机设置访问控制列表 | 完全 | 破坏性,幂等 |
Install (3 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
install_get_addresses | 检索初始设置的网络接口详细信息和端口 | 只读 | 只读,幂等 |
install_check_config | 验证安装配置而不应用(检查web/DNS绑定、凭据) | 完全 | 只读,幂等 |
install_apply_config | 应用初始设置配置(web/DNS绑定和管理员凭据) | 完全 | 破坏性 |
Mobile Config (2 tools)
| 工具 | 描述 | 访问 | 提示 |
|---|---|---|---|
mobile_config_get_doh | 为HTTPS上的DNS生成Apple.mobileconfig配置文件 | 只读 | 只读,幂等 |
mobile_config_get_dot | 通过TLS为DNS生成Apple.mobileconfig配置文件 | 只读 | 只读,幂等 |
验证它是否有效
配置完MCP客户端后,询问您的AI助手:
“我的AdGuard Home服务器状态如何?”
如果连接正常,助理会打电话 global_get_status 并返回您的服务器版本、DNS地址、保护状态和端口配置。
用法示例
- “当前的DNS保护状态如何?” --电话
global_get_status显示版本、地址和保护状态。 - “显示所有DNS重写规则” --电话
rewrites_list显示所有配置的DNS重写。 - “为local.example.com添加指向192.168.1.100的DNS重写” --电话
rewrites_add创建新的重写规则。
故障排除
连接错误
- 验证
ADGUARD_URL可从运行MCP服务器的计算机访问 - 如果非标准(例如。,
http://192.168.1.1:3000) - 检查AdGuard主页是否正在运行且可访问
身份验证失败
- 验证
ADGUARD_USERNAME和ADGUARD_PASSWORD是正确的 - 检查用户在AdGuard主页中是否具有管理员权限
工具未显示
- 检查你的
ADGUARD_ACCESS_TIER设置--read-only模式仅公开读取工具 - 检查
ADGUARD_CATEGORIES--仅注册所列类别中的工具 - 通过检查stderr输出,验证服务器是否已正确启动
发展
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode (auto-reload)
npm run dev
# Open the MCP Inspector for interactive testing
npm run inspect