opportunity-mcp
Enables AI assistants to search and filter youth opportunities such as scholarships, fellowships, internships, conferences, and exchange programs, aggregated from multiple live sources.
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.
<!-- mcp-name: io.github.revolutionarybukhari/opportunity-mcp -->
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
| Channel | Identifier | Status |
|---|---|---|
| PyPI | opportunity-mcp |
✅ live |
| MCP Registry | io.github.revolutionarybukhari/opportunity-mcp |
✅ published |
| Smithery | sayedhusnainhader/opportunity-mcp |
✅ published |
| GitHub | revolutionarybukhari/opportunity-mcp |
source of truth |
| GitHub Releases | index-N snapshots of the SQLite DB, refreshed every 6h |
auto-published by CI |
Installation
Claude Desktop
pip install opportunity-mcp
opportunity-mcp-refresh # build the local index (one-off, ~30 seconds)
Add the following to claude_desktop_config.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:
{
"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
git clone https://github.com/revolutionarybukhari/opportunity-mcp
cd opportunity-mcp
uv sync # or: pip install -e ".[dev]"
uv run opportunity-mcp-refresh
uv run opportunity-mcp # speaks MCP over stdio
Tools
The server exposes six tools. Each accepts JSON arguments and returns Pydantic-typed results.
| Tool | Signature | Description |
|---|---|---|
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.
| Source | Mechanism | Status |
|---|---|---|
| Opportunities Corners | RSS | ✅ live |
| Opportunities for Youth | RSS | ✅ live |
| Opportunity Desk | RSS | ✅ live |
| Scholarships Corner | RSS | ✅ live |
| Opportunities Circle | RSS | ✅ live |
| Opportunities for Africans | RSS | ✅ live |
| Scholars4Dev | RSS | ✅ adapter live (feed currently empty upstream) |
| Youth Opportunities | HTML | planned |
| After School Africa | HTML | planned |
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:
- Adapters know how to read one site and produce raw
Opportunityobjects (Pydantic-validated). - 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-Agentincludes 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.txtis 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.
git clone https://github.com/revolutionarybukhari/opportunity-mcp
cd opportunity-mcp
uv sync
uv run pytest
uv run ruff check .
License
MIT © Opportunity MCP Contributors.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。