mcp-osint
Claude Code的MCP服务器,提供对OSINT数据源的访问:
- 政府 -Data.gov、LegiScan、CourtListener、人口普查局
- 研究 -OpenAlex,语义学者,PubMed,CORE
- 企业 -SEC EDGAR(10-K,10-Q),FRED(经济数据)
- 合规 -开放制裁(制裁、政治公众人物)
- 新闻/知识 - GDELT, 维基数据
- 基础设施 -crt.sh(SSL证书、子域)
- 网络 -Firecrawl(使用HTML+markdown抓取URL)
设置
1.获取API密钥
所需密钥:
- LegiScan - legiscan.com/user/register
- 法庭听众 - 法庭听众.com/api
- 弗雷德 - fred.stlouisfed.org/docs/api
- 火爬 - firecrawl.dev
可选密钥(更高的速率限制):
- Data.gov - api.data.gov/注册
- 人口普查 - census.gov/data/developers
- 核心 - core.ac.uk/services/api
- 开放 - opensanctions.org/api
免费(无密钥):SEC EDGAR、GDELT、维基数据、crt.sh、OpenAlex、语义学者、PubMed
2.安装和构建
cd mcp-osint
npm install
npm run build3.添加到克劳德代码
使用CLI:
claude mcp add -s user -t stdio mcp-osint \
-e LEGISCAN_API_KEY=your-key \
-e COURTLISTENER_API_KEY=your-key \
-e FRED_API_KEY=your-key \
-e FIRECRAWL_API_KEY=your-key \
-- node /path/to/mcp-osint/dist/index.js或者手动添加到MCP设置中(~/.claude/settings.json 或VS代码设置):
{
"mcpServers": {
"mcp-osint": {
"command": "node",
"args": ["/path/to/mcp-osint/dist/index.js"],
"env": {
"LEGISCAN_API_KEY": "your-key",
"COURTLISTENER_API_KEY": "your-key",
"FRED_API_KEY": "your-key",
"FIRECRAWL_API_KEY": "your-key",
"POLITE_EMAIL": "you@example.com"
}
}
}
}工具
osint_search
搜索14个OSINT数据源。返回包含可用资源的结果。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 是 | 自然语言搜索查询 |
source | string | 强制使用特定连接器(见下表) | |
jurisdiction | string | 状态码(例如。, "CA")或 "US" | |
year | number | 筛选到特定年份 | |
limit | number | 最大结果数(默认值:10) |
示例:
"EPA air quality data California" → Data.gov
"Michigan renewable energy bill 2024" → LegiScan
"Brown v. Board of Education" → CourtListener
"population by county Texas" → Census
"machine learning medical diagnosis" → OpenAlex/PubMed
"Apple 10-K filing 2024" → SEC EDGAR
"GDP quarterly growth rate" → FRED
"Russian sanctions oligarchs" → OpenSanctions
"Ukraine conflict news" → GDELT
"microsoft.com subdomains" → crt.shosin_preview
在获取之前预览资源的架构和示例数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
resource_id | string | 是 | 来自osint_search的资源ID |
row_limit | number | 表格数据的示例行(默认值:5) | |
max_bytes | number | 文本预览的最大字节数(默认值:4000) |
osint_get
从资源ID或URL获取数据。自动处理网页、PDF和结构化数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
target | string | 是 | 来自osint_search的URL(http/https)或resource_id |
output_path | string | 保存二进制文件的路径(PDF需要) | |
question | string | 提取什么(例如,“所有数据”、“关键发现”) | |
summarize | boolean | 如果问题为true,则仅返回相关内容(默认值:false) | |
columns | string\[\] | 要返回的特定列(仅限resource_id) | |
filters | object\[\] | 筛选条件(仅限resource_id表格数据) | |
limit | number | 表格数据的最大行数(默认值:100) |
按目标类型划分的行为:
| 目标 | 行为 |
|---|---|
| Web URL | 通过Firecrawl返回markdown+原始HTML+SHA256哈希 |
| PDF URL | 下载到 output_path,返回文件路径+SHA256 |
| 二进制URL | 下载到 output_path,返回文件路径+SHA256 |
| 资源ID | 通过连接器提取数据,可选过滤 |
示例:
osint_get target="https://example.com/article"
osint_get target="https://example.com/paper.pdf" output_path="./downloads/paper.pdf"
osint_get target="pubmed:paper:12345:abstract" question="key findings"osint_list_来源
列出所有数据源及其配置状态。
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
LEGISCAN_API_KEY | 是 | - | LegiScan立法数据 |
COURTLISTENER_API_KEY | 是 | - | CourtListener司法数据 |
FRED_API_KEY | 是 | - | FRED经济数据 |
FIRECRAWL_API_KEY | 是 | - | Firecrawl网络抓取 |
DATAGOV_API_KEY | - | Data.gov(上限) | |
CENSUS_API_KEY | - | 人口普查局(上限) | |
CORE_API_KEY | - | CORE开放获取论文 | |
OPENSANCTIONS_API_KEY | - | OpenSancions合规性数据 | |
POLITE_EMAIL | - | 礼貌使用API的电子邮件(OpenAlex、PubMed、SEC) | |
MCP_DEBUG | true | 调试日志记录;着手 "false" 禁用 | |
MCP_LOG_DIR | ./logs | 日志目录;着手 "none" 禁用 |
连接器
| 连接器 | 源 | 数据类型 | 需要密钥 |
|---|---|---|---|
data_gov | Data.gov | 数据集、资源 | 推荐 |
legiscan | LegiScan | 法案、投票、赞助商 | 是 |
courtlistener | 法庭听众 | 案件、意见、案卷 | 是 |
census | 人口普查局 | 人口统计 | 推荐 |
openalex | OpenAlex | 论文、作者、引用 | 否 |
semantic_scholar | 语义学者 | 论文、作者、引文 | 否 |
pubmed | PubMed/NCBI | 医学论文、摘要 | 否 |
core | 核心 | 开放获取论文 | 推荐 |
sec_edgar | SEC EDGAR | 10-K,10-Q,公司文件 | 否 |
fred | FRED | 时间序列,经济数据 | 是 |
opensanctions | 开放制裁 | 制裁,政治公众人物 | 是 |
gdelt | GDELT | 新闻,全球事件 | 否 |
wikidata | 维基数据 | 实体,知识图谱 | 否 |
crt_sh | crt.sh | SSL证书,子域 | 否 |
发展
npm install # Install dependencies
npm run build # Compile TypeScript
npm run dev # Watch mode
npm start # Run server测试
# Test connector metadata and identifiers
npx tsx test/test-all-connectors.ts
# Test data retrieval (downloads files)
npx tsx test/test-data-retrieval.ts
# Test Firecrawl HTML+Markdown
npx tsx test/test-firecrawl.ts
# Run comprehensive MCP tool tests
npx tsx test/test-mcp-scenarios.ts建筑
src/
├── index.ts # MCP server entry point
├── types.ts # Shared types
├── intent.ts # Query parsing and routing
├── router.ts # Connector selection
├── logger.ts # Logging utility
├── cache.ts # SQLite + file caching
├── retry.ts # Retry with backoff
└── connectors/
├── base.ts # Base connector class
├── data-gov.ts # Data.gov/CKAN
├── legiscan.ts # LegiScan
├── courtlistener.ts # CourtListener
├── census.ts # Census Bureau
├── openalex.ts # OpenAlex
├── semantic-scholar.ts
├── pubmed.ts # PubMed/NCBI
├── core.ts # CORE
├── sec-edgar.ts # SEC EDGAR
├── fred.ts # FRED
├── opensanctions.ts # OpenSanctions
├── gdelt.ts # GDELT
├── wikidata.ts # Wikidata
├── crt-sh.ts # crt.sh
└── firecrawl.ts # Firecrawl许可证
麻省理工学院
