关于 OpenResearch MCP
OpenResearch MCP 是面向需要公共信息的 Agent 的免密钥研究服务,覆盖网络、学术、金融、新闻和社交来源。它提供 22 种工具,并默认采用回环绑定和 SSRF 过滤等安全措施。
主要功能
- 01提供 22 种跨领域研究工具
- 02搜索网页、论文、新闻和代码仓库
- 03读取网页、PDF 和 YouTube 字幕
- 04获取金融、宏观、天气及 SEC 数据
- 05搜索 Bluesky 用户资料和帖子
- 06默认回环绑定并过滤 SSRF 请求
适用场景
- 01结合 SEC 文件、新闻和代码仓库研究公司
- 02通过论文和 PDF 深入追踪学术主题
- 03综合国家指标、汇率和历史天气
- 04查找生物医学文献并阅读开放获取论文
MCP 相关
通过 stdio 或 Streamable HTTP 向 MCP 客户端提供 22 种研究工具。所有工具无需 API 密钥即可使用,部分速率限制可通过可选环境变量提高。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx openresearch-mcpGITHUB_TOKEN密钥GitHub token — increases rate limit from 60 to 5,000 req/hrOPENALEX_EMAILYour email for the OpenAlex polite pool (higher rate limits)STACKEXCHANGE_KEY密钥Stack Exchange API key for higher daily quota on Stack Overflow searchesSEC_USER_AGENTYour contact email/string for SEC EDGAR fair-access; a default is used otherwise本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
openresearch-mcp
面向跨领域 Agent 的零认证、强化安全研究 MCP。
为 Claude、Cursor、OpenCode、Open WebUI 或任何兼容 MCP 的 Agent 提供完整的研究工具栈——网页搜索、学术论文、PDF、GitHub 仓库、新闻、宏观与金融数据、SEC 文件、生物医学文献、Bluesky 和 YouTube——无需管理 API 密钥。22 个工具,一次安装。
为什么选择它
研究 Agent 的能力取决于它们能够访问的数据源。但每增加一个数据源,通常就意味着要多一个 API 密钥、多一次注册、多一项需要操心的配额,也意味着更大的攻击面。
openresearch-mcp 专为需要立即获取实用公开数据的本地优先 Agent打造,并采用更安全的默认设置:
- 无需登录,无需密钥——所有工具开箱即用;可选环境变量只会提高速率限制。
- 从设计上强化安全性——默认绑定到环回地址,通过 SSRF 筛选 URL 获取请求,支持识别提示词注入的内容提取,限制下载大小,并能优雅处理故障。已依据 OWASP 面向 AI Agent 的标准进行安全审查。
- 上下文开销低——完整的 22 个工具约占 6.2K 个令牌(200K 上下文窗口的约 3%),这个数字由仓库中的脚本生成,而非估算得出。
可以做什么
真正的价值不在于单独使用这 22 个工具,而在于将它们串联起来,完成一次跨领域研究:
- 公司研究 →
search_sec_filings/get_company_financials→search_news→read_repo→read_url - 深入研究学术主题 →
search_openalex→search_europepmc→read_pdf - 宏观与国家背景信息 →
search_indicators→get_country_indicator→get_fx_rate→get_historical_weather
快速开始
uvx openresearch-mcp --stdio
让任意 MCP 客户端连接到它(Claude Desktop、Cursor 或 HTTP Agent——请参阅连接到 MCP 客户端),然后提出一个跨领域问题:
“从 SEC 文件中提取 Apple 最新的年度营收,然后查找有关其 AI 战略的近期新闻。”
Agent 会为你串联 get_company_financials → search_news,无需密钥,也无需配置。
安装
从 MCP Registry 安装(推荐用于 Claude Desktop / Cursor)
该服务已列入官方 MCP Registry,名称为 io.github.olanokhin/openresearch-mcp。支持 Registry 的客户端可以直接发现并安装,无需手动配置——在客户端的 MCP 浏览器中搜索 openresearch-mcp 即可。
从 PyPI 安装
# Zero install, always isolated — recommended for manual use
uvx openresearch-mcp
# Or install globally
pip install openresearch-mcp
openresearch-mcp
默认情况下,服务会在 http://127.0.0.1:8000/mcp 启动(Streamable HTTP,MCP 1.1+)——绑定到环回地址,因此不会暴露给本地网络。如需对外提供访问(例如在容器中或网关后),请显式绑定到所有网络接口:
# Custom port
uvx openresearch-mcp --port 9000
# Bind all interfaces (only behind an auth/rate-limit gateway)
uvx openresearch-mcp --host 0.0.0.0 --port 9000
**注意:**绑定到环回地址以外的地址时,请在前方设置身份验证/速率限制网关。该服务按设计无需认证;
read_url/read_pdf会获取任意 URL(为防止 SSRF,已阻止私有/链路本地/环回地址范围,但速率限制由你负责)。
连接到 MCP 客户端
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
(Windows:%APPDATA%\Claude\claude_desktop_config.json)
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"]
}
}
}
保存后重启 Claude Desktop。服务以 stdio 模式运行——无需端口。
Cursor
创建或编辑 ~/.cursor/mcp.json(全局配置)或 .cursor/mcp.json(项目级配置):
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"]
}
}
}
HTTP Agent(OpenCode、Open WebUI、自定义)
启动服务:
uvx openresearch-mcp
# or: openresearch-mcp
将 Agent 指向:
http://localhost:8000/mcp
工具
~Tok 列表示每个工具的完整定义(名称 + 描述 + JSON 输入架构,与 tools/list 中发送的内容一致)——每次请求都会注入 Agent 上下文。
| 工具 | 来源 | 说明 | ~Tok |
|---|---|---|---|
web_search | DuckDuckGo | 可选 site= 参数,用于限定搜索域名(例如 arxiv.org) | 251 |
read_url | 任意网页 | 去除导航栏和脚本,返回纯净文本 | 164 |
read_pdf | 任意 PDF 或 arXiv | 可互换接受 arXiv 的 /abs/、/pdf/、/html/ URL | 181 |
read_repo | GitHub 公开仓库 | README + 文件树 + 重要文档;设置 GITHUB_TOKEN 可达到每小时 5k 次请求 | 211 |
search_hacker_news | 通过 Algolia 访问 HN | 搜索文章,并显示积分和评论数 | 206 |
search_stackoverflow | Stack Overflow API | 设置 STACKEXCHANGE_KEY 可提高配额 | 212 |
search_openalex | OpenAlex | 超过 2.5 亿篇作品,无速率限制;设置 OPENALEX_EMAIL 可使用礼貌访问池 | 231 |
get_youtube_transcript | YouTube 字幕 | 接受完整 URL、youtu.be/ 链接、短视频链接或纯视频 ID | 194 |
get_current_date | 服务时钟 | 当前 UTC 日期/时间——为相对时间请求(“过去 30 天”)提供基准,而非进行猜测 | 240 |
get_weather_forecast | Open-Meteo | 按地点名称查询当前天气状况和最长 16 天的预报;无需密钥。请参阅下方的许可说明 | 229 |
get_historical_weather | Open-Meteo | 按地点和日期范围查询自 1940 年以来的气候序列,并按月/年汇总;无需密钥。请参阅下方的许可说明 | 328 |
search_indicators | World Bank | 按关键词(“GDP”“migration”)查找指标代码;将结果传入 get_country_indicator | 240 |
get_country_indicator | World Bank | 按国家和代码查询年度社会经济序列(GDP、人口、通胀、移民、预期寿命等);无需密钥 | 338 |
get_fx_rate | Frankfurter(ECB) | 货币汇率:最新汇率、历史日期汇率或日期范围序列(按周/月降采样);无需密钥 | 367 |
get_crypto_price | CoinGecko | 按币种 ID/符号查询相对于报价货币的加密货币价格(当前价格或每日历史数据);无需密钥 | 284 |
search_news | GDELT | 查询主题相关的全球最新新闻(多语言);返回可传入 read_url 的文章;无需密钥(速率限制约为每 5 秒 1 次) | 481 |
search_europepmc | Europe PMC | 查询生物医学/生命科学论文;标记开放获取论文,并提供可传入 read_pdf 的 PDF URL;无需密钥 | 264 |
search_bluesky_users | Bluesky | 按姓名、用户名或简介查找研究人员/开发者个人资料;无需密钥 | 227 |
get_bluesky_profile | Bluesky | 根据用户名获取完整简介以及关注者/帖子数;无需密钥 | 200 |
read_bluesky_feed | Bluesky | 获取用户近期原创帖子(过滤转发/回复);无需密钥 | 228 |
get_company_financials | SEC EDGAR | 按股票代码查询美国上市公司的年度营收、收益和资产(10-K 文件);无需密钥(大量使用时请设置 SEC_USER_AGENT) | 233 |
search_sec_filings | SEC EDGAR | 按关键词/公司全文搜索文件(10-K/10-Q/8-K);返回可传入 read_url/read_pdf 的文档 URL;无需密钥 | 300 |
| 全部 22 个工具定义 | 5,609 | ||
服务 instructions | 选择指南 + 链式调用示例 | 815 | |
| 每次请求总计 | ≈ 200K 上下文窗口的 3% | 6,424 |
使用 tiktoken o200k_base(GPT-4o / o 系列编码)离线测得 Token 数;Claude 的分词器结果相差约 ±10–15%。此表由脚本生成——运行 uv run python scripts/context_cost.py --write;若数据发生偏差,CI 会失败。
可选环境变量
所有工具无需任何密钥即可使用。设置以下变量可提高速率限制:
| 变量 | 效果 |
|---|---|
GITHUB_TOKEN | GitHub:60 → 5,000 次请求/小时 |
OPENALEX_EMAIL | OpenAlex 礼遇池(更高的限制) |
STACKEXCHANGE_KEY | Stack Overflow:更高的每日配额 |
SEC_USER_AGENT | 你的联系信息(例如电子邮件),供 SEC EDGAR 公平访问使用;否则将使用默认值 |
使用密钥的示例:
GITHUB_TOKEN=ghp_... [email protected] uvx openresearch-mcp
或在 Claude Desktop 配置中:
{
"mcpServers": {
"openresearch": {
"command": "uvx",
"args": ["openresearch-mcp", "--stdio"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"OPENALEX_EMAIL": "[email protected]"
}
}
}
}
安全性
openresearch-mcp 已使用 agent-security-skill 进行审查和加固。该技能由维护者开发,符合 OWASP 标准,用于审查 AI Agent 安全性。
这次审查直接促成了此服务的具体加固措施:防范 SSRF 的 URL 获取、对工具输出中的不可信内容进行框定、限制下载大小、固定 GitHub Actions 版本、限制依赖项的主版本号,以及针对安全敏感行为的回归测试。
请参阅 SECURITY.md,了解加固说明和当前安全状况。
健康检查
以 HTTP 模式运行时,可检查哪些来源可访问:
curl http://localhost:8000/health
{
"status": "ok",
"sources": {
"duckduckgo": { "status": "ok", "latency_ms": 173 },
"github": { "status": "ok", "latency_ms": 101 },
"hacker_news": { "status": "ok", "latency_ms": 308 },
"stackoverflow": { "status": "ok", "latency_ms": 247 },
"openalex": { "status": "ok", "latency_ms": 412 },
"worldbank": { "status": "ok", "latency_ms": 296 },
"frankfurter": { "status": "ok", "latency_ms": 184 },
"europepmc": { "status": "ok", "latency_ms": 356 },
"bluesky": { "status": "ok", "latency_ms": 152 },
"youtube": { "status": "ok", "latency_ms": 320 }
}
}
status 为 "ok"(正常)、"degraded"(部分来源不可用)或 "down"(所有来源均不可访问)。HTTP 状态码为 200 / 503。
/health 是对上游可访问性的轻量抽样检查,并非逐个工具的状态矩阵。
只有在调用相应工具时,才会检查受速率限制或策略限制的来源(GDELT、SEC、CoinGecko 等)。
已知限制
- Reddit / Zenodo:会拦截未经身份验证的抓取,因此未纳入
- YouTube:大规模使用时会受到速率限制;适合个人或低频使用
- Weather (Open-Meteo):数据采用 CC BY 4.0 许可,免费供非商业用途使用,每天最多约 10,000 次请求。商业用途需要 Open-Meteo 的付费方案或自托管——在商业产品中嵌入
get_weather_forecast,若未满足上述条件,则需履行相应的许可义务。必须注明 Open-Meteo。 - PDF 解析:
read_pdf会在进程内解析不可信的 PDF(同时限制下载大小和页数)。适合个人或低频使用;面向公众的高频部署应在设有 CPU / 内存限制的子进程中隔离解析。
路线图
- Reddit OAuth(基于浏览器,无需用户管理密钥)
- GitHub Device Flow 登录
- PubMed / NCBI(可选密钥)
- 支持 NewsAPI(可选密钥)
许可证
Apache 2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。