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 分