diff --git a/src/bundles/rest_server/src/server.py b/src/bundles/rest_server/src/server.py
index dce33ee..5b8ea06 100644
--- a/src/bundles/rest_server/src/server.py
+++ b/src/bundles/rest_server/src/server.py
@@ -23,7 +23,7 @@ class RESTServer(Task):
         super().__init__(*args, **kw)
 
     SESSION_SAVE = False
-    
+
     def take_snapshot(self, session, flags):
         # For now, do not save anything in session.
         # Should save port and auto-restart on session restore.
@@ -95,6 +95,14 @@ class RESTHandler(BaseHTTPRequestHandler):
                     else:
                         al.extend(vl)
             self._run(args)
+        elif r.path == "/stop":
+            # Return the response *before* shutting down, otherwise everything hangs
+            data = bytes('Shutting down ChimeraX REST server', 'utf-8')
+            self._header(200, 'text/plain', len(data))
+            self.wfile.write(data)
+            from chimerax.core.commands import run
+            session = self.server.chimerax_session
+            session.ui.thread_safe(run, session, 'remotecontrol rest stop')
         else:
             # Serve up some static files for testing
             import os.path
