Monte Carlo simulation system for software development effort estimation
Project description
Monte Carlo Project Simulator (mcprojsim)
Stop guessing deadlines. Start simulating them.
| Category | Link |
|---|---|
| Package | |
| Documentation | |
| License | |
| Release | |
| CI/CD | |
| Code Quality | |
| Repo URL |
Overview
mcprojsim is a Monte Carlo simulation tool for agile software project estimation. Rather than producing a single deadline, it models uncertainty across task durations, dependencies, risks, and resource constraints to generate confidence-weighted schedule forecasts.
Use it when you need answers like:
- What is the realistic completion range — P10 through P99 — for this project?
- When is there a 50%, 80%, or 90% probability of delivery?
- Which tasks most frequently land on the critical path?
- How do specific risks or uncertainty factors shift the final forecast?
Key features
- Monte Carlo schedule simulation with configurable iterations, P10–P99 confidence percentiles, and reproducible seeds
- Flexible task estimates: explicit low/expected/high ranges, T-shirt sizes, story points, and multi-category symbolic sizing
- Two-pass criticality-aware resource scheduling for optimised assignment under resource contention
- Dependency-only scheduling alongside resource- and calendar-constrained scheduling
- Risk and uncertainty factor modelling at task and project level
- Rich analysis: percentile forecasts, critical-path sequences, sensitivity (Tornado) charts, slack, risk impact, staffing recommendations, and delivery-date probability
- JSON, CSV, and HTML export with configurable distribution chart histogram bins; optional ASCII table output in the CLI
- Natural-language project generation from plain text via
mcprojsim generate - MCP server for AI-assistant-driven generation, validation, and simulation workflows
- Sprint planning with empirical or negative-binomial velocity models, sickness modelling, spillover, and historical sprint data import
Recommended installation
Most users fall into one of two paths:
- Terminal-first CLI usage: install with
pipx. - MCP-assisted usage: use the released MCP bundle or the optional MCP package install described in MCP Server Seetup.
For direct terminal-only CLI usage, pipx remains the simplest manual install path:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install mcprojsim
Then verify the installation:
mcprojsim --help
mcprojsim --version
For the fastest first run, start with Quickstart Guide. For the fuller documentation path after that, use the published User Guide.
[!TIP] A Docker image is available for isolated environments. The accompanying script
bin/mcprojsim.shwraps the container with the same interface as thepipx-installed CLI.
Minimal example
Create a file named project.yaml:
project:
name: "My Project"
description: "Sample project for estimation"
start_date: "2025-11-01"
confidence_levels: [50, 80, 90]
tasks:
- id: "task_001"
name: "Database schema design"
estimate:
low: 3
expected: 5
high: 10
unit: "days"
dependencies: []
uncertainty_factors:
team_experience: "high"
requirements_maturity: "medium"
technical_complexity: "low"
Validate the file:
mcprojsim validate project.yaml
Run a simulation:
mcprojsim simulate project.yaml --seed 12345 --table
Typical outputs (see the --help for how to specify output) include:
*_results.jsonfor full machine-readable output*_results.csvfor tabular summaries*_results.htmlfor a browsable report
Documentation map
Use the entry point that matches your goal:
| Documentation Link | Purpose |
|---|---|
| Quickstart Guide | Fastest terminal-based first run |
| User Documentation | The full documentation site |
| User Guide | The User Guide section |
| Development Guide | contributor and source-checkout workflows |
Additional runnable examples can be seen in the Examples section of the user guide or in the project directory examples/.
Example commands
# Generate a project file from a natural language description
mcprojsim generate examples/nl_example.txt -o my_project.yaml
# Validate an input file
mcprojsim validate examples/sample_project.yaml
# Run a reproducible simulation
mcprojsim simulate examples/sample_project.yaml --seed 42
# Use a custom configuration
mcprojsim simulate examples/sample_project.yaml --config examples/sample_config.yaml --seed 42
# Calculate probability of meeting a target date
mcprojsim simulate examples/sample_project.yaml --target-date 2026-06-01
# Format tabular sections for easier reading
mcprojsim simulate examples/sample_project.yaml --table --seed 42
For full CLI coverage, including constrained scheduling, sprint planning, quiet/minimal modes, staffing, and export options, see Running Simulations.
MCP server integration
mcprojsim can run as a Model Context Protocol (MCP) server, letting AI assistants such as GitHub Copilot, Claude Desktop, or any MCP-compatible client generate project files, validate descriptions, and run simulations conversationally.
Install the released MCP bundle from GitHub Releases, or follow the manual setup in MCP Server Setup for installation tradeoffs and natural-language input examples.
Example prompt to install mcprojsim as an MCP server:
Download and install the latest mcprojsim MCP server from GitHub Releases. Follow the README.md for installation instructions.
See the MCP server detailed documentation for examples of using the server.
Citation
If you use this tool in research or project planning, please cite:
@software{mcprojsim,
title = {Monte Carlo Project Simulator},
author = {Johan Persson},
year = {2026},
url = {https://github.com/johan162/mcprojsim},
version = {0.11.1}
}
License
MIT License - see LICENSE.
Acknowledgments
Inspired by the work of:
- Steve McConnell - Software Estimation: Demystifying the Black Art
- Frederick Brooks - The Mythical Man-Month
- Douglas Hubbard - How to Measure Anything in Cybersecurity Risk
- Kahneman, Sibony, Sunstein - Noise: A Flaw in Human Judgment
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcprojsim-0.11.1.tar.gz.
File metadata
- Download URL: mcprojsim-0.11.1.tar.gz
- Upload date:
- Size: 114.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.3 CPython/3.12.3 Linux/6.17.0-1008-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b525e7502914a79f9a3fb2164cda24180fd10565500605fad40baa68af96224
|
|
| MD5 |
95996f8f8f470afdc118a4d83457d21c
|
|
| BLAKE2b-256 |
63861d98c0314d086cab42849ce5f1217da164143ce5eea6f33886192b5c15f3
|
File details
Details for the file mcprojsim-0.11.1-py3-none-any.whl.
File metadata
- Download URL: mcprojsim-0.11.1-py3-none-any.whl
- Upload date:
- Size: 127.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.3 CPython/3.12.3 Linux/6.17.0-1008-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1100af3f8fa1aa17ab304fdae8979a425669af6a698a8a90938e931e97c4fd19
|
|
| MD5 |
3a2d6ae154310e44830840c30afc5379
|
|
| BLAKE2b-256 |
7cbb90b3315fc05211eda0c8824391d0fbd09bc85a3f0557fff574a831c9c05f
|