splashxmoon/edgemcp
GitHub: splashxmoon/edgemcp
一个本地运行的 MCP 服务器,让用户通过自然语言向 AI 助手询问并了解家庭网络的设备连接状况与潜在异常。
Stars: 0 | Forks: 0
# EdgeDefense MCP
**向 Claude 询问您的家庭网络。** 完全在您的机器上运行——无需账号,无需云服务,无需管理员权限。
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io)
## 这是什么
您知道有设备连接到了您的 Wi-Fi,却不知道它是什么。大多数工具给您的答案是一个布满数字的仪表盘,需要您自己去解读。
而这个工具让您直接提问。将 Claude(或 Cursor,或任何 MCP 客户端)指向您的网络,并用纯英语与它交谈:查看连接了什么设备,那个位于 `192.168.1.47` 的未知设备大概是什么,以及是否有任何异常情况。
一切都在您的电脑上本地进行。不上传任何数据,不向服务器记录任何日志,也无需注册任何账号。
## 为什么它与众不同
大多数网络扫描器扔给您一张满是 IP 地址、MAC 地址和开放端口的表格,剩下的解读工作就全靠您自己了。如果您已经知道端口 23 代表什么以及为什么它很重要,那这种方式还行。而本工具为您提供的是对话——您提出正常的问题,就能得到正常的回答;如果某个问题被标记了,您可以继续追问*为什么*,并得到一份通俗易懂的解释,其中甚至包含该项检查确实无法确定的盲区。
两点承诺让您可以放心地随意安装:
**它不需要任何特殊权限。** 上述所有功能均以普通用户身份运行。无需 `sudo`,无需“以管理员身份运行”,也无需安装任何驱动。
**它绝不联网发送数据。** 不检查更新,不收集分析数据,甚至不会为了查询设备制造商而联网——该数据库已内置在软件包中。代码中没有任何 HTTP 客户端。您大约只需十分钟就能自行验证这一点;整个项目仅有几千行代码,且零运行时依赖。
此外,它在设计上就是**只读的**。我们刻意没有提供“屏蔽此设备”的按钮。一个您六十秒前才安装的工具,不应该有能力随意将设备从您的网络中断开。
## 工具
| 工具 | 您能得到什么 |
|---|---|
| `edgedefense_scan_network` | 查找您网络上的所有设备,并用通俗易懂的语言进行总结。**从这里开始。** |
| `edgedefense_list_devices` | 列出已连接的设备——可以过滤出仅显示未知设备,或仅显示有问题的设备 |
| `edgedefense_get_device_detail` | 关于单个设备的所有已知信息:它大概是什么,制造商是谁,正在运行什么 |
| `edgedefense_get_trust_score` | 为您的网络提供一个 0 到 100 的单一评分,并附带背后的原因 |
| `edgedefense_explain_finding` | 将任何被标记的问题转化为通俗易懂的解释,说明其含义及应对措施 |
还有另外两个工具可用,但在您明确开启之前它们处于关闭状态,因为它们需要管理员权限:
| 工具 | 您能得到什么 |
|---|---|
| `edgedefense_tier1_status` | 告知您此机器能否运行更深层的流量分析 |
| `edgedefense_analyze_traffic` | 监控设定秒数内的流量并标记异常行为——在执行前会向您展示确切的操作,并等待您的同意 |
## 安装
第 1 步——安装服务器。需要 Python 3.10 或更高版本。
```
pip install "edgedefense-core @ git+https://github.com/splashxmoon/edgemcp.git#subdirectory=core-engine" "edgedefense-mcp @ git+https://github.com/splashxmoon/edgemcp.git#subdirectory=mcp-server"
```
第 2 步——在您的客户端中进行配置。
**Claude Code**
```
claude mcp add edgedefense -- edgedefense-mcp
```
**Codex CLI**
```
codex mcp add edgedefense -- edgedefense-mcp
```
**Claude Desktop** —— `claude_desktop_config.json`
```
{
"mcpServers": {
"edgedefense": {
"command": "edgedefense-mcp"
}
}
}
```
**Cursor** —— `~/.cursor/mcp.json`
```
{
"mcpServers": {
"edgedefense": {
"command": "edgedefense-mcp"
}
}
}
```
**Codex CLI**(手动配置)—— `~/.codex/config.toml`
```
[mcp_servers.edgedefense]
command = "edgedefense-mcp"
args = []
```
**VS Code / Copilot** —— `.vscode/mcp.json`
```
{
"servers": {
"edgedefense": {
"command": "edgedefense-mcp"
}
}
}
```
配置完成后请重启客户端。其他任何 MCP 客户端也同样适用——命令是
`edgedefense-mcp`,它不需要任何参数,并通过 stdio 进行通信。
## 试用
粘贴以下任意内容:
```
Scan my home network and tell me what's connected.
```
```
What's my network trust score, and why?
```
```
Is anything unusual connected right now?
```
获取结果后,可以进行很好的后续提问:*“192.168.1.47 上的那个设备是什么?”* · *“哪些设备你无法识别?”* · *“为什么这是一个问题?”*
首次扫描大约需要十秒钟。
## 架构
以下内容适用于阅读代码而非仅仅使用该工具的开发者。
这是一个 monorepo,刻意将共享的检测逻辑与基于其构建的产品进行了分离。
```
edgemcp/
├── core-engine/ Shared discovery, identification and scoring. Imported, never forked.
├── mcp-server/ The free, open-source MCP server. Ships independently.
└── core-app/ The paid Core/Home product. Not present yet.
```
### 为什么要进行这种分离
`core-engine/` 是检测逻辑的唯一存放地。`mcp-server/` 和未来的
`core-app/` 都以相同的方式导入它;两者都不重写其中的任何逻辑。
这是经过深思熟虑后预先确定的。在两个代码库已经出现分歧之后,
再改造共享引擎的成本高昂且完全可以避免,而划定边界的最佳时机
就是在出现第二个使用者之前。
`mcp-server/` 是一个独立的文件夹,而不是引擎的子文件夹,因为它是
独立发布的:拥有自己的打包方式、自己的公开代码库、自己的
README 以及自己的 MIT 许可证。
### 严格的边界
**`mcp-server/` 是公开的。其中可访问的任何内容也都是公开的。**
因此,`core-engine/` 仅包含通用的、可安全开源的逻辑:
设备发现、ARP 和 mDNS 扫描、供应商查询以及评分计算。
付费产品背后的训练有素的机器学习(ML)检测流水线**不**在这个
代码库中,没有被这里的任何内容导入,而是存在于一个单独的私有
软件包中。这是一个既定的架构约束,而不是未来计划去做的 TODO。
### 限制所有变更的两个保证
1. **绝不联网发送数据。** 任何已发布的代码路径都不会出于任何目的
发出外部网络请求,包括数据分析。供应商查询读取的是
捆绑在磁盘上的本地数据库。唯一的例外是
`core-engine/scripts/update_oui.py`,这是一个由维护者运行的脚本,它不是
分发包的一部分,并且在其自身的 docstring 中已有相关文档说明。
2. **Tier 0 无需提权。** 设备发现、识别、
端口指纹识别和信任评分均可以在
Windows、macOS 和 Linux 上以普通用户身份运行。只有选择启用的 Tier 1 流量分析需要更高权限,
并且它会在请求任何权限之前显示书面的同意通知。
这两点对于该产品的存在前提具有决定性支撑作用。一个悄悄
调用外部 API 的隐私工具,在技术用户第一次对它运行网络抓包时,就会彻底输掉这场信任辩论。
### 当前范围
**包含:** Tier 0 零权限发现,Tier 1 可选启用的启发式流量分析。
**不包含(这是刻意决定而非遗漏):** 机器学习(ML)流水线(Tier 2)、
破坏性工具(例如 `block_device`),以及核心/家庭(Core/Home)版产品功能。一个六十秒前才安装的免费工具不应该能够将设备从您的网络中断开;强制执行权应属于您已决定信任的产品。
## 开发
```
pip install -e ./core-engine
pip install -e ./mcp-server
```
运行测试:
```
cd core-engine && python -m pytest -q
cd ../mcp-server && python -m pytest -q
```
验证评估问题是否可以通过工具输出解答:
```
cd mcp-server && python evaluation/run_evaluation.py
```
然后将 MCP 客户端指向它——有关安装和配置,请参阅 [mcp-server/README.md](mcp-server/README.md)。
## 许可证
MIT,适用于整个代码库。
Claude Desktop 的配置文件在哪里?
| 平台 | 路径 | |---|---| | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` | | Windows | `%APPDATA%\Claude\claude_desktop_config.json` | | Linux | `~/.config/Claude/claude_desktop_config.json` |客户端提示 “command not found” 或服务器无法启动
桌面应用程序通常无法识别您终端中的 `PATH`,如果您将其安装在了虚拟环境中,这就很重要。请找到其实际路径: ``` # macOS / Linux which edgedefense-mcp # Windows where edgedefense-mcp ``` 然后在配置文件中使用完整路径,而不是仅使用简易名称: ``` { "mcpServers": { "edgedefense": { "command": "/full/path/to/edgedefense-mcp" } } } ``` 直接通过 Python 运行也可以,并且可以完全避开 `PATH` 问题: ``` { "mcpServers": { "edgedefense": { "command": "/full/path/to/python", "args": ["-m", "edgedefense_mcp"] } } } ```标签:Claude, CVE检测, Docker 部署, MCP, Python, 云存储安全, 无后门, 本地网络, 网络扫描, 网络运维, 逆向工具