To learn more about MARS and how to use it, please visit the MARS user documentation.

One of the big features of the European Weather Cloud is the fast access to data resources. If you want to access MARS from the European Weather Cloud, here is what you need to do.

Setting up your instance

For fast MARS access, you will need to provision your instance on the ECMWF cloud.

Ubuntu, CentOS and Rocky have support for native MARS client.

When provisioning a new instance:

  • Select the "*-data" layout. 
  • If the instance is running at ECMWF, add the "external-internet" network. MARS needs to have a public IP (external-internet network) to be able to use the direct connection to the MARS servers.
  • If using Floating IP instead, you will then need to let MARS know at runtime what is your IP address is. You will need to have the following variable defined on every session that you need to run MARS from. You may add that definition into your .bashrc or .profile scripts.
    export MARS_DHS_LOCALHOST=<your_public_ip>

If you wish to convert an existing instance, you can select it, and "Action -> run workflow -> click the list icon and select something like "Install ECMWF software nexus".

Configuring MARS

The command-line client will be pre-installed if you chose the "*-data" layout, but you will need an extra step so MARS knows who you are when you issue your requests. 

  1. In your web browser...
    1. Go to
    2. Log in with your ECMWF user and password if you are not logged int already
    3. Copy the contents of .ecmwfapirc, containing your email address and key.
  2. In your VM, create a file in your home directory called ~/.ecmwfapirc and paste the contents previously copied from the web.

Test your setup

You may only access data you have been granted access to. In some cases you may not be able to retrieve valid forecast data.

You may test your connection by any valid MARS request. You have a number of examples in MARS example requests

If you have access to real time data, a quick one-liner to test everything works is:

echo "retrieve, target=test.grib" | mars

The command should end with 0 exit code, a message stating "No errors reported" and a new file called test.grib containing 6 GRIB fields. You may decode them using ecCodes.