revmng-mcp
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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| revmng_mcp-0.1.0.tar.gz | 12.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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