diff --git a/lib/api.rb b/lib/api.rb
index 2890a8cc9e8f13e2881f001ec7389dfe19f28728..7a1845443e734eed6e220f318eb34efd8df33932 100644
--- a/lib/api.rb
+++ b/lib/api.rb
@@ -18,5 +18,6 @@ module Gitlab
     mount Issues
     mount Milestones
     mount Session
+    mount MergeRequests
   end
 end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index ee693de699e21c389a6796585b0fc389ad18d81a..8c405f29568ec84e4bf30e49560b35c233e7c57a 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -63,5 +63,11 @@ module Gitlab
     class SSHKey < Grape::Entity
       expose :id, :title, :key
     end
+
+    class MergeRequest < Grape::Entity
+      expose :id, :target_branch, :source_branch, :project_id,
+             :title, :closed, :merged
+      expose :author, :assignee, using: Entities::UserBasic
+    end
   end
 end
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
new file mode 100644
index 0000000000000000000000000000000000000000..12c9647be3d38433e6ed13ee927185df7a58a70f
--- /dev/null
+++ b/lib/api/merge_requests.rb
@@ -0,0 +1,31 @@
+module Gitlab
+  # Issues API
+  class MergeRequests < Grape::API
+    before { authenticate! }
+
+    resource :projects do
+      #list
+      get ":id/merge_requests" do
+        project = current_user.projects.find(params[:id])
+        present project.merge_requests, with: Entities::MergeRequest
+      end
+      
+      #show
+      get ":id/merge_request/:merge_request_id" do
+        project = current_user.projects.find(params[:id])
+        present project.merge_requests.find(params[:merge_request_id]), with: Entities::MergeRequest
+      end
+
+      #create merge_request
+      post ":id/merge_requests" do
+
+      end
+
+      #update merge_request
+      put ":id/merge_request/:merge_request_id" do
+
+      end
+
+    end
+  end
+end