GeM MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GeM MCP Serverfind latest drone procurement bids from the Ministry of Defence"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 the live GeM portal by keyword, date, ministry, org |
| Crawl latest N pages of bid listings |
| Find all drone/UAV procurement opportunities |
| Query stored bids with filters (status, ministry, type, etc.) |
| Fetch extended info from a bid detail page |
| Look up a specific bid by number from the database |
| Database statistics (counts, top ministries, etc.) |
| Delete bids older than N days |
| Export all stored bids as JSON |
š MCP Resources (4 resources)
URI | Description |
| Monitored drone/UAV keywords list |
| Server configuration (non-sensitive) |
| Live database statistics |
| GeM portal URL structure and endpoints |
š¬ MCP Prompts (3 prompts)
Prompt | Description |
| Sector-specific procurement analysis workflow |
| Comprehensive drone/UAV opportunity report |
| Detailed analysis of a specific bid |
Related MCP server: mcp-india-tenders
Quick Start
1. Clone and Install
git clone <your-repo-url>
cd gem_mcp
pip install -r requirements.txt2. 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_mcp3. Run Locally
python server.pyServer starts at http://localhost:8000:
MCP endpoint:
http://localhost:8000/mcpHealth check:
http://localhost:8000/health
4. Connect a Client
Claude Code:
claude mcp add --transport http gem-server http://localhost:8000/mcpMCP Inspector:
npx -y @modelcontextprotocol/inspector
# Connect to: http://localhost:8000/mcpDeploy to Render
Option A: Blueprint (one-click)
Push this repo to GitHub
Go to Render Dashboard ā New ā Blueprint
Connect your repo ā Render reads
render.yamlautomaticallySet 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/mcpArchitecture
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 |
| Unique bid number (e.g. |
| Bid title / product description |
| Number of units required |
| Unit of measurement |
| Bid opening date |
| Bid closing deadline |
| Procuring ministry/department |
| Buying organization |
| BID / RA (Reverse Auction) / Service BID |
| open / closed / awarded |
| Full URL to bid detail page |
| 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_toRate 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 fileThis server cannot be deployed
Maintenance
Related MCP Connectors
Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
- GovTribeOAuthcom.govtribe
Search U.S. federal, state, and local government procurement data and intelligence.
Brazilian public procurement (PNCP): search, deadlines, tender markdown, alerts and watches.
SAM.gov federal contracts: search, details, AI bid analysis. 33k+ live opportunities.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceFederal procurement intelligence toolkit that searches SAM.gov contract opportunities, analyzes agency spending patterns, tracks competitor wins, and monitors small business set-aside programs (8a, HUBZone, SDVOSB, WOSB). 4 tools using SAM.gov and USASpending.gov data.3-
- AlicenseNot gradedqualityDmaintenanceEnables searching and analyzing Indian government tenders from multiple portals (CPPP, eProc Rajasthan, Defence) via natural language queries, returning OCDS-compliant data.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables search and analysis of European public procurement tenders, including EU above-threshold (TED) and below-threshold from 11 national sources, with hybrid search and filtering.MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and analyzing government tenders, contract awards, and pre-tender pipelines from 21 official sources, with tools for tender search, award intelligence, and detailed notice retrieval.MIT