AI-powered procurement engine for ADK-Rust Enterprise agents. Provides 37 MCP tools covering the full source-to-pay lifecycle — supplier management, purchase orders, RFQs, contracts, goods receipt, 3-way matching, budgets, diversity tracking, and 10 unique intelligence tools for risk scoring, price benchmarking, carbon footprint, demand forecasts
Procurement MCP Server
AI-powered procurement engine for ADK-Rust Enterprise agents. Provides 37 MCP tools covering the full source-to-pay lifecycle — supplier management, purchase orders, RFQs, contracts, goods receipt, 3-way matching, budgets, diversity tracking, and 10 unique intelligence tools for risk scoring, price benchmarking, carbon footprint, demand forecasting, and AI-powered negotiation briefs. Feature parity with SAP Ariba and Coupa, plus capabilities neither offers.
Architecture
Key Principles
- Source-to-pay lifecycle — from supplier onboarding through payment reconciliation.
- AI-powered intelligence — 10 tools that no competitor offers: risk scoring, benchmarking, ESG, forecasting.
- 3-way matching — automatic PO vs receipt vs invoice reconciliation with tolerance.
- ESG built-in — carbon footprint estimation and supplier diversity tracking.
- Governance — multi-level approvals, budget checks, maverick spend detection.
- Zero configuration — starts immediately with no external dependencies.
Tools (37)
Supplier Management (4)
| Tool | Description |
|------|-------------|
| supplier_create | Register supplier (name, category, country, terms, contact) |
| supplier_list | List all suppliers |
| supplier_get | Get supplier details |
| supplier_rate | Rate supplier (0-5 stars) |
Purchase Orders (6)
| Tool | Description |
|------|-------------|
| po_create | Create PO with line items |
| po_list | List all POs |
| po_get | Get PO details |
| po_approve | Approve PO (governance gate) |
| po_send | Send to supplier |
| po_cancel | Cancel PO |
RFQ — Request for Quotation (4)
| Tool | Description |
|------|-------------|
| rfq_create | Create RFQ, send to multiple suppliers |
| rfq_respond | Submit supplier quote (prices, lead time) |
| rfq_compare | Side-by-side comparison of all responses |
| rfq_award | Award to winning supplier |
Contracts (3)
| Tool | Description |
|------|-------------|
| contract_create | Create contract (fixed price, T&M, blanket, framework) |
| contract_list | List contracts (flags expiring within 90 days) |
| contract_get | Get contract details |
Goods Receipt & Matching (2)
| Tool | Description |
|------|-------------|
| goods_receive | Receive goods (partial/full, rejections) |
| three_way_match | PO vs receipt vs invoice — flags discrepancies |
Budget & Compliance (5)
| Tool | Description |
|------|-------------|
| budget_set | Set department budget by category/period |
| budget_check | Verify PO fits budget (approve/reject recommendation) |
| diversity_set | Set supplier diversity certifications |
| diversity_report | Diverse spend %, certification breakdown |
| approval_escalate | Route to Manager/Director/CFO by amount |
Catalogs (2)
| Tool | Description |
|------|-------------|
| catalog_add | Add items to supplier punch-out catalog |
| catalog_search | Search across all supplier catalogs |
Analytics (1)
| Tool | Description |
|------|-------------|
| spend_analysis | Total spend by supplier/category |
🏆 Intelligence — Unique Selling Proposition (10)
| Tool | Description | Why unique |
|------|-------------|-----------|
| supplier_risk_score | Multi-factor risk score (0-100): country, performance, contracts, rating | Real-time risk assessment |
| price_benchmark | Compare quote vs historical avg/min/max — verdict + recommendation | Automatic price intelligence |
| carbon_footprint | CO2 kg per shipment (weight × distance × transport mode) | ESG compliance built-in |
| supplier_recommend | AI-ranked supplier suggestions by score | Eliminates manual searching |
| contract_clause_check | Flag risky clauses (auto-renewal, liability, IP, non-compete) | Legal risk automation |
| demand_forecast | Predict future spend from historical patterns | Proactive procurement |
| savings_opportunity | Find same SKU at different prices across suppliers | Automatic cost reduction |
| supplier_scorecard | A/B/C/D grade (delivery %, quality %, rating) | Data-driven management |
| maverick_spend_detect | Purchases outside contracted suppliers | Compliance automation |
| negotiation_brief | Leverage analysis, BATNA, talking points, strategy | AI negotiation prep |
Installation
cargo install mcp-procurement
Client Configuration
{
"mcpServers": {
"procurement": { "command": "mcp-procurement" }
}
}
Quick Start
1. Register suppliers
{"name": "supplier_create", "arguments": {"name": "Acme Steel Ltd", "category": "raw_materials", "country": "KE", "payment_terms": "net30"}}
{"name": "supplier_create", "arguments": {"name": "Global Parts Inc", "category": "raw_materials", "country": "CN", "payment_terms": "net60"}}
2. Run an RFQ
{"name": "rfq_create", "arguments": {"title": "Steel Rods Q3", "items": [{"description": "Steel Rod 12mm", "quantity": 5000, "unit": "kg"}], "supplier_ids": ["sup_abc", "sup_def"], "deadline": "2026-07-01", "created_by": "james"}}
{"name": "rfq_respond", "arguments": {"rfq_id": "rfq_xyz", "supplier_id": "sup_abc", "unit_prices": [2.50], "lead_time_days": 14}}
{"name": "rfq_respond", "arguments": {"rfq_id": "rfq_xyz", "supplier_id": "sup_def", "unit_prices": [2.20], "lead_time_days": 21}}
{"name": "rfq_compare", "arguments": {"po_id": "rfq_xyz"}}
3. Create and approve PO
{"name": "po_create", "arguments": {"supplier_id": "sup_def", "lines": [{"sku": "STEEL-12MM", "description": "Steel Rod 12mm", "quantity": 5000, "unit_price": 2.20}], "created_by": "james"}}
{"name": "budget_check", "arguments": {"department": "manufacturing", "amount": 11000}}
{"name": "po_approve", "arguments": {"po_id": "po_abc", "approved_by": "director_kim"}}
4. Receive and match
{"name": "goods_receive", "arguments": {"po_id": "po_abc", "lines": [{"sku": "STEEL-12MM", "quantity_received": 4950, "quantity_rejected": 50, "rejection_reason": "surface defects"}], "received_by": "warehouse_john"}}
{"name": "three_way_match", "arguments": {"po_id": "po_abc", "invoice_number": "INV-2026-0891", "invoice_amount": 10890}}
5. Intelligence tools
{"name": "supplier_risk_score", "arguments": {"supplier_id": "sup_def"}}
{"name": "price_benchmark", "arguments": {"sku": "STEEL-12MM", "quoted_price": 2.50}}
{"name": "carbon_footprint", "arguments": {"supplier_id": "sup_def", "weight_kg": 5000, "distance_km": 8500, "transport_mode": "sea"}}
{"name": "negotiation_brief", "arguments": {"supplier_id": "sup_def", "items": ["Steel Rod 12mm"], "target_discount_pct": 15}}
Procurement Flow
supplier_create → rfq_create → rfq_respond (×N) → rfq_compare → rfq_award
│
budget_check ← po_create ←───────────┘
│
po_approve → po_send → goods_receive → three_way_match
│ │
approval_escalate (if over threshold) invoice paid ✓
Intelligence Tools — Deep Dive
Supplier Risk Score
{"risk_score": 72, "risk_level": "medium_risk", "factors": {"country_risk": 70, "performance": 85, "contract_coverage": 40, "rating": 80}}
Price Benchmark
{"quoted_price": 2.50, "historical_avg": 2.35, "vs_average_pct": 6.38, "verdict": "acceptable"}
Carbon Footprint
{"co2_kg": 6.8, "transport_mode": "sea", "trees_to_offset": 0.32, "rating": "low"}
Negotiation Brief
{"leverage": "strong", "alternative_suppliers": 4, "strategy": "competitive_pressure", "talking_points": ["We've spent USD 150,000 over 23 orders", "We have 4 alternative suppliers"], "batna": "Switch to alternative supplier"}
Competitive Comparison
| Feature | SAP Ariba | Coupa | Oracle | Us | |---------|:-:|:-:|:-:|:-:| | Supplier management | ✅ | ✅ | ✅ | ✅ | | Purchase orders | ✅ | ✅ | ✅ | ✅ | | RFQ/RFP | ✅ | ✅ | ✅ | ✅ | | 3-way match | ✅ | ✅ | ✅ | ✅ | | Contracts | ✅ | ✅ | ✅ | ✅ | | Supplier diversity | ✅ | ✅ | ❌ | ✅ | | Punch-out catalogs | ✅ | ✅ | ✅ | ✅ | | Budget checking | ✅ | ✅ | ✅ | ✅ | | Multi-level approval | ✅ | ✅ | ✅ | ✅ | | AI risk scoring | ❌ | ❌ | ❌ | ✅ | | Price benchmarking | Partial | Partial | ❌ | ✅ | | Carbon footprint | ❌ | ❌ | ❌ | ✅ | | AI supplier recommend | ❌ | ❌ | ❌ | ✅ | | Contract clause check | ❌ | ❌ | ❌ | ✅ | | Demand forecast | ❌ | ❌ | ❌ | ✅ | | Savings detection | Partial | ✅ | ❌ | ✅ | | Supplier scorecard | ✅ | ✅ | ✅ | ✅ | | Maverick spend | ✅ | ✅ | ❌ | ✅ | | Negotiation brief | ❌ | ❌ | ❌ | ✅ | | Zero config | ❌ | ❌ | ❌ | ✅ | | Open source | ❌ | ❌ | ❌ | ✅ |
Error Codes
| Code | Meaning |
|------|---------|
| SUPPLIER_NOT_FOUND | Supplier ID doesn't exist |
| PO_NOT_FOUND | Purchase order ID doesn't exist |
| PO_NOT_IN_DRAFT | PO already approved/sent |
| PO_NOT_APPROVED | Can't send unapproved PO |
| RFQ_NOT_FOUND | RFQ ID doesn't exist |
| CONTRACT_NOT_FOUND | Contract ID doesn't exist |
Integration
| Server | How it connects |
|--------|----------------|
| mcp-inventory | stock_receive on goods receipt |
| mcp-pricing | Price rules for catalog items |
| mcp-workflow | Approval workflows for POs |
| mcp-legal | Sanctions screening for suppliers |
| mcp-messaging | Notify suppliers on PO send |
Documentation
| Document | Description | |----------|-------------| | mcp-server.toml | ADK-Rust Enterprise registry manifest | | Rust Docs | Generated API documentation |
Contributing
Contributions welcome. Priority areas:
- Supplier portal (self-service onboarding)
- E-procurement marketplace
- Auction/reverse auction support
- AP automation (invoice processing)
- Supplier collaboration messaging
Contributors
| 
James Karanja Maina |
|:---:|
License
Apache-2.0 — see LICENSE for details.
Part of the ADK-Rust Enterprise MCP server ecosystem.
Built with ❤️ by Zavora AI
Registry Compliance
This server implements the ADK MCP SDK contract:
- HealthCheck — async health probe for registry monitoring
- mcp-server.toml — manifest declaring tools, risk classes, and credentials
- Structured tracing —
RUST_LOGenv-filter for observability - Governance gates — PO approval required, budget checks, multi-level escalation