snuri00/osint-mcp
GitHub: snuri00/osint-mcp
一款自托管的MCP原生OSINT工具包,整合实体、事件新闻与社交情报调查功能,支持CLI、Web UI、AI REPL及多种聊天平台接入。
Stars: 1 | Forks: 0
# osint-mcp
一个自托管的 OSINT(开源情报)工具包,支持五种运行方式:作为 MCP server、交互式 AI REPL、CLI、Web 应用,以及——通过 [OpenClaw](https://github.com/openclaw/openclaw)——直接从 WhatsApp、Telegram 和 Discord 等聊天应用中使用。它将跨三个领域的 29 款调查工具打包在一起——**实体情报**(email、username、breach、domain、IP、phone、geolocation)、**事件/新闻情报**(精选新闻、GDELT 事件、灾难、人道主义报道)和**社交/社区情报**(按参与度排名的讨论,涵盖 Reddit、Hacker News、Polymarket 等)——此外还提供 AI 驱动的多目标和事件调查。
优先免 Key,但并非完全免 Key:大多数工具无需 API key 即可工作,但部分数据源(breach 查询、Shodan、Censys 以及 X 和 Instagram 等社交平台)和 AI agent 需要可选的 key——请参阅[配置](#configuration)。
仅授权用于安全研究、CTF、新闻报道和个人数字足迹审计。

## 功能特点
- 包含 29 款 OSINT 工具以及 AI 驱动的多目标和事件调查。
- 三大情报领域:基于实体/个人的情报、基于事件的(新闻工作者风格的)态势感知,以及社交/社区讨论。
- 事件/新闻情报:搜索约 500 个精选新闻源,包含来源层级和宣传/国家附属标记;GDELT 全球事件报道;自然灾害聚合(USGS / GDACS / NASA EONET);以及 UN OCHA 人道主义报道——全部无需 Key。
- 同一代码库提供五种接口:MCP server、AI REPL、CLI、Web UI,以及通过 OpenClaw 接入的聊天应用(WhatsApp / Telegram / Discord / Slack / ……)。
- 多数工具免 Key 且开箱即用;API key 为可选项,仅用于解锁特定的优质数据源。
- AI agent 由 Anthropic Claude、DeepSeek(兼容 Anthropic 的 API)或本地 Ollama 模型提供支持。
- 所有工具均支持可选的结构化 JSON 输出。
- 被动优先设计:子域名和证书发现绝不直接触碰目标。
## 为什么选择 osint-mcp
| | osint-mcp | theHarvester | SpiderFoot | Maltego CE |
| --------------------------------- | :-------: | :----------: | :--------: | :--------: |
| MCP 原生支持(由 AI agent 驱动) | 是 | 否 | 否 | 否 |
| 交互式 AI REPL | 是 | 否 | 否 | 否 |
| 开箱即用免 Key | 多数工具 | 部分 | 部分 | 否 |
| 事件/新闻情报 | 是 | 否 | 否 | 否 |
| 社交/社区情报 | 是 | 否 | 部分 | 部分 |
| 同一代码库提供 CLI + Web UI | 是 | CLI | Web | GUI |
| 许可证 | MIT | GPL | MIT | 商业 |
## 工具
### 实体情报
| 工具 | 来源 | API key |
| ------------------- | ---------------------------- | ------- |
| generate_dorks | 内置 | 否 |
| search_email | holehe | 否 |
| search_username | sherlock | 否 |
| search_xposed | XposedOrNot | 否 |
| search_paste | LeakCheck (公开) | 否 |
| search_gravatar | Gravatar | 否 |
| search_whois | python-whois | 否 |
| search_dns | dnspython | 否 |
| search_domain | sublist3r | 否 |
| search_crt | crt.sh / certspotter | 否 |
| search_ip | ipinfo.io | 可选 (IPINFO_TOKEN) |
| search_ipgeo | ip-api.com / ipwho.is | 否 |
| search_geocode | Photon / OpenStreetMap | 否 |
| search_phone | phoneinfoga | 否 |
| search_github | GitHub API | 可选 (GITHUB_TOKEN) |
| search_breach | HaveIBeenPwned | 是 (HIBP_API_KEY) |
| search_ip2location | IP2Location | 是 (IP2LOCATION_API_KEY) |
| search_abuseipdb | AbuseIPDB | 是 (ABUSEIPDB_API_KEY) |
| search_shodan | Shodan | 是 (SHODAN_API_KEY) |
| search_virustotal | VirusTotal | 是 (VIRUSTOTAL_API_KEY) |
| search_censys | Censys | 是 (CENSYS_API_ID + CENSYS_SECRET) |
| investigate_multi | 完整工具链 (AI 驱动) | 是 (AI 提供商 key) |
### 事件与新闻情报
| 工具 | 来源 | API key |
| ------------------- | --------------------------------- | ------- |
| search_news | 约 500 个精选 RSS 源 | 否 |
| search_events | GDELT GKG 原始文件 | 否 |
| search_disasters | USGS / GDACS / NASA EONET | 否 |
| search_reliefweb | ReliefWeb (UN OCHA) | 否 |
| monitor_country | 多源态势简报 | 否 |
| investigate_event | 事件工具链 (AI 驱动) | 是 (AI 提供商 key) |
`search_news` 会为每条新闻标题标注其来源层级(通讯社 / 政府 / 情报 / 主流媒体),并标记官方附属或具有高宣传风险的媒体,以便一目了然地查看印证情况和来源偏见。
### 社交与社区情报
| 工具 | 来源 | API key |
| ------------------- | --------------------------------- | ------- |
| search_social | Reddit, Hacker News, Polymarket, GitHub | 否 (核心) |
`search_social` 返回一份按参与度排名且带有引用的简报,展示人们关于某一话题的真实言论——其排名取决于点赞数、评论数和预测市场资金,而非编辑 SEO。免 Key 的核心工具(Reddit、Hacker News、Polymarket、GitHub)开箱即用;设置可选 key(`SCRAPECREATORS_API_KEY`、`BRAVE_API_KEY`、`OPENROUTER_API_KEY`、X/Bluesky 凭证)可解锁 X/Twitter、TikTok、Instagram 和网络搜索。内置引擎为基于 MIT 许可证的 [last30days](https://github.com/mvanhorn/last30days-skill) 项目(仅使用标准库,需要 Python 3.12+)。
### 关联与图像 GEOINT
| 工具 | 来源 | API key |
| ------------------- | --------------------------------------- | ------- |
| build_graph | Mermaid + vis-network | 否 |
| geolocate_image | EXIF + GeoCLIP + Picarta + 反向图像搜索 | 否 (核心) |
`build_graph` 可将调查中发现的标识符转化为交互式的实体关联图(Mermaid + 独立 HTML)。`geolocate_image` 用于估算照片的拍摄地点:存在 EXIF GPS 时结果即为精确位置;否则它会结合 GeoCLIP 图像嵌入模型(`pip install 'osint-mcp[geo]'`)、可选的 Picarta 估算(`PICARTA_API_KEY`)以及反向图像搜索链接——除 EXIF 外的所有结果都会明确标记为估算值。
## 安装
```
git clone git@github.com:snuri00/osint-mcp.git
cd osint-mcp
pip install -e .
```
可选扩展:
```
pip install -e ".[web]" # web UI dependencies (FastAPI, upload support)
pip install -e ".[geo]" # photo geolocation — GeoCLIP (pulls PyTorch, large)
pip install -e ".[all]" # shodan, censys, ollama, pdf, web
```
`geo` 扩展用于在 `geolocate_image` 中启用 GeoCLIP 图像嵌入估算。它会安装 PyTorch(大小约几百 MB),并在首次运行时下载模型权重。`geolocate_image` 的免 Key 核心功能(EXIF GPS + 反向图像搜索)在未安装该扩展时也能正常工作;设置 `PICARTA_API_KEY` 可添加可选的 Picarta 照片→GPS 估算。
一些免 Key 工具需调用外部二进制程序。请预先安装它们:
```
pip install holehe sherlock-project sublist3r
```
执行 `pip install -e .` 后即可使用两个命令:`osint-mcp`(CLI/REPL)和 `osint-mcp-server`(基于 stdio 的 MCP server)。如果你不想安装,可在任意命令前加上项目路径:
```
PYTHONPATH=/path/to/osint-mcp python3 -m osint_mcp.cli
```
## 用法
### 直接命令(无需 AI 和 Key)
```
osint-mcp dns example.com
osint-mcp email someone@example.com
osint-mcp username johndoe
osint-mcp github torvalds
```
### 交互式 AI REPL
```
export ANTHROPIC_API_KEY=sk-ant-...
osint-mcp
```
然后在提示符下输入目标或问题:
```
osint-mcp > investigate someone@example.com # entity intelligence
osint-mcp > what is the latest news on Sudan? # event intelligence
osint-mcp > monitor Taiwan # country situational brief
osint-mcp > investigate the Red Sea shipping disruption
```
若要使用 DeepSeek(兼容 Anthropic 的 API)代替 Anthropic:
```
export DEEPSEEK_API_KEY=sk-...
osint-mcp --provider deepseek
```
若要在完全本地且无云端 key 的环境下运行,请使用 Ollama 模型:
```
osint-mcp --provider ollama
```
### Web 应用
```
osint-mcp web
```
### MCP server
服务器通过 stdio 进行 MCP 通信。执行 `pip install -e .` 后,`osint-mcp-server` 命令即会加入你的 PATH 中;你可以将其注册到任何 MCP 客户端。
Claude Code:
```
claude mcp add osint-mcp -- osint-mcp-server
```
其他客户端(Claude Desktop 等)——请添加到客户端的 MCP 配置中:
```
{
"mcpServers": {
"osint-mcp": { "command": "osint-mcp-server" }
}
}
```
若未进行安装,请改为使用模块形式运行——设置 `PYTHONPATH=/path/to/osint-mcp` 并使用 `python3 -m osint_mcp.mcp_server` 作为命令。
### 在聊天应用中使用 (OpenClaw)
[OpenClaw](https://github.com/openclaw/openclaw) 是一个自托管的网关,可将 50 多种消息平台(WhatsApp、Telegram、Discord、Slack、Signal、iMessage 等)桥接至 AI agent,并将 MCP server 作为技能使用——因此所有 29 款 osint-mcp 工具均可直接在聊天中使用。从 WhatsApp 执行 OSINT:“调查此 email”、“定位此照片”、“苏丹发生了什么?”。
将其注册:
```
openclaw mcp add osint-mcp --command osint-mcp-server
```
或者将其添加到 `~/.openclaw/openclaw.json` 中(可选的 API key 放在 `env` 中;免 Key 核心工具留空即可)。`[`examples/openclaw.json`](examples/openclaw.json)` 中提供了现成的模板:
```
{
"mcp": {
"servers": {
"osint-mcp": {
"command": "osint-mcp-server",
"env": { "DEEPSEEK_API_KEY": "", "PICARTA_API_KEY": "", "SHODAN_API_KEY": "" }
}
}
}
}
```
未安装?请使用 `"command": "python3"`, `"args": ["-m", "osint_mcp.mcp_server"]` 以及 `"env": { "PYTHONPATH": "/path/to/osint-mcp" }`。
该项目也已发布在 [ClawHub](https://docs.openclaw.ai/clawhub)(OpenClaw 技能注册中心)上——通过以下方式安装 agent playbook:
```
openclaw skills install osint-mcp
```
技能源文件位于 [`clawhub/SKILL.md`](clawhub/SKILL.md) 中。若要发布新版本:`clawhub skill publish ./clawhub --slug osint-mcp --version --tags latest`。
## 配置
复制示例环境文件,并仅填入你需要的 key:
```
cp .env.example .env
```
免 Key 工具无需配置即可使用。只有上述表格中标记为“是”的数据源才需要 key,并且 AI REPL 需要一个 AI 提供商的 key——`ANTHROPIC_API_KEY` 或 `DEEPSEEK_API_KEY`——或者使用 `--provider ollama` 实现完全本地运行。
## 输出格式
每个工具均接受可选的 `json_output` 标志(MCP)或 `--json` 标志(CLI),以返回结构化的 JSON 对象来代替格式化文本,方便通过管道传递给其他工具。
## 负责任的使用
osint-mcp 聚合的是**公开**来源,但其技术属于**双用途**——尤其是针对个人的工具(照片地理定位、breach 查询、账户枚举)。请仅将其用于经过授权的合法用途:安全研究、经许可的渗透测试、CTF、符合公共利益的新闻报道以及审查你自身的数字足迹。
**严禁**在未经特定人员同意的情况下,使用该工具跟踪、人肉、监视、定位、骚扰或伤害特定人员;**严禁**用于针对未获授权评估的人员/系统;**严禁**违反任何法律、隐私法规或服务提供商条款。
结果通常仅为**估算值**(地理定位、AI 推理、breach 匹配),且可能出错——切勿将估算视为事实,或基于未经证实的结果对他人采取行动。通过机器人/聊天(OpenClaw、ClawHub)部署时,操作者必须保持同样的界限,并为敏感功能添加防护措施。如果请求的明显目的是伤害或监视私人个体,AI agent 将予以拒绝。
请参阅 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) 了解完整的可接受使用政策。
你需对自己的行为以及遵守所有法律负责。
## 许可证
MIT。
标签:AI代理, AI风险缓解, ESC4, MCP, OSINT, 实时处理, 逆向工具