diff --git a/configs.py b/configs.py
new file mode 100755
index 0000000..3b5bc7d
--- /dev/null
+++ b/configs.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+"""
+Script for querying specific build configurations of TF-M.
+Can list available build configurations, and can give environment
+variables to build a specific build configuration using run-build.sh
+"""
+
+import argparse
+import os
+import sys
+
+from tfm_ci_pylib.tfm_build_manager import TFM_Build_Manager
+from build_helper.build_helper_configs import config_full
+from build_helper.build_helper_configs import _builtin_configs
+
+
+__copyright__ = """
+/*
+ * Copyright (c) 2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+
+
+def get_build_manager(group=None):
+    """Get a TFM_Build_Manager instance, silencing stdout"""
+    config = config_full
+    if group:
+        config = _builtin_configs[group]
+    _dir = os.getcwd()
+    # Block default stdout from __init__
+    sys.stdout = open(os.devnull, "w")
+    build_manager = TFM_Build_Manager(_dir, _dir, config)
+    # Allow stdout again
+    sys.stdout = sys.__stdout__
+    return build_manager
+
+
+def list_configs(group):
+    """Lists available configurations"""
+    build_manager = get_build_manager(group)
+    build_manager.print_config()
+
+
+def print_config_environment(config, group=None):
+    """Prints particular configuration environment variables"""
+    build_manager = get_build_manager(group)
+    build_manager.print_config_environment(config)
+
+
+if __name__ == "__main__":
+    PARSER = argparse.ArgumentParser(description="Extract build configurations.")
+    PARSER.add_argument(
+        "config",
+        default=None,
+        nargs="?",
+        help="Configuration to print environment variables for. "
+        "Then run-build.sh can be run directly with these set. "
+        "If not specified, the available configurations are printed",
+    )
+    PARSER.add_argument(
+        "-g",
+        "--group",
+        default=None,
+        help="Only list configurations under a certain group. ",
+        choices=list(_builtin_configs.keys()),
+    )
+    ARGS = PARSER.parse_args()
+
+    # By default print available configs
+    if not ARGS.config:
+        list_configs(ARGS.group)
+    else:
+        print_config_environment(ARGS.config, group=ARGS.group)
