Skip to main content

revmng-mcp

CI PyPI License: MIT

An MCP server that exposes revmng, the revenue-management library for Python, as tools for AI agents: seat protection (Littlewood, EMSR and the exact dynamic program), overbooking, pricing, group and length-of-stay decisions, network bid prices, and ready-to-show charts.

Agents asked to set a booking limit or evaluate a group tend to do the arithmetic themselves, and the standard methods are easy to get subtly wrong: a protection level computed from the wrong tail, a group accepted without costing the demand it displaces, EMSR confused with the optimum. The calculation belongs in a deterministic, versioned, validated library that the agent calls, which leaves the agent to choose the analysis and explain the result.

revmng-mcp architecture: an AI agent calls the server's analysis and chart tools, which route to the validated revmng core and return structured JSON or a PNG chart

Tools

Analysis tools return the library's payload: the decision, supporting figures and provenance.

Tool Purpose
protection_levels nested protection levels and booking limits (EMSR-b, EMSR-a or the exact optimal DP)
overbooking_limit authorization limit, by service level or the cost trade-off
newsvendor the critical-fractile stocking quantity
optimal_price the profit-maximising price for a linear or constant-elasticity demand curve
revenue_opportunity the revenue opportunity metric (ROM) against perfect and no-control benchmarks
evaluate_group accept or reject a group by displacement analysis
evaluate_stay accept or reject a multi-night stay against nightly bid prices
bid_prices network bid prices from the deterministic LP
metrics RevPAR, ADR, occupancy, yield and load factor
describe_inputs the input fields and the method definitions

Chart tools return a PNG image.

Tool Purpose
protection_chart the nested booking limits, or the EMSR curves
overbooking_chart the overbooking cost trade-off
price_chart revenue, profit and demand against price
newsvendor_chart expected profit against order quantity
revenue_opportunity_chart perfect, no-control and realised revenue
bid_price_chart the bid price per resource

All tools are read-only.

Installation

Run it with uv (no install needed):

uvx revmng-mcp

or install from PyPI:

pip install revmng-mcp

Configuration

Add it to your MCP client. For example:

{
  "mcpServers": {
    "revmng": {
      "command": "uvx",
      "args": ["revmng-mcp"]
    }
  }
}

If you installed with pip, use "command": "revmng-mcp" with no args.

Example

protection_levels(classes=[
  {"fare": 1000, "mean": 30, "sd": 12},
  {"fare": 700,  "mean": 40, "sd": 15},
  {"fare": 400,  "mean": 60, "sd": 20}
], capacity=120, method="emsr_b")
  -> { "method": "EMSR-b",
       "booking_limits_int": [120, 97, 50],
       "summary": "EMSR-b - capacity 120 ..." }

Design

The server is a thin, stateless wrapper. All of the arithmetic lives in the revmng library, which computes from the standard methods and is validated against published worked examples (Phillips 2005) and cross-checked against an exact dynamic program. The server adds the tool schema, read-only annotations and an input-schema helper so an agent can format the input and act on the result. Demand is supplied by the caller; forecasting is out of scope.

Related

  • revmng: the library this server wraps.

License

MIT. Written and maintained by Atakan Arikan, MSc Student at Tsinghua University and Politecnico di Milano.

Release files for revmng-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for revmng-mcp 0.1.0
File Size Uploaded
revmng_mcp-0.1.0.tar.gz 12.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for revmng-mcp 0.1.0
File Interpreter ABI Platform
revmng_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / revmng_mcp-0.1.0.tar.gz

Download URL revmng_mcp-0.1.0.tar.gz
Size 12.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c674ddaf0eb84f64b420c7087dcc65f562905781cb29ffe8ea6c1d9e5393a008
BLAKE2b-256 checksum
How to use checksums
76222900eb2d686457dcac7b72be18f426a17a430fd5fbed98984b9604e33d1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 16, 2026.

Transparency log

Release files / revmng_mcp-0.1.0-py3-none-any.whl

Download URL revmng_mcp-0.1.0-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efe2a0068537963db0e3661a9cdab8a6d563f95af505cce154ddcd0c1c3becdd
BLAKE2b-256 checksum
How to use checksums
635365dd17bc7784326b6dee20ad3c5eb9eafff292e2fa7a628c70ab468aa9a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page