mcpField
O
OpenResearch MCP

OpenResearch MCP

本地服务
github.com/olanokhin搜索与检索1116 周前更新

关于 OpenResearch MCP

OpenResearch MCP 是面向需要公共信息的 Agent 的免密钥研究服务,覆盖网络、学术、金融、新闻和社交来源。它提供 22 种工具,并默认采用回环绑定和 SSRF 过滤等安全措施。

主要功能

  1. 01提供 22 种跨领域研究工具
  2. 02搜索网页、论文、新闻和代码仓库
  3. 03读取网页、PDF 和 YouTube 字幕
  4. 04获取金融、宏观、天气及 SEC 数据
  5. 05搜索 Bluesky 用户资料和帖子
  6. 06默认回环绑定并过滤 SSRF 请求

适用场景

  1. 01结合 SEC 文件、新闻和代码仓库研究公司
  2. 02通过论文和 PDF 深入追踪学术主题
  3. 03综合国家指标、汇率和历史天气
  4. 04查找生物医学文献并阅读开放获取论文

MCP 相关

通过 stdio 或 Streamable HTTP 向 MCP 客户端提供 22 种研究工具。所有工具无需 API 密钥即可使用,部分速率限制可通过可选环境变量提高。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"olanokhin-openresearch": {
"command": "uvx",
"args": [
"openresearch-mcp"
],
"env": {
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"OPENALEX_EMAIL": "<OPENALEX_EMAIL>",
"STACKEXCHANGE_KEY": "<STACKEXCHANGE_KEY>",
"SEC_USER_AGENT": "<SEC_USER_AGENT>"
}
}
}
}
启动命令uvx openresearch-mcp
需要配置的环境变量
GITHUB_TOKEN密钥GitHub token — increases rate limit from 60 to 5,000 req/hr
OPENALEX_EMAILYour email for the OpenAlex polite pool (higher rate limits)
STACKEXCHANGE_KEY密钥Stack Exchange API key for higher daily quota on Stack Overflow searches
SEC_USER_AGENTYour contact email/string for SEC EDGAR fair-access; a default is used otherwise

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiopenresearch-mcp0.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

openresearch-mcp

PyPI version Python versions License CI MCP Registry

面向跨领域 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_searchDuckDuckGo可选 site= 参数,用于限定搜索域名(例如 arxiv.org)251
read_url任意网页去除导航栏和脚本,返回纯净文本164
read_pdf任意 PDF 或 arXiv可互换接受 arXiv 的 /abs/、/pdf/、/html/ URL181
read_repoGitHub 公开仓库README + 文件树 + 重要文档;设置 GITHUB_TOKEN 可达到每小时 5k 次请求211
search_hacker_news通过 Algolia 访问 HN搜索文章,并显示积分和评论数206
search_stackoverflowStack Overflow API设置 STACKEXCHANGE_KEY 可提高配额212
search_openalexOpenAlex超过 2.5 亿篇作品,无速率限制;设置 OPENALEX_EMAIL 可使用礼貌访问池231
get_youtube_transcriptYouTube 字幕接受完整 URL、youtu.be/ 链接、短视频链接或纯视频 ID194
get_current_date服务时钟当前 UTC 日期/时间——为相对时间请求(“过去 30 天”)提供基准,而非进行猜测240
get_weather_forecastOpen-Meteo按地点名称查询当前天气状况和最长 16 天的预报;无需密钥。请参阅下方的许可说明229
get_historical_weatherOpen-Meteo按地点和日期范围查询自 1940 年以来的气候序列,并按月/年汇总;无需密钥。请参阅下方的许可说明328
search_indicatorsWorld Bank按关键词(“GDP”“migration”)查找指标代码;将结果传入 get_country_indicator240
get_country_indicatorWorld Bank按国家和代码查询年度社会经济序列(GDP、人口、通胀、移民、预期寿命等);无需密钥338
get_fx_rateFrankfurter(ECB)货币汇率:最新汇率、历史日期汇率或日期范围序列(按周/月降采样);无需密钥367
get_crypto_priceCoinGecko按币种 ID/符号查询相对于报价货币的加密货币价格(当前价格或每日历史数据);无需密钥284
search_newsGDELT查询主题相关的全球最新新闻(多语言);返回可传入 read_url 的文章;无需密钥(速率限制约为每 5 秒 1 次)481
search_europepmcEurope PMC查询生物医学/生命科学论文;标记开放获取论文,并提供可传入 read_pdf 的 PDF URL;无需密钥264
search_bluesky_usersBluesky按姓名、用户名或简介查找研究人员/开发者个人资料;无需密钥227
get_bluesky_profileBluesky根据用户名获取完整简介以及关注者/帖子数;无需密钥200
read_bluesky_feedBluesky获取用户近期原创帖子(过滤转发/回复);无需密钥228
get_company_financialsSEC EDGAR按股票代码查询美国上市公司的年度营收、收益和资产(10-K 文件);无需密钥(大量使用时请设置 SEC_USER_AGENT)233
search_sec_filingsSEC 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_TOKENGitHub:60 → 5,000 次请求/小时
OPENALEX_EMAILOpenAlex 礼遇池(更高的限制)
STACKEXCHANGE_KEYStack 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。