Bengaluru AI Job Radar

Bengaluru AI Job Radar

Search for AI internship and early-career roles in Bengaluru using Tavily, save leads to a local JSON database, and render a Prefab dashboard UI.

Category
访问服务器

README

Bengaluru AI Job Radar

Bengaluru AI Job Radar is a Python FastMCP server that helps an AI agent search for AI internship and early-career AI roles in Bengaluru, save them to a local JSON job tracker, and render a Prefab dashboard UI.

Built with FastMCP 3.4.x, Prefab UI 0.20.x, Tavily for internet search, and JSON for local persistence.


Assignment Mapping

Assignment Requirement Implementation
Custom MCP server Python FastMCP server (server.py)
Internet-related function search_ai_jobs uses Tavily API
Local file CRUD job_tracker_db performs CRUD on local JSON file (data/bengaluru_ai_job_radar.json)
UI communication render_job_dashboard returns FastMCP Prefab UI components
Web app / dashboard Prefab-rendered dashboard inside MCP-compatible host
Prompt forcing all 3 tools Included in demo_prompt.md

Architecture

User prompt
  → Agent calls search_ai_jobs (Tavily internet search)
  → Agent saves results via job_tracker_db (JSON CRUD)
  → Agent reads records via job_tracker_db (JSON CRUD)
  → Agent calls render_job_dashboard (Prefab UI)
  → Prefab dashboard appears in MCP host

MCP Tools

Tool Purpose Category
search_ai_jobs Search Tavily for AI/ML/GenAI internships and junior roles in Bengaluru Internet
job_tracker_db Create, read, update, delete, and manage job leads in a local JSON database Local CRUD
render_job_dashboard Render a rich Prefab UI dashboard with summary metrics, job table, and charts UI

Setup (Windows)

cd C:\Cursor\EAGv3\S4
cd bengaluru-ai-job-radar

python -m venv .venv
.venv\Scripts\activate

pip install -e ".[dev]"

copy .env.example .env
# Edit .env and add your TAVILY_API_KEY

Setup (macOS / Linux)

cd /path/to/bengaluru-ai-job-radar

python3 -m venv .venv
source .venv/bin/activate

pip install -e ".[dev]"

cp .env.example .env
# Edit .env and add your TAVILY_API_KEY

Environment Variables

Create a .env file (or set system environment variables):

TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxxx
DATABASE_PATH=data/bengaluru_ai_job_radar.db
  • TAVILY_API_KEY (required): Get one free at tavily.com.
  • DATABASE_PATH (optional): Defaults to data/bengaluru_ai_job_radar.db relative to the project root.

Running the MCP Server

Direct Python execution

python -m bengaluru_ai_job_radar.server

Using FastMCP CLI

fastmcp run src/bengaluru_ai_job_radar/server.py

App preview (if supported)

fastmcp dev src/bengaluru_ai_job_radar/server.py

Connecting to an MCP Host

Add this to your MCP host configuration (Claude Desktop, Cursor, VS Code, etc.):

{
  "mcpServers": {
    "bengaluru-ai-job-radar": {
      "command": "python",
      "args": ["-m", "bengaluru_ai_job_radar.server"],
      "cwd": "C:\\Cursor\\EAGv3\\S4\\bengaluru-ai-job-radar",
      "env": {
        "TAVILY_API_KEY": "your_key_here",
        "DATABASE_PATH": "data/bengaluru_ai_job_radar.db"
      }
    }
  }
}

Note: Exact MCP host configuration may differ depending on Claude Desktop, Cursor, VS Code, ChatGPT MCP Apps, or another host.


Demo Prompt

Copy this prompt into your MCP-connected AI agent to exercise all 3 tools:

Use the Bengaluru AI Job Radar MCP server to complete this full workflow.

First, use the MCP internet search tool search_ai_jobs to find companies currently hiring AI Interns, ML Interns, GenAI Interns, LLM Engineer Interns, AI Implementation Engineer Interns, or Junior AI Engineers in Bengaluru.

Prioritize roles involving Python, LLMs, RAG, AI agents, embeddings, prompt engineering, fine-tuning, model training, NLP, or AI backend development.

Save at least 5 relevant job leads to the local JSON job tracker using the MCP CRUD tool job_tracker_db.

Then read the saved records back using job_tracker_db with the list_jobs operation.

Finally, render the saved results using the FastMCP Prefab UI tool render_job_dashboard.

Do not answer from memory. Do not skip any step. You must call all 3 tools:

  1. search_ai_jobs
  2. job_tracker_db
  3. render_job_dashboard

The full prompt is also available in demo_prompt.md.


Example Workflow

1. Search for roles

The agent calls search_ai_jobs with:

{
  "role_query": "AI Intern",
  "location": "Bengaluru",
  "max_results": 10
}

2. Save job leads

The agent calls job_tracker_db for each result:

{
  "operation": "create_job",
  "payload": {
    "company": "Sarvam AI",
    "role_title": "AI Intern",
    "role_type": "internship",
    "location": "Bengaluru",
    "skills": ["Python", "LLM", "RAG"],
    "fit_score": 85,
    "source_platform": "LinkedIn",
    "source_url": "https://linkedin.com/jobs/view/123"
  }
}

3. List saved jobs

{
  "operation": "list_jobs",
  "payload": {"min_fit_score": 50}
}

4. Update a role status

{
  "operation": "update_status",
  "payload": {
    "job_id": "...",
    "new_status": "applied",
    "event_note": "Applied via company careers page"
  }
}

5. Add a note

{
  "operation": "add_note",
  "payload": {
    "job_id": "...",
    "note": "Reach out to founder on LinkedIn"
  }
}

6. Render dashboard

The agent calls render_job_dashboard → a Prefab UI dashboard appears with summary cards, a job table, recent activity, and skill frequency.


Running Tests

pytest tests/ -v

Tests cover:

  • Fit score calculator — scoring rubric, caps, keyword boosts
  • Normalization — company names, slug IDs, role type inference, skill extraction
  • JSON store — full CRUD lifecycle, upsert, deduplication, dashboard aggregation

Project Structure

bengaluru-ai-job-radar/
  README.md
  pyproject.toml
  .env.example
  .gitignore
  demo_prompt.md

  src/
    bengaluru_ai_job_radar/
      __init__.py
      server.py          # FastMCP server entrypoint
      config.py           # Environment variable loading
      schemas.py          # Pydantic validation models

      tools/
        __init__.py
        search.py          # search_ai_jobs MCP tool
        database.py        # job_tracker_db MCP tool
        dashboard.py       # render_job_dashboard MCP tool (Prefab UI)

      services/
        __init__.py
        tavily_service.py  # Tavily API integration
        fit_score.py       # Deterministic fit-score calculator
        normalization.py   # Company/role normalization, skill extraction

      storage/
        __init__.py
        json_store.py      # JSON CRUD store (JobRadarStore)

  data/
    .gitkeep              # JSON DB created here at runtime

  tests/
    test_fit_score.py
    test_normalization.py
    test_json_store.py

Known Limitations

  • Tavily search result quality depends on public indexing of job boards.
  • Some job platforms may block direct scraping, so the tool relies on Tavily snippets and source links.
  • Compensation data may be unavailable for many listings — shown as "unknown".
  • Prefab UI APIs are actively evolving; dependency pinning to prefab-ui>=0.20.0,<1.0.0 is used.
  • Dashboard interactivity depends on the MCP host's support for FastMCP Apps / Prefab rendering.
  • Company name extraction from search results is best-effort; some may show as "unknown".
  • The fit-score algorithm is deterministic and rule-based — it does not use ML or LLM reasoning.

Dependencies

Package Purpose
fastmcp[apps] ≥3.4.0 MCP server framework + Prefab app support
prefab-ui ≥0.20.0 Prefab UI components (Card, DataTable, Badge, etc.)
pydantic ≥2.0.0 Request/response validation
python-dotenv ≥1.0.0 .env file loading
httpx ≥0.27.0 HTTP client (Tavily fallback)
tavily-python ≥0.5.0 Tavily search SDK
rich ≥13.0.0 Rich terminal output

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选