Skip to main content
Glama

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.server

Claude 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 tenderai

Tools

Document Intelligence

Tool

Description

parse_tender_rfp

Parse PDF/DOCX RFP and extract structured data

generate_compliance_matrix

Generate compliance matrix DOCX for an RFP

check_submission_deadline

Check deadline and calculate milestones

validate_document_completeness

Validate proposal has all required sections

Technical Proposals

Tool

Description

write_technical_section

Write a single proposal section with AI

build_full_technical_proposal

Generate complete technical proposal DOCX

generate_architecture_description

Generate formal architecture narrative

write_compliance_narrative

Write compliance response for a requirement

Financial Proposals

Tool

Description

ingest_vendor_quote

Parse vendor quote and extract line items

build_bom

Build Bill of Materials from vendor quotes

calculate_final_pricing

Calculate final pricing with margins

generate_financial_proposal

Generate financial proposal DOCX + BOM XLSX

Partner Coordination

Tool

Description

draft_partner_brief

Draft technical requirements brief for partner

create_nda_checklist

Generate NDA checklist for partner engagement

track_partner_deliverable

Track expected deliverable from partner

Tool

Description

index_past_proposal

Parse + AI-summarize a past proposal folder into searchable index

search_past_proposals

Search indexed proposals — keyword, semantic, or hybrid mode

list_indexed_proposals

List all indexed proposals with aggregate stats

Resources

URI Pattern

Description

proposals://past/{id}

Past proposal content

templates://{type}

Proposal templates

vendors://{name}

Vendor profiles

company://profile

Company profile

standards://{ref}

Standards references

Prompts

Prompt

Description

analyze_new_tender

Full tender intake and go/no-go analysis

write_executive_summary

Tailored executive summary generation

partner_suitability_check

Evaluate partner fit for a tender

full_proposal_workflow

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 output

Search 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_KEY in .env to 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 30

Architecture

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)
-
security - not tested
F
license - not found
-
quality - not tested

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