Opportunity MCP

io.github.revolutionarybukhari由 GitHub 账号 revolutionarybukhari 发布v0.1.1更新于 Oct 24, 2026

Search youth opportunities (scholarships, fellowships, internships) from any AI assistant.

概览

AI 生成的概览

一个本地 MCP 服务器,让 AI 助手检索已建立索引的青年机会目录,如奖学金、奖学金项目和实习。

可以做什么
按关键词检索已索引的机会,可按类型、是否资助和截止日期筛选,并按 ID 查看单条记录的完整详情。列出所有来源中最新发布的机会,或列出在指定天数内截止的机会。查看已索引的来源及其条目数量和最近刷新时间。按需重新抓取来源,可限定为单个站点。
适用场景
适合学生或顾问通过对话查找奖学金、研究金、实习、会议或交换项目,而不必浏览多个聚合网站,并跟踪即将到来的截止日期。
运行要求
以 PyPI 包形式通过 stdio 在本地运行,需要 Python 和 pip(或用 uvx 免安装启动)。首次使用前需运行一次索引构建命令。定期刷新来源站点需要网络访问。
安装前请注意
项目处于 alpha 阶段,工具接口和来源列表可能变化,建议锁定次要版本。刷新工具会从第三方机会网站抓取内容,这是唯一离开本机的流量。索引内容为公开的第三方信息,依赖截止日期前应核对原始文章。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Opportunity MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Opportunity MCP

A Model Context Protocol server that lets any AI assistant search youth opportunities — scholarships, fellowships, internships, conferences, and exchange programs — aggregated live from leading opportunity-discovery sites.

[PyPI version] [Python] [License: MIT] [Tests] [Refresh cron] [MCP Registry]

Status: alpha (v0.1.x). Schema, tool surface, and source list may change as adapters mature. Pin to a minor version in production.


Overview

Students who depend on third-party scholarship-aggregator sites typically open ten or more tabs, sift through dozens of irrelevant posts, and copy deadlines into a personal spreadsheet — only to miss the application window because no aggregator offers reliable deadline tracking. Opportunity MCP collapses that workflow into a single conversational query.

You: Find fully-funded master's scholarships in Europe with deadlines in the next 60 days, eligible for Pakistani citizens.

Claude: (Returns a deduplicated, structured list pulled live from the indexed sources, sorted by deadline, each linking back to the original article.)

The server runs locally over stdio, ships an SQLite + FTS5 index that refreshes every six hours via CI, and is distributed through PyPI, the official MCP Registry, and Smithery.


Distribution channels

ChannelIdentifierStatus
PyPIopportunity-mcp✅ live
MCP Registryio.github.revolutionarybukhari/opportunity-mcp✅ published
Smitherysayedhusnainhader/opportunity-mcp✅ published
GitHubrevolutionarybukhari/opportunity-mcpsource of truth
GitHub Releasesindex-N snapshots of the SQLite DB, refreshed every 6hauto-published by CI

Installation

Claude Desktop

bash
pip install opportunity-mcpopportunity-mcp-refresh           # build the local index (one-off, ~30 seconds)

Add the following to claude_desktop_config.json:

json
{  "mcpServers": {    "opportunities": {      "command": "opportunity-mcp"    }  }}

Restart Claude Desktop. The six tools below become available to the model.

Cursor, Windsurf, Continue, and other MCP clients

Most clients use the same mcpServers shape. Point the command at opportunity-mcp (after pip install) or use uvx for zero-install:

json
{  "mcpServers": {    "opportunities": {      "command": "uvx",      "args": ["opportunity-mcp"]    }  }}

Smithery (one-click install)

https://smithery.ai/server/sayedhusnainhader/opportunity-mcp — Smithery handles the install command for you.

From source

bash
git clone https://github.com/revolutionarybukhari/opportunity-mcpcd opportunity-mcpuv sync                           # or: pip install -e ".[dev]"uv run opportunity-mcp-refreshuv run opportunity-mcp            # speaks MCP over stdio

Tools

The server exposes six tools. Each accepts JSON arguments and returns Pydantic-typed results.

ToolSignatureDescription
search_opportunities(query, type?, funded_only?, deadline_before?, limit=20)Full-text search across all indexed opportunities with optional filters.
get_opportunity(id)Retrieve full details for a single opportunity by its ID.
list_latest(type?, limit=20)Newest opportunities across all sources, sorted by post date.
list_upcoming_deadlines(within_days=30, type?)Opportunities closing within N days, sorted by deadline.
list_sources()List indexed sources, item counts, and last-refresh timestamps.
refresh_index(source?)Re-fetch sources on demand. Optional source argument limits the refresh to one site.

type is one of scholarship, fellowship, internship, conference, exchange, competition, grant, award, or other.


Indexed sources

Verified live against each site's RSS feed.

SourceMechanismStatus
Opportunities CornersRSS✅ live
Opportunities for YouthRSS✅ live
Opportunity DeskRSS✅ live
Scholarships CornerRSS✅ live
Opportunities CircleRSS✅ live
Opportunities for AfricansRSS✅ live
Scholars4DevRSS✅ adapter live (feed currently empty upstream)
Youth OpportunitiesHTMLplanned
After School AfricaHTMLplanned

Per-source robots.txt compliance, ToS notes, and CI quirks are documented in docs/SOURCES.md.


Example prompts

Find fully-funded master's scholarships in Europe with deadlines in the next 60 days.
What conferences are happening in Africa in the next three months?
List the ten newest internships indexed today.
Show me everything closing in the next seven days that an undergraduate could apply to.
Get full details for opportunity 7733b95a81e3239d.

Architecture

AI client  ──MCP──▶  FastMCP server  ──▶  SQLite + FTS5  ◀──  refresh job  ──▶  source adapters  ──▶  opportunity sites

Two clean separations of concern:

  1. Adapters know how to read one site and produce raw Opportunity objects (Pydantic-validated).
  2. The query engine knows nothing about sites — it searches a normalized index.

Adding a new source is typically a fifty-line pull request. See docs/ADAPTER_GUIDE.md. Full architecture rationale is in docs/ARCHITECTURE.md.


Privacy & ethics

  • No user tracking. All queries are processed locally; nothing leaves the user's machine except the periodic source-site refresh.
  • All indexed data is public. Summaries are capped at 500 characters and every record links back to the originating article.
  • Polite identification. The HTTP User-Agent includes the project URL so site owners can reach us directly.
  • Conservative refresh cadence. Sources are polled at most every six hours, via CI — never on user query.
  • Source removals on request are honored within 24 hours, with no negotiation.
  • robots.txt is respected by every adapter prior to fetching.

Roadmap

  • Phase 2 — country-, level-, and language-aware extraction (currently delegated to the AI client).
  • Phase 3 — first HTML adapter (Youth Opportunities), broader Tier-2/Tier-4 source coverage.
  • Phase 4 — hosted Streamable-HTTP endpoint for clients that prefer remote MCP servers.
  • Phase 5 — optional weekly digest by saved profile.

Open issues with the add a source label are good first contributions.


Contributing

Pull requests are welcome. The fastest way to help is to add a source we do not yet index — read docs/ADAPTER_GUIDE.md and open a PR. See docs/CONTRIBUTING.md for development setup, testing conventions, and the code-of-conduct expectations.

bash
git clone https://github.com/revolutionarybukhari/opportunity-mcpcd opportunity-mcpuv syncuv run pytestuv run ruff check .

License

MIT © Opportunity MCP Contributors.

来源:README.md,提交 41d1b3e

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分