投标提案管理服务器

一个基于Model Context Protocol的生产就绪服务器,用于自动化政府和企业的投标工作流程,包括RFP解析、技术提案编写、财务提案汇编、合作伙伴协调和合规跟踪。

  • by dbugom
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dbugom/tenderai-mcp-server

使用说明

TenderAI——用于投标和提案管理的MCP服务器

生产准备就绪 模型上下文协议 自动化政府/企业招标工作流程的服务器:RFP解析、技术提案撰写、财务提案组装、合作伙伴协调和合规跟踪。

特性

  • 18个MCP工具 跨5个领域:文档智能、技术提案、财务提案、合作伙伴协调、过去提案索引和搜索
  • 混合搜索:FTS5全文关键字搜索+sqlite-vec向量相似性搜索,采用往复式秩融合(RRF)
  • 5资源URI方案 知识库访问:过去的提案、模板、供应商、公司简介、标准
  • 4工作流提示 用于端到端编排:投标分析、执行摘要、合作伙伴检查、完整的提案工作流程
  • AI驱动:使用Claude解析RFP,生成提案部分,并生成合规性说明
  • Voyage AI嵌入 (可选):对过去的提案进行语义搜索——即使没有精确的关键字匹配,也能找到类似的项目
  • 文档生成:专业的DOCX提案和XLSX BOM电子表格
  • SQLite数据库:跟踪征求建议书、提案、供应商、物料清单项目、合作伙伴、可交付成果和索引的过去提案
  • OAuth 2.0:内置OAuth支持claude.ai集成(动态客户端注册+PKCE,自动批准)

快速开始

地方发展(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代码配置

stdio(本地):

{
  "mcpServers": {
    "tenderai": {
      "command": "python",
      "args": ["-m", "app.server"],
      "cwd": "/path/to/tenders",
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-..."
      }
    }
  }
}

HTTP(远程--克劳德代码/桌面):

{
  "mcpServers": {
    "tenderai": {
      "type": "http",
      "url": "https://tender.yfi.ae/mcp",
      "headers": {
        "Authorization": "Bearer <MCP_API_KEY>"
      }
    }
  }
}

Claude.ai(OAuth 2.0):

集 OAUTH_ISSUER_URL=https://tender.yfi.ae 在 .env,然后添加 https://tender.yfi.ae/mcp 作为claude.ai上的集成,OAuth流程会自动完成。

生产部署

sudo ./setup.sh tender.yfi.ae
# Edit /opt/tenderai/.env — set ANTHROPIC_API_KEY
sudo systemctl start tenderai

工具

文档智能

工具 说明
parse_tender_rfp 解析PDF/DOCX RFP并提取结构化数据
generate_compliance_matrix 为RFP生成合规矩阵DOCX
check_submission_deadline 检查截止日期并计算里程碑
validate_document_completeness 验证提案是否包含所有必需的部分

技术建议书

工具 说明
write_technical_section 使用AI编写单个提案部分
build_full_technical_proposal 生成完整的技术方案DOCX
generate_architecture_description 生成正式的架构叙述
write_compliance_narrative 编写需求的合规性响应

财务建议书

工具 说明
ingest_vendor_quote 解析供应商报价并提取行项目
build_bom 根据供应商报价构建物料清单
calculate_final_pricing 用利润计算最终定价
generate_financial_proposal 生成财务建议书DOCX+BOM XLSX

合作伙伴协调

工具 说明
draft_partner_brief 为合作伙伴起草技术要求简报
create_nda_checklist 生成合作伙伴参与的NDA检查表
track_partner_deliverable 跟踪合作伙伴的预期交付成果

过去的提案索引和搜索

工具 说明
index_past_proposal Parse+AI将过去的提案文件夹汇总到可搜索的索引中
search_past_proposals 搜索索引提案——关键字、语义或混合模式
list_indexed_proposals 列出所有带有汇总统计数据的索引提案

资源

URI模式 描述
proposals://past/{id} 以往提案内容
templates://{type} 提案模板
vendors://{name} 供应商简介
company://profile 公司简介
standards://{ref} 标准参考

提示

提示 描述
analyze_new_tender 全面招标和通过/不通过分析
write_executive_summary 量身定制的执行摘要生成
partner_suitability_check 评估合作伙伴是否适合投标
full_proposal_workflow 端到端提案编排指南

知识库

填充这些目录以改进AI生成的内容:

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

搜索架构

可以对过去的提案进行索引,以便快速检索:

Upload files → index_past_proposal → AI extracts metadata → stored in SQLite
                                                           ├── FTS5 (keyword search, always on)
                                                           └── sqlite-vec (vector search, optional)
  • FTS5:带波特词干的BM25关键字排名——亚毫秒搜索
  • 矢量:存储在sqlite-vec中的Voyage AI嵌入(512 dim)——语义相似性
  • 混合:两者通过互易秩融合(RRF)结合以获得最佳结果
  • 集 VOYAGE_API_KEY 在 .env 启用矢量搜索(Voyage AI提供2亿个免费令牌)

备份

# Manual backup
./backup.sh /backups/tenderai 30

# Cron (daily at 2 AM)
0 2 * * * /opt/tenderai/backup.sh /backups/tenderai 30

建筑

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)