diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index 41d484ee97..afa328ba36 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -188,6 +188,7 @@ List servers
         [--project <project> [--project-domain <project-domain>]]
         [--long]
         [--marker <server>]
+        [--limit <limit>]
 
 .. option:: --reservation-id <reservation-id>
 
@@ -256,6 +257,12 @@ List servers
     The last server (name or ID) of the previous page. Display list of servers
     after marker. Display all servers if not specified.
 
+.. option:: --limit <limit>
+
+    Maximum number of servers to display. If limit equals -1, all servers will
+    be displayed. If limit is greater than 'osapi_max_limit' option of Nova
+    API, 'osapi_max_limit' will be used instead.
+
 server lock
 -----------
 
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 2e5cd99ce2..1d0de27e17 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -755,6 +755,16 @@ class ListServer(lister.Lister):
                   ' list of servers after marker. Display all servers if not'
                   ' specified.')
         )
+        parser.add_argument(
+            '--limit',
+            metavar='<limit>',
+            type=int,
+            default=None,
+            help=("Maximum number of servers to display. If limit equals -1,"
+                  " all servers will be displayed. If limit is greater than"
+                  " 'osapi_max_limit' option of Nova API,"
+                  " 'osapi_max_limit' will be used instead."),
+        )
         return parser
 
     @utils.log_method(log)
@@ -845,7 +855,8 @@ class ListServer(lister.Lister):
                                             parsed_args.marker).id
 
         data = compute_client.servers.list(search_opts=search_opts,
-                                           marker=marker_id)
+                                           marker=marker_id,
+                                           limit=parsed_args.limit)
         return (column_headers,
                 (utils.get_item_properties(
                     s, columns,