bonetrees/osint-mcp-gateway
GitHub: bonetrees/osint-mcp-gateway
一个模块化的 OSINT MCP 服务器平台,通过带 BM25 搜索的网关将多个威胁情报源聚合后统一暴露给 AI 客户端,实现对话式多源情报调查。
Stars: 0 | Forks: 0
# OSINT MCP 工具
用于 OSINT 和威胁情报调查的模块化、对话式 MCP 服务器。每个服务器封装了一个情报源并可独立部署;OSINT Gateway 将它们聚合在一起,并向 Claude 暴露一个支持 BM25 搜索的工具目录。
## 服务器
| 服务器 | 功能说明 | 端口 | API key |
|---|---|---|---|
| **OSINT Gateway** | 聚合所有后端;支持跨目录的 BM25 工具搜索 | 9000 | — |
| Shodan | IP / 服务 / 漏洞查询 | 9102 | `SHODAN_API_KEY` |
| VirusTotal | 文件 / URL / 域名 / IP 情报 | 9103 | `VT_API_KEY` |
| DNS OSINT | DNS 侦察(解析、PTR、axfr 探测、SPF/DMARC) | 9104 | — |
| WHOIS | RDAP 注册和路由数据 | 9105 | — |
| RIPEStat | BGP、前缀、ASN、地理位置、滥用联系人 | 9106 | — |
| OTX | AlienVault 社区威胁情报 — pulse 和 indicator | 9107 | `OTX_API_KEY` |
API key 位于仓库根目录的 `.env` 中。
## 快速开始
### 从源码构建(本地开发)
```
# 启动一切
docker compose up --build
# 或单台服务器
docker compose up --build shodan
# Health checks
curl http://localhost:9000/health # Gateway
curl http://localhost:9102/health # Shodan
# ...
```
### 使用来自 GHCR 的预构建镜像
每次合并到 `main` 分支时,所有服务器的镜像都会发布到 `ghcr.io/bonetrees/`,标签为 `latest` 和短 SHA。
```
# One-time auth
gh auth refresh -s read:packages && gh auth token | docker login ghcr.io -u "$(gh api user -q .login)" --password-stdin
# 拉取并运行
docker compose -f docker-compose.yml -f docker-compose.ghcr.yml pull
docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up -d
# 固定特定 build 以便 rollback
IMAGE_TAG= docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up -d
```
请参阅 [`CLAUDE.md`](./CLAUDE.md) 获取完整的命令参考。
## 架构
- **每个服务器一个容器** — 每个服务器均可独立部署
- **Streamable-HTTP 传输** — 同一容器既可在本地运行,也可在 Cloud Run 中运行
- **通过 Gateway 组合** — 客户端看到约 4 个可见工具(`search_tools`、`call_tool`、`list_backends`、`gateway_status`);Gateway 代理底层约 50 个工具组成的目录,并提供基于 BM25 的搜索以便发现
- **自包含** — 服务器之间没有共享的运行时依赖;每个都是一个独立的 Poetry 项目
## 项目结构
```
├── CLAUDE.md # Project-level instructions and command reference
├── docker-compose.yml # All servers, build-from-source
├── docker-compose.ghcr.yml # Override that pulls prebuilt GHCR images
├── docs/
│ ├── PROJECT_VISION.md # "Vibe Investigate" concept
│ ├── MCP_SERVER_TEMPLATE.md # Architecture template for new servers
│ └── GATEWAY_TEMPLATE.md # Gateway-specific patterns
├── tools/
│ ├── osint-gateway/
│ ├── shodan_mcp/
│ ├── dns-osint-mcp/
│ ├── vt_mcp/
│ ├── whois-mcp/
│ ├── ripestat-mcp/
│ └── otx-mcp/
└── .github/workflows/
└── build-images.yml # GHCR build-and-push pipeline
```
## 文档
- **[CLAUDE.md](./CLAUDE.md)** — 项目级别的说明、命令参考、跨服务器规范
- **[docs/PROJECT_VISION.md](./docs/PROJECT_VISION.md)** — 我们在构建什么以及为什么
- **[docs/MCP_SERVER_TEMPLATE.md](./docs/MCP_SERVER_TEMPLATE.md)** — 新服务器的规范架构模板
- **[docs/GATEWAY_TEMPLATE.md](./docs/GATEWAY_TEMPLATE.md)** — Gateway 特定的模式
- 各服务器专属 README:[Gateway](./tools/osint-gateway/README.md) · [Shodan](./tools/shodan_mcp/README.md) · [DNS OSINT](./tools/dns-osint-mcp/README.md) · [VirusTotal](./tools/vt_mcp/README.md) · [WHOIS](./tools/whois-mcp/README.md)
## 开发
每个服务器都是一个独立的 Poetry 项目。针对特定服务器的命令(安装、测试、lint)位于每个服务器的 `CLAUDE.md` 中。新服务器应遵循 [`docs/MCP_SERVER_TEMPLATE.md`](./docs/MCP_SERVER_TEMPLATE.md) — 包括针对 BM25 发现的描述增强指南。
代码风格:Python ≥3.13,Black + Pylint,全面使用类型提示,日志中使用 `%s` 延迟格式化。
标签:Docker, ESC4, GitHub, MCP服务, OSINT, 威胁情报, 安全防御评估, 实时处理, 开发者工具, 版权保护, 请求拦截, 逆向工具