diff --git a/mdproxy.py b/mdproxy.py
new file mode 100755
index 0000000000000000000000000000000000000000..ed35ae225800aea37b332fc9608cb3b8b7bb8a55
--- /dev/null
+++ b/mdproxy.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+from flask import Flask, request
+from urllib.parse import unquote
+import requests
+# import traceback
+
+app = Flask(__name__)
+
+
+# Find all IdP's in edugain metadata
+cached = {}
+signer = 'http://localhost:5001/sign'
+
+
+@app.route('/cache', methods=['GET'])
+def cache():
+    global cached
+    entity = unquote(request.args.get('id'))
+    if entity in cached:
+        print(f"serve {entity}")
+        return cached[entity]
+    else:
+        print(f"request {entity}")
+        result = requests.get(f"{signer}?id={entity}").text
+        cached[entity] = result
+        return result
+
+
+app.run(host='0.0.0.0', port=5002)
diff --git a/requirements.txt b/requirements.txt
index 8d90b7ea6b98011c79fdcf7e2ac890cac72d1af9..18520a310defae0bb031e9df6353facfa1f17bb5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
 lxml
 signxml
 flask
+requests