GeM MCP Server
Enables users to search, track, and analyze procurement data from India's Government e-Marketplace (GeM) for live and stored bid listings. It provides specialized tools for monitoring drone-related procurement opportunities and generating detailed bid analysis reports.
README
GeM MCP Server ā Government e-Marketplace Intelligence
A fully-featured, Claude-compatible Model Context Protocol (MCP) server for interacting with India's Government e-Marketplace (GeM) bid data.
Deploy on Render and connect from Claude Code, Claude Web, or any MCP-compatible agent.
Features
š§ MCP Tools (9 tools)
| Tool | Description |
|---|---|
search_bids |
Search the live GeM portal by keyword, date, ministry, org |
get_latest_bids |
Crawl latest N pages of bid listings |
search_drone_bids |
Find all drone/UAV procurement opportunities |
get_stored_bids |
Query stored bids with filters (status, ministry, type, etc.) |
get_bid_detail |
Fetch extended info from a bid detail page |
lookup_bid |
Look up a specific bid by number from the database |
get_bid_stats |
Database statistics (counts, top ministries, etc.) |
cleanup_old_bids |
Delete bids older than N days |
export_bids |
Export all stored bids as JSON |
š MCP Resources (4 resources)
| URI | Description |
|---|---|
gem://keywords |
Monitored drone/UAV keywords list |
gem://config |
Server configuration (non-sensitive) |
gem://stats |
Live database statistics |
gem://urls |
GeM portal URL structure and endpoints |
š¬ MCP Prompts (3 prompts)
| Prompt | Description |
|---|---|
analyze_procurement |
Sector-specific procurement analysis workflow |
drone_opportunity_report |
Comprehensive drone/UAV opportunity report |
bid_deep_dive |
Detailed analysis of a specific bid |
Quick Start
1. Clone and Install
git clone <your-repo-url>
cd gem_mcp
pip install -r requirements.txt
2. Configure MongoDB
Copy .env.example to .env and set your MongoDB connection string:
cp .env.example .env
# MongoDB Atlas free tier
MONGODB_URI=mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority
MONGODB_DB=gem_mcp
3. Run Locally
python server.py
Server starts at http://localhost:8000:
- MCP endpoint:
http://localhost:8000/mcp - Health check:
http://localhost:8000/health
4. Connect a Client
Claude Code:
claude mcp add --transport http gem-server http://localhost:8000/mcp
MCP Inspector:
npx -y @modelcontextprotocol/inspector
# Connect to: http://localhost:8000/mcp
Deploy to Render
Option A: Blueprint (one-click)
- Push this repo to GitHub
- Go to Render Dashboard ā New ā Blueprint
- Connect your repo ā Render reads
render.yamlautomatically - Set the
MONGODB_URIenvironment variable in the Render dashboard
Option B: Manual Docker Deploy
- New ā Web Service ā Docker
- Point to your repo
- Set environment variables:
MONGODB_URI= your Atlas connection stringMONGODB_DB=gem_mcp
- Health check path:
/health
After Deploy
# Add to Claude Code
claude mcp add --transport http gem-server https://your-app.onrender.com/mcp
Architecture
Client (Claude Code / Claude Web / Any MCP Agent)
ā
ā MCP Protocol (Streamable HTTP)
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā server.py (FastMCP + Starlette)ā ā Render Web Service
ā POST /mcp ā MCP endpoint ā
ā GET /health ā health check ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā gem_scraper.py ā ā Scraping + parsing logic
ā (requests + BeautifulSoup) ā
āāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāā
ā ā
ā¼ ā¼
MongoDB Atlas bidplus.gem.gov.in
(persistent (live scraping)
storage)
Data Fields
| Field | Description |
|---|---|
bid_no |
Unique bid number (e.g. GEM/2024/B/123456) |
title |
Bid title / product description |
quantity |
Number of units required |
uom |
Unit of measurement |
start_date |
Bid opening date |
end_date |
Bid closing deadline |
ministry |
Procuring ministry/department |
buyer_org |
Buying organization |
bid_type |
BID / RA (Reverse Auction) / Service BID |
status |
open / closed / awarded |
detail_url |
Full URL to bid detail page |
is_relevant |
Auto-tagged if matches drone/UAV keywords |
GeM Portal URLs (Reverse-Engineered)
BASE: https://bidplus.gem.gov.in
Listings:
/all-bids ā All bids (paginated)
/bidlists ā Ongoing bids
/bidresultlists ā Completed bids
/advance-search ā Search (POST)
Detail:
/bidding/bid/getBidResultView/{id}
Search POST params:
search_bid, ministry, org_name, bid_no, date_from, date_to
Rate Limiting
- Default: 1.5s between requests (configurable via
REQUEST_DELAY_SECenv var) - GeM is a public portal ā public bid data is freely accessible
- Don't run concurrent crawls to avoid IP blocking
Files
gem_mcp/
āāā server.py ā MCP server (main entry point)
āāā gem_scraper.py ā Scraping logic + MongoDB operations
āāā requirements.txt ā Python dependencies
āāā Dockerfile ā Container for Render
āāā render.yaml ā Render blueprint
āāā .env.example ā Environment variable template
āāā .gitignore ā Git ignore rules
āāā README.md ā This file
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.