Skip to main content
The OCI Pricing MCP server is a Python-based MCP server that fetches Oracle Cloud Infrastructure service pricing from Oracle’s public Price List API, enabling pricing queries and cost estimation.

Installation

pip install fastmcp httpx
Or with uv:
uv sync --frozen

Running the Server

STDIO Transport Mode

python oci-pricing-mcp-server.py
Or with uv:
uv run python oci-pricing-mcp-server.py

Environment Variables

Optional configuration variables:
  • OCI_PRICING_DEFAULT_CCY - Default currency code (e.g., JPY; default: USD)
  • OCI_PRICING_MAX_PAGES - Page-follow upper bound for listing (default: 6, clamped to 1-10)
  • OCI_PRICING_HTTP_TIMEOUT - HTTP timeout in seconds (default: 25)
  • OCI_PRICING_RETRIES - Transient retry count (default: 2)
  • OCI_PRICING_BACKOFF - Exponential backoff base in seconds (default: 0.5)
  • PROBE_CCY - Convenience fallback for default currency

Available Tools

The server provides the following tools for pricing queries:
Tool NameDescription
pricing_get_skuLook up pricing for a specific part number (SKU)
pricing_search_nameFuzzy-search pricing by product name or alias
pingHealth check - returns “ok”

Usage Examples

SKU Lookup

Price for SKU B93113 in JPY
Fetches pricing for a specific part number in the requested currency.
Look up part number B93113 in USD
Retrieves SKU pricing details.

Product Search (Fuzzy)

Object Storage pricing in JPY
Searches for Object Storage-related SKUs and retrieves pricing.
OKE (Kubernetes) pricing
Finds Kubernetes Engine pricing using the alias “OKE”.
Compute pricing in JPY, priced items only
Searches for Compute pricing and filters to only show items with prices.
ADB-related SKUs in USD
Searches using the “ADB” alias for Autonomous Database.

Health Check

Ping the pricing server
Verifies server is running and responsive.

Understanding Pricing Data

Important Pricing Disclaimer
  • Informational only - Responses are NOT quotes or invoices
  • Pricing can change and may vary by region, commitment/discounts, and tenancy-specific terms
  • Taxes and surcharges are not included
  • The Oracle Price List API is a public subset - some items may return $0.00 (free-tier-only or missing localization)
  • Server attempts to flag zero-price items with note: "zero-price-or-free-tier-only" when detected
  • This server does NOT know your account’s negotiated pricing
  • Does NOT perform currency conversion - it requests the currency you specify and surfaces what the API returns
  • Always verify pricing in the OCI Console or official materials before making decisions

Supported Aliases

The server recognizes common product aliases:
  • adb → Autonomous Database
  • oss → Object Storage
  • oke → Kubernetes Engine (OKE)
  • And more…

Query Matching

3-4 characters:
  • Word-boundary match
5+ characters:
  • Space-insensitive substring matching
  • Similarity scoring

Response Format

Responses include:
  • kind - “sku”, “search”, or “error”
  • currencyCode - Currency of pricing data
  • model - Pricing model (e.g., per GB, per hour)
  • value - Price value
  • note - Additional information (e.g., zero-price indicator)

API Tools Details

pricing_get_sku

Look up pricing for a specific part number. Parameters:
  • part_number (required) - SKU/part number to look up
  • currency (optional) - Currency code (defaults to env default)
  • max_pages (optional) - Maximum pages to fetch (defaults to env default)
Returns:
  • On hit: {"kind":"sku", "model": "...", "value": "...", "currencyCode": "..."}
  • On fallback/not found: {"kind":"search", "note":"matched-by-name"|"not-found", ...}
  • On error: {"kind":"error", ...}

pricing_search_name

Fuzzy-search by product name or alias. Parameters:
  • query (required) - Product name or alias to search for
  • currency (optional) - Currency code (defaults to env default)
  • limit (optional, default 12, max 20) - Maximum results to return
  • max_pages (optional) - Maximum pages to fetch (defaults to env default)
  • require_priced (optional, default false) - If true, only return items with model + value
Returns: List of matching items re-fetched by SKU with enriched pricing data.

ping

Health check endpoint. Returns: "ok"

Features

No Credentials Required

  • Uses public Oracle Price List API
  • No OCI account needed
  • No authentication setup

Stateless

  • Side-effect-free operations
  • No persistent state
  • Safe for concurrent use

Network Robustness

  • Automatic retry with exponential backoff
  • Request timeout handling
  • Transient error recovery

Currency Handling

  • Normalizes ISO currency codes
  • Ensures currencyCode present in responses
  • Falls back to requested or default currency

Common Use Cases

Cost Estimation

  • Look up pricing for specific SKUs
  • Calculate monthly costs
  • Compare service pricing
  • Estimate project costs

Budget Planning

  • Research service costs
  • Plan infrastructure expenses
  • Forecast spending
  • Evaluate cost scenarios

Cost Comparison

  • Compare pricing across services
  • Evaluate different configurations
  • Identify cost optimization opportunities
  • Assess regional pricing differences

Vendor Evaluation

  • Compare OCI pricing with competitors
  • Evaluate total cost of ownership
  • Assess pricing models
  • Support procurement decisions

Best Practices

Verification

  • Always verify pricing in OCI Console
  • Check for current promotions or discounts
  • Confirm pricing for your specific region
  • Review terms and conditions

Currency

  • Specify currency explicitly when possible
  • Set default currency via environment variable
  • Be aware of exchange rate considerations
  • Understand currency conversion limitations

Interpretation

  • Treat all pricing as informational only
  • Account for taxes and surcharges separately
  • Consider negotiated pricing if applicable
  • Factor in commitment discounts

Automation

  • Cache pricing data appropriately
  • Handle zero-price items correctly
  • Implement error handling
  • Monitor for pricing changes

Troubleshooting

Zero Price Results

Possible reasons:
  • Free tier only service
  • Missing price localization for currency
  • Not available in all regions
  • Pricing not published
Actions:
  • Check for note: "zero-price-or-free-tier-only"
  • Try different currency
  • Verify in OCI Console
  • Contact Oracle sales

No Results Found

  • Verify SKU is correct
  • Try broader search terms
  • Use product aliases
  • Check spelling

Network Errors

  • Verify internet connectivity
  • Check for firewall/proxy issues
  • Review timeout settings
  • Retry the request

Reference

Oracle Price List API

Official documentation: https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/signingup_topic-Estimating_Costs.htm#accessing_list_pricing

Common SKUs

Refer to Oracle documentation for current SKU listings.

License

This is a proof-of-concept project. While not production-hardened, it is stateless, credential-free, and suitable for day-to-day internal use in MCP clients.

Disclaimer

Users are responsible for verifying pricing information. The server provides informational data only and does not constitute a quote, invoice, or binding pricing agreement.

Build docs developers (and LLMs) love