TenderAI
Click on "Install 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., "@TenderAIAnalyze the latest RFP and generate a compliance matrix for the technical requirements."
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.
TenderAI — MCP Server for Tender & Proposal Management
A production-ready Model Context Protocol server that automates government/enterprise tender workflows: RFP parsing, technical proposal writing, financial proposal assembly, partner coordination, and compliance tracking.
Features
18 MCP Tools across 5 domains: Document Intelligence, Technical Proposals, Financial Proposals, Partner Coordination, Past Proposal Indexing & Search
Hybrid Search: FTS5 full-text keyword search + sqlite-vec vector similarity search with Reciprocal Rank Fusion (RRF)
5 Resource URI schemes for knowledge base access: past proposals, templates, vendors, company profile, standards
4 Workflow Prompts for end-to-end orchestration: tender analysis, executive summaries, partner checks, full proposal workflow
AI-Powered: Uses Claude to parse RFPs, generate proposal sections, and produce compliance narratives
Voyage AI Embeddings (optional): Semantic search over past proposals — finds similar projects even without exact keyword matches
Document Generation: Professional DOCX proposals and XLSX BOM spreadsheets
SQLite Database: Tracks RFPs, proposals, vendors, BOM items, partners, deliverables, and indexed past proposals
OAuth 2.0: Built-in OAuth support for claude.ai integration (Dynamic Client Registration + PKCE, auto-approve)
Quick Start
Local Development (stdio)
# Clone and setup
cd tenders
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# Configure
cp .env.example .env
# Edit .env — set ANTHROPIC_API_KEY
# Run
python -m app.serverClaude Desktop / Claude Code Configuration
stdio (local):
{
"mcpServers": {
"tenderai": {
"command": "python",
"args": ["-m", "app.server"],
"cwd": "/path/to/tenders",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}HTTP (remote — Claude Code/Desktop):
{
"mcpServers": {
"tenderai": {
"type": "http",
"url": "https://tender.yfi.ae/mcp",
"headers": {
"Authorization": "Bearer <MCP_API_KEY>"
}
}
}
}Claude.ai (OAuth 2.0):
Set OAUTH_ISSUER_URL=https://tender.yfi.ae in .env, then add https://tender.yfi.ae/mcp as an integration on claude.ai. OAuth flow completes automatically.
Production Deployment
sudo ./setup.sh tender.yfi.ae
# Edit /opt/tenderai/.env — set ANTHROPIC_API_KEY
sudo systemctl start tenderaiTools
Document Intelligence
Tool | Description |
| Parse PDF/DOCX RFP and extract structured data |
| Generate compliance matrix DOCX for an RFP |
| Check deadline and calculate milestones |
| Validate proposal has all required sections |
Technical Proposals
Tool | Description |
| Write a single proposal section with AI |
| Generate complete technical proposal DOCX |
| Generate formal architecture narrative |
| Write compliance response for a requirement |
Financial Proposals
Tool | Description |
| Parse vendor quote and extract line items |
| Build Bill of Materials from vendor quotes |
| Calculate final pricing with margins |
| Generate financial proposal DOCX + BOM XLSX |
Partner Coordination
Tool | Description |
| Draft technical requirements brief for partner |
| Generate NDA checklist for partner engagement |
| Track expected deliverable from partner |
Past Proposal Indexing & Search
Tool | Description |
| Parse + AI-summarize a past proposal folder into searchable index |
| Search indexed proposals — keyword, semantic, or hybrid mode |
| List all indexed proposals with aggregate stats |
Resources
URI Pattern | Description |
| Past proposal content |
| Proposal templates |
| Vendor profiles |
| Company profile |
| Standards references |
Prompts
Prompt | Description |
| Full tender intake and go/no-go analysis |
| Tailored executive summary generation |
| Evaluate partner fit for a tender |
| End-to-end proposal orchestration guide |
Knowledge Base
Populate these directories to improve AI-generated content:
data/
├── knowledge_base/
│ ├── company_profile/
│ │ └── profile.md # Company description, capabilities, differentiators
│ ├── templates/
│ │ ├── executive_summary.md
│ │ ├── technical_approach.md
│ │ └── ... # Section-specific templates
│ └── standards/
│ ├── iso27001.md
│ └── ... # Standards reference docs
├── past_proposals/
│ ├── tra_network_2024/
│ │ ├── Technical_Proposal.pdf # Your original submission files
│ │ ├── Cost_Sheet.xlsx # Financial data for pricing reference
│ │ └── _summary.md # Auto-generated by index_past_proposal
│ └── omantel_5g_2024/
│ └── ...
├── rfp_documents/ # Auto-populated by parse_tender_rfp
├── vendor_quotes/ # Vendor quote files
└── generated_proposals/ # Auto-populated outputSearch Architecture
Past proposals can be indexed for fast retrieval:
Upload files → index_past_proposal → AI extracts metadata → stored in SQLite
├── FTS5 (keyword search, always on)
└── sqlite-vec (vector search, optional)FTS5: BM25 keyword ranking with porter stemming — sub-millisecond search
Vector: Voyage AI embeddings (512-dim) stored in sqlite-vec — semantic similarity
Hybrid: Both combined via Reciprocal Rank Fusion (RRF) for best results
Set
VOYAGE_API_KEYin.envto enable vector search (200M free tokens from Voyage AI)
Backup
# Manual backup
./backup.sh /backups/tenderai 30
# Cron (daily at 2 AM)
0 2 * * * /opt/tenderai/backup.sh /backups/tenderai 30Architecture
app/
├── server.py # Entry point — FastMCP init and wiring
├── config.py # Settings from .env
├── tools/
│ ├── document.py # 4 document intelligence tools
│ ├── technical.py # 4 technical proposal tools
│ ├── financial.py # 4 financial proposal tools
│ ├── partners.py # 3 partner coordination tools
│ └── indexing.py # 3 past proposal indexing & search tools
├── resources/
│ └── knowledge.py # 5 resource URI handlers
├── prompts/
│ └── workflows.py # 4 workflow prompts
├── db/
│ ├── schema.sql # SQLite schema (10 tables + FTS5 + triggers)
│ ├── database.py # Async database layer + sqlite-vec + OAuth CRUD
│ └── models.py # Pydantic models
├── services/
│ ├── llm.py # Anthropic SDK wrapper (15 prompt templates)
│ ├── parser.py # PDF/DOCX/XLSX parser
│ ├── embeddings.py # Voyage AI embedding service (optional)
│ └── docwriter.py # DOCX/XLSX generator
└── middleware/
├── auth.py # ASGI Bearer token auth (Claude Code/Desktop)
└── oauth.py # OAuth 2.0 provider (claude.ai)This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dbugom/tenderai-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server