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、新闻报道和个人数字足迹审计。 ![osint-mcp demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8bb9803f83130935.gif) ## 功能特点 - 包含 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, 实时处理, 逆向工具