- Performs rocket simulations and returns simulation data
 - Stores simulation input data in mongo-db
 
- Install python3 3.11.5 or above
 - install mongodb-atlas
 - Install dependencies 
python3 -m pip install -r requirements.txt 
- make format
 - make test
 - make clean
 - make build
 
- Setup MONGODB_CONNECTION_STRING:
 
$ touch .env && echo MONGODB_CONNECTION_STRING="$ConnectionString" > .env
- run docker compose: 
docker-compose up --build -d 
- Dev: 
python3 -m uvicorn src:app --reload --port 3000 - Prod: 
gunicorn -k uvicorn.workers.UvicornWorker src:app -b 0.0.0.0:3000 
- The MCP bridge is mounted directly on the FastAPI app and is available at 
/mcpalongside the REST API. - No extra process is required: 
uvicorn src:appserves both the REST routes and the MCP transport. 
├── README.md    # this file
├── requirements.txt
│   
├── lib
│   │   
│   ├── api.py    # main app
│   │── secrets.py
│   │   
│   ├── controllers
│   │   ├── interface.py
│   │   ├── environment.py
│   │   ├── flight.py
│   │   ├── motor.py
│   │   └── rocket.py
│   │   
│   ├── services 
│   │   ├── environment.py
│   │   ├── flight.py
│   │   ├── motor.py
│   │   └── rocket.py
│   │   
│   ├── routes 
│   │   ├── environment.py
│   │   ├── flight.py
│   │   ├── motor.py
│   │   └── rocket.py
│   │   
│   ├── repositories
│   │   ├── interface.py
│   │   ├── environment.py
│   │   ├── flight.py
│   │   ├── motor.py
│   │   └── rocket.py
│   │   
│   ├── models
│   │   ├── interface.py
│   │   ├── environment.py
│   │   ├── flight.py
│   │   ├── motor.py
│   │   ├── rocket.py
│   │   │   
│   │   └── sub
│   │       ├── aerosurfaces.py
│   │       └── tanks.py
│   │   
│   └── views
│       ├── interface.py
│       ├── environment.py
│       ├── flight.py
│       ├── motor.py
│       └── rocket.py
│   
└── tests
- OpenAPI standard: https://api.rocketpy.org/redoc
 - Swagger UI: https://api.rocketpy.org/docs
 
General API workflow. Current available models are: Environment, Flight, Rocket and Motor.
sequenceDiagram
    participant User
    participant API
    participant MongoDB
    User ->> API: POST /model    
    API ->> MongoDB: Persist API Model as a document
    MongoDB -->> API: Model ID
    API -->> User: 201 ModelCreated View
    User ->> API: GET /model/:id
    API ->> MongoDB: Read API Model document
    MongoDB -->> API: API Model document
    API -->> User: 200 API ModelView
    User ->> API: PUT /model/:id
    API ->> MongoDB: Update API Model document
    API -->> User: 204
    User ->> API: DELETE /model/:id
    API ->> MongoDB: Delete API Model document
    MongoDB -->> API: Deletion Confirmation
    API -->> User: 204
    sequenceDiagram
    participant User
    participant API
    participant MongoDB
    participant RocketPy lib
    User ->> API: GET model/:id/simulate/
    API -->> MongoDB: Retrieve API Model document
    MongoDB -->> API: API Model document 
    API ->> RocketPy: Initialize RocketPy native class and simulate
    RocketPy lib -->> API: Simulation Results
    API -->> User: Simulation Results
    User ->> API: GET /model/:id/rocketpy
    API -->> MongoDB: Retrieve API Model document
    MongoDB -->> API: API Model document 
    API ->> RocketPy: Initialize RocketPy native class
    RocketPy lib -->> API: RocketPy native class
    API -->> User: RocketPy native class as .dill binary (amd64)