jaimealberto/harper-mcps
GitHub: jaimealberto/harper-mcps
为Claude Code提供MCP协议服务器,用于管理Obsidian vault、执行SSH命令、控制Windows系统并进行OSINT研究。
Stars: 0 | Forks: 0
# harper-mcps
用于 [Claude Code](https://claude.ai/code) 的 MCP (_Model Context Protocol_) 服务器集合,可管理基础设施、访问 Obsidian vault、管理 Windows 机器并执行 OSINT 调研。
专为自管理的 homelab 设计。所有服务器均使用 stdio 传输方式,不依赖 FastMCP,实现快速启动(<20ms)。
## 包含的服务器
| 服务器 | 工具 | 依赖项 |
|--------|------|--------|
| `mcp_obsidian_server.py` | search, read, write, list, tags, backlinks, structure | `mcp` |
| `mcp_ssh_server.py` | ssh_run, ssh_read/write_file, ssh_check, nmap_discover/scan/audit | `nmap` (系统) |
| `mcp_winrm_server.py` | winrm_run_ps, winrm_read/write_file, winrm_install, winrm_check | `pywinrm` |
| `mcp_osint_server.py` | username, email, social, domain, whois, dns, phone, ip, breach, dossier | 见下文 |
## 快速安装
### 1. 克隆仓库
```
git clone https://github.com/JaimeAlberto/harper-mcps.git
cd harper-mcps
```
### 2. 安装依赖
**MCP Obsidian:**
```
pip install mcp
```
**MCP SSH + nmap:**
```
# 无 Python 依赖——使用系统自带的 ssh 和 nmap
sudo apt install nmap # Debian/Ubuntu
# brew install nmap # macOS
```
**MCP WinRM:**
```
pip install pywinrm urllib3
```
**MCP OSINT:**
```
# 基础库(必需):
pip install python-whois dnspython phonenumbers
# 可选工具(用于深入搜索):
pip install maigret holehe sherlock-project theHarvester
```
### 3. 配置
复制示例配置文件:
```
cp .env.example .env
# 编辑 .env 文件填写路径
cp winrm_hosts.example.json ~/.claude/winrm_hosts.json
chmod 600 ~/.claude/winrm_hosts.json
# 编辑并填写你的 Windows 主机和凭据
```
### 4. 添加到 Claude Code
在 `~/.claude.json` 文件的 `mcpServers` 键下添加(或使用 `claude mcp add` 命令):
```
{
"mcpServers": {
"harper-obsidian": {
"type": "stdio",
"command": "python3",
"args": ["/ruta/a/harper-mcps/mcp_obsidian_server.py"],
"env": {
"OBSIDIAN_VAULT": "/home/tuusuario/Obsidian"
}
}
}
}
```
查阅 `claude_settings_example.json` 可以查看同时配置四个服务器的示例。
## 各服务器详情
### MCP Obsidian (`harper-obsidian`)
允许 Claude Code 直接读写你的 [Obsidian](https://obsidian.md) vault。
📄 [完整文档 → docs/obsidian.md](docs/obsidian.md)
**环境变量:**
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `OBSIDIAN_VAULT` | `~/Obsidian` | vault 路径 |
**可用工具:**
| 工具 | 描述 |
|------|------|
| `search_vault` | 在所有笔记中搜索文本,并显示上下文片段 |
| `read_note` | 根据相对于 vault 的路径读取笔记 |
| `write_note` | 写入或覆盖笔记 |
| `list_notes` | 列出目录下的笔记(递归) |
| `find_by_tag` | 通过前置信息或正文中的标签查找笔记 |
| `get_backlinks` | 查找链接到特定笔记的其他笔记 |
| `vault_structure` | 显示文件夹结构及笔记数量 |
**使用示例:**
- “在我的 vault 中搜索关于 Python 的笔记”
- “读取笔记 Proyectos/mi-proyecto.md”
- “列出所有带有 #pendiente 标签的笔记”
- “哪些笔记链接到了 weekly-review 笔记?”
### MCP SSH + nmap (`harper-ssh`)
通过 SSH 在远程 Linux/Unix 主机上执行命令,并使用 nmap 扫描网络。
从 `~/.ssh/config` 读取主机配置 — 不存储密码。
📄 [完整文档 → docs/ssh.md](docs/ssh.md)
**亮点特性:**
- 写入文件前自动备份(创建 `fichero.harper.YYYY-MM-DD`)
- 检测命令中的写入操作,并对目标文件进行备份
- 使用 nmap 进行 ping 扫描、端口扫描和完整服务审计
**可用工具:**
| 工具 | 描述 |
|------|------|
| `ssh_list_hosts` | 列出 `~/.ssh/config` 中的主机,包括 IP 和用户 |
| `ssh_run` | 在远程主机上执行命令 |
| `ssh_read_file` | 读取远程文件内容 |
| `ssh_write_file` | 写入远程文件(带自动备份) |
| `ssh_check` | 检查与主机的 SSH 连通性 |
| `ssh_check_all` | 同时检查所有主机 |
| `nmap_discover` | Ping 扫描:发现网络中的活跃主机 |
| `nmap_scan` | 对一个或多个主机进行端口扫描 |
| `nmap_audit` | 完整审计:服务版本 + NSE 脚本 |
**使用示例:**
- “列出我的 SSH 主机”
- “在 servidor01 上执行 `df -h`”
- “扫描 192.168.1.0/24 网段的 22,80,443 端口”
- “我的网络中哪些主机是活跃的?”
### MCP WinRM (`harper-winrm`)
通过 WinRM(Windows 远程管理)远程管理 Windows 机器。
📄 [完整文档 → docs/winrm.md](docs/winrm.md)
**Windows 端要求**(需以管理员身份执行):
```
Enable-PSRemoting -Force
# HTTPS(推荐):
New-SelfSignedCertificate -DnsName "NOMBRE_PC" -CertStoreLocation Cert:\LocalMachine\My
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Port="5986";CertificateThumbprint="THUMBPRINT"}
```
**凭证文件** (`~/.claude/winrm_hosts.json`, 权限 chmod 600):
```
{
"hosts": {
"mi-pc": {
"endpoint": "https://192.168.1.100:5986/wsman",
"username": "administrador",
"password": "tu-contraseña",
"transport": "basic",
"server_cert_validation": "ignore",
"message_encryption": "never"
}
}
}
```
**环境变量:**
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `WINRM_HOSTS_CONFIG` | `~/.claude/winrm_hosts.json` | 凭证文件路径 |
**可用工具:**
| 工具 | 描述 |
|------|------|
| `winrm_list_hosts` | 列出已配置的主机及其凭证状态 |
| `winrm_run_ps` | 在 Windows 主机上执行 PowerShell 脚本 |
| `winrm_read_file` | 读取 Windows 文件内容 |
| `winrm_write_file` | 写入 Windows 文件(带自动备份) |
| `winrm_install` | 通过 winget 安装软件 |
| `winrm_check` | 检查 WinRM 连通性 |
**使用示例:**
- “我的电脑 my-pc 开机了吗?”
- “在 my-pc 上执行 `winget upgrade` 并显示待更新项”
- “通过 winget 在 my-pc 上安装 Mozilla.Firefox”
- “读取 my-pc 上的 C:\Users\usuario\AppData\Local\app\config.ini 文件”
### MCP OSINT (`harper-osint`)
集成到 Claude Code 中的开源情报工具。封装了 maigret、holehe、sherlock、theHarvester 和标准库。
📄 [完整文档 → docs/osint.md](docs/osint.md)
**环境变量:**
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `OSINT_VAULT` | `~/osint-reports` | 保存报告的目录 |
| `THEHARVESTER_BIN` | 自动检测 | theHarvester 二进制文件路径 |
**可用工具:**
| 工具 | 功能 | 依赖 |
|------|------|------|
| `osint_status` | 检查已安装的工具 | — |
| `osint_username` | 在 3000+ 网站搜索用户名 (Maigret) | `pip install maigret` |
| `osint_email` | 在 120+ 服务搜索邮箱 (Holehe) | `pip install holehe` |
| `osint_social_scan` | 在 400+ 社交网络搜索用户名 (Sherlock) | `pip install sherlock-project` |
| `osint_domain` | 搜索邮箱/子域名/IP (TheHarvester) | `pip install theHarvester` |
| `osint_whois` | 查询域名或 IP 的 WHOIS 信息 | `pip install python-whois` |
| `osint_dns` | 完整 DNS 查询 + SPF/DMARC/DKIM | `pip install dnspython` |
| `osint_phone` | 查询电话号码的国家/运营商/类型 | `pip install phonenumbers` |
| `osint_ip` | 查询公网 IP 的 ASN/地理位置/滥用信息 | — (使用 ipinfo.io) |
| `osint_breach_check` | 检查邮箱是否出现在数据泄露中 (HIBP) | — (可选 API 密钥) |
| `osint_dossier` | 综合所有工具生成完整报告 | 根据目标类型 |
**使用示例:**
- “检查已安装的 OSINT 工具状态”
- “对 example.com 执行 WHOIS 查询”
- “分析 empresa.com 的 DNS 记录,告诉我它是否有 SPF 和 DMARC”
- “邮箱 usuario@ejemplo.com 是否出现在数据泄露中?”
- “生成关于域名 empresa.com 的完整报告”
## 安全注意事项
- **MCP SSH:** 不存储凭证 — 使用 `~/.ssh/config` 和 SSH 密钥。
- **MCP WinRM:** 凭证存储在仓库外的 `winrm_hosts.json` 文件中。保持 `chmod 600` 权限,切勿提交到版本库。
- **MCP OSINT:** 所有工具都会进行网络请求。请遵守各平台的使用限制和服务条款。
- **nmap:** 某些扫描类型需要 root 权限。服务器使用 `-sT` (TCP connect) 方式,不需要特殊权限。
## 许可证
MIT 许可证。使用风险自负。这些工具会进行真实的网络连接并可能修改远程系统。
标签:逆向工具