diff --git a/changelogs/unreleased/sh-add-mr-simple-mode.yml b/changelogs/unreleased/sh-add-mr-simple-mode.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0033ca284442fb4628478cddee02520ab9578e3e
--- /dev/null
+++ b/changelogs/unreleased/sh-add-mr-simple-mode.yml
@@ -0,0 +1,4 @@
+---
+title: Add a simple mode to merge request API
+merge_request:
+author:
diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md
index 3dc808c196d68ee870d63c88456d497e6daa0325..c90d95e4dd0d7a4dbbe3aca6ee167dedae20e750 100644
--- a/doc/api/merge_requests.md
+++ b/doc/api/merge_requests.md
@@ -25,6 +25,7 @@ Parameters:
 | `order_by`| string  | no    | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` |
 | `sort`    | string  | no    | Return requests sorted in `asc` or `desc` order. Default is `desc`  |
 | `milestone`  | string  | no | Return merge requests for a specific milestone |
+| `view` | string | no | If `simple`, returns the `iid`, URL, title, description, and basic state of merge request |
 | `labels`  | string  | no | Return merge requests matching a comma separated list of labels |
 | `created_after` | datetime | no | Return merge requests created after the given time (inclusive) |
 | `created_before` | datetime | no | Return merge requests created before the given time (inclusive) |
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 945f2821d72455f59145b612c04cc8436bfb3108..47742a164fc4b42b9d985221e61f362bc3c21d37 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -314,6 +314,13 @@ module API
       expose :id
     end
 
+    class MergeRequestSimple < ProjectEntity
+      expose :title
+      expose :web_url do |merge_request, options|
+        Gitlab::UrlBuilder.build(merge_request)
+      end
+    end
+
     class MergeRequestBasic < ProjectEntity
       expose :target_branch, :source_branch
       expose :upvotes do |merge_request, options|
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 1a3fdb66f3f98a6133ecf4e832dc92a3519e5b74..ac33b2b801c0d7a56af3abf2305d34b997bbc96d 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -44,9 +44,14 @@ module API
           args[:label_name] = args.delete(:labels)
 
           merge_requests = MergeRequestsFinder.new(current_user, args).execute
-          merge_requests = merge_requests.reorder(args[:order_by] => args[:sort])
-          paginate(merge_requests)
-            .preload(:notes, :target_project, :author, :assignee, :milestone, :merge_request_diff, :labels)
+                             .reorder(args[:order_by] => args[:sort])
+          merge_requests = paginate(merge_requests)
+                             .preload(:target_project)
+
+          return merge_requests if args[:view] == 'simple'
+
+          merge_requests
+            .preload(:notes, :author, :assignee, :milestone, :merge_request_diff, :labels)
         end
 
         params :optional_params_ce do
@@ -77,15 +82,25 @@ module API
         optional :labels, type: String, desc: 'Comma-separated list of label names'
         optional :created_after, type: DateTime, desc: 'Return merge requests created after the specified time'
         optional :created_before, type: DateTime, desc: 'Return merge requests created before the specified time'
+        optional :view, type: String, values: %w[simple], desc: 'If simple, returns the `iid`, URL, title, description, and basic state of merge request'
         use :pagination
       end
       get ":id/merge_requests" do
         authorize! :read_merge_request, user_project
 
         merge_requests = find_merge_requests(project_id: user_project.id)
-        issuable_metadata = issuable_meta_data(merge_requests, 'MergeRequest')
 
-        present merge_requests, with: Entities::MergeRequestBasic, current_user: current_user, project: user_project, issuable_metadata: issuable_metadata
+        options = { with: Entities::MergeRequestBasic,
+                    current_user: current_user,
+                    project: user_project }
+
+        if params[:view] == 'simple'
+          options[:with] = Entities::MergeRequestSimple
+        else
+          options[:issuable_metadata] = issuable_meta_data(merge_requests, 'MergeRequest')
+        end
+
+        present merge_requests, options
       end
 
       desc 'Create a merge request' do
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 360a82196a8c04a37ba89f67b16330b89840a068..9098ae6bcda68b0dfdc90e8ceb7df78d69994477 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -69,6 +69,22 @@ describe API::MergeRequests do
         expect(json_response.first['merge_commit_sha']).to eq(merge_request_merged.merge_commit_sha)
       end
 
+      it "returns an array of all merge_requests using simple mode" do
+        get api("/projects/#{project.id}/merge_requests?view=simple", user)
+
+        expect(response).to have_http_status(200)
+        expect(response).to include_pagination_headers
+        expect(json_response.last.keys).to match_array(%w(id iid title web_url created_at description project_id state updated_at))
+        expect(json_response).to be_an Array
+        expect(json_response.length).to eq(3)
+        expect(json_response.last['iid']).to eq(merge_request.iid)
+        expect(json_response.last['title']).to eq(merge_request.title)
+        expect(json_response.last).to have_key('web_url')
+        expect(json_response.first['iid']).to eq(merge_request_merged.iid)
+        expect(json_response.first['title']).to eq(merge_request_merged.title)
+        expect(json_response.first).to have_key('web_url')
+      end
+
       it "returns an array of all merge_requests" do
         get api("/projects/#{project.id}/merge_requests?state", user)