diff --git a/devtoolslib/android_shell.py b/devtoolslib/android_shell.py
index 7a7436f..2d87f4e 100644
--- a/devtoolslib/android_shell.py
+++ b/devtoolslib/android_shell.py
@@ -370,8 +370,7 @@
     logcat_watch_thread = threading.Thread(target=_ForwardObservatoriesAsNeeded)
     logcat_watch_thread.start()
 
-  def ServeLocalDirectory(self, local_dir_path, port=0,
-                          additional_mappings=None):
+  def ServeLocalDirectory(self, local_dir_path, port=0):
     """Serves the content of the local (host) directory, making it available to
     the shell under the url returned by the function.
 
@@ -381,16 +380,36 @@
     Args:
       local_dir_path: path to the directory to be served
       port: port at which the server will be available to the shell
-      additional_mappings: List of tuples (prefix, local_base_path) mapping
-          URLs that start with |prefix| to local directory at |local_base_path|.
-          The prefixes should skip the leading slash.
 
     Returns:
       The url that the shell can use to access the content of |local_dir_path|.
     """
     assert local_dir_path
-    server_address = start_http_server(local_dir_path, host_port=port,
-                                       additional_mappings=additional_mappings)
+    mappings = [('', local_dir_path)]
+    server_address = start_http_server(mappings, host_port=port)
+
+    return 'http://127.0.0.1:%d/' % self._ForwardDevicePortToHost(
+        port, server_address[1])
+
+  def ServeLocalDirectories(self, mappings, port=0):
+    """Serves the content of the local (host) directories, making it available
+    to the shell under the url returned by the function.
+
+    The server will run on a separate thread until the program terminates. The
+    call returns immediately.
+
+    Args:
+      mappings: List of tuples (prefix, local_base_path) mapping URLs that start
+          with |prefix| to local directory at |local_base_path|. The prefixes
+          should skip the leading slash. The first matching prefix will be used
+          each time.
+      port: port at which the server will be available to the shell
+
+    Returns:
+      The url that the shell can use to access the content of |local_dir_path|.
+    """
+    assert mappings
+    server_address = start_http_server(mappings, host_port=port)
 
     return 'http://127.0.0.1:%d/' % self._ForwardDevicePortToHost(
         port, server_address[1])
diff --git a/devtoolslib/http_server.py b/devtoolslib/http_server.py
index 67bb402..386b356 100644
--- a/devtoolslib/http_server.py
+++ b/devtoolslib/http_server.py
@@ -173,24 +173,21 @@
   return RequestHandler
 
 
-def start_http_server(local_dir_path, host_port=0, additional_mappings=None):
+def start_http_server(mappings, host_port=0):
   """Starts an http server serving files from |local_dir_path| on |host_port|.
 
   Args:
-    local_dir_path: Path to the local filesystem directory to be served over
-        http under.
+    mappings: List of tuples (prefix, local_base_path) mapping
+        URLs that start with |prefix| to local directory at |local_base_path|.
+        The prefixes should skip the leading slash. The first matching prefix
+        will be used each time.
     host_port: Port on the host machine to run the server on. Pass 0 to use a
         system-assigned port.
-    additional_mappings: List of tuples (prefix, local_base_path) mapping
-        URLs that start with |prefix| to local directory at |local_base_path|.
-        The prefixes should skip the leading slash.
 
   Returns:
     Tuple of the server address and the port on which it runs.
   """
-  assert local_dir_path
-  mappings = additional_mappings if additional_mappings else []
-  mappings.append(('', local_dir_path))
+  assert mappings
   handler_class = _GetHandlerClassForPath(mappings)
 
   try:
@@ -202,12 +199,12 @@
     http_thread.start()
     print 'Started http://%s:%d to host %s.' % (httpd.server_address[0],
                                                 httpd.server_address[1],
-                                                local_dir_path)
+                                                str(mappings))
     return httpd.server_address
   except socket.error as v:
     error_code = v[0]
     print 'Failed to start http server for %s on port %d: %s.' % (
-        local_dir_path, host_port, os.strerror(error_code))
+        str(mappings), host_port, os.strerror(error_code))
     if error_code == errno.EADDRINUSE:
       print ('  Run `fuser %d/tcp` to find out which process is using the port.'
              % host_port)
diff --git a/devtoolslib/linux_shell.py b/devtoolslib/linux_shell.py
index a8c25df..fff21a7 100644
--- a/devtoolslib/linux_shell.py
+++ b/devtoolslib/linux_shell.py
@@ -22,8 +22,7 @@
     self.executable_path = executable_path
     self.command_prefix = command_prefix if command_prefix else []
 
-  def ServeLocalDirectory(self, local_dir_path, port=0,
-                          additional_mappings=None):
+  def ServeLocalDirectory(self, local_dir_path, port=0):
     """Serves the content of the local (host) directory, making it available to
     the shell under the url returned by the function.
 
@@ -33,15 +32,31 @@
     Args:
       local_dir_path: path to the directory to be served
       port: port at which the server will be available to the shell
-      additional_mappings: List of tuples (prefix, local_base_path) mapping
-          URLs that start with |prefix| to local directory at |local_base_path|.
-          The prefixes should skip the leading slash.
 
     Returns:
       The url that the shell can use to access the content of |local_dir_path|.
     """
-    return 'http://%s:%d/' % http_server.start_http_server(local_dir_path, port,
-                                                           additional_mappings)
+    mappings = [('', local_dir_path)]
+    return 'http://%s:%d/' % http_server.start_http_server(mappings, port)
+
+  def ServeLocalDirectories(self, mappings, port=0):
+    """Serves the content of the local (host) directories, making it available
+    to the shell under the url returned by the function.
+
+    The server will run on a separate thread until the program terminates. The
+    call returns immediately.
+
+    Args:
+      mappings: List of tuples (prefix, local_base_path) mapping URLs that start
+          with |prefix| to local directory at |local_base_path|. The prefixes
+          should skip the leading slash. The first matching prefix will be used
+          each time.
+      port: port at which the server will be available to the shell
+
+    Returns:
+      The url that the shell can use to access the content of |local_dir_path|.
+    """
+    return 'http://%s:%d/' % http_server.start_http_server(mappings, port)
 
   def ForwardHostPortToShell(self, host_port):
     """Forwards a port on the host machine to the same port wherever the shell
diff --git a/devtoolslib/shell.py b/devtoolslib/shell.py
index 16f4669..798208d 100644
--- a/devtoolslib/shell.py
+++ b/devtoolslib/shell.py
@@ -6,8 +6,7 @@
 class Shell(object):
   """Represents an abstract Mojo shell."""
 
-  def ServeLocalDirectory(self, local_dir_path, port=0,
-                          additional_mappings=None):
+  def ServeLocalDirectory(self, local_dir_path, port=0):
     """Serves the content of the local (host) directory, making it available to
     the shell under the url returned by the function.
 
@@ -17,9 +16,25 @@
     Args:
       local_dir_path: path to the directory to be served
       port: port at which the server will be available to the shell
-      additional_mappings: List of tuples (prefix, local_base_path) mapping
-          URLs that start with |prefix| to local directory at |local_base_path|.
-          The prefixes should skip the leading slash.
+
+    Returns:
+      The url that the shell can use to access the content of |local_dir_path|.
+    """
+    raise NotImplementedError()
+
+  def ServeLocalDirectories(self, mappings, port=0):
+    """Serves the content of the local (host) directories, making it available
+    to the shell under the url returned by the function.
+
+    The server will run on a separate thread until the program terminates. The
+    call returns immediately.
+
+    Args:
+      mappings: List of tuples (prefix, local_base_path) mapping URLs that start
+          with |prefix| to local directory at |local_base_path|. The prefixes
+          should skip the leading slash. The first matching prefix will be used
+          each time.
+      port: port at which the server will be available to the shell
 
     Returns:
       The url that the shell can use to access the content of |local_dir_path|.
