diff --git a/database/schema.py b/database/schema.py
index bcae01fc5251cabfd32c9c3d05f5f4a5c884cf14..5f9c8e5adcf50a59c98a95a3b4847775c13e064e 100644
--- a/database/schema.py
+++ b/database/schema.py
@@ -39,6 +39,20 @@ class Role(SQLAlchemyObjectType):
         interfaces = (relay.Node, )
 
 
+class CreateRole(graphene.Mutation):
+    class Arguments:
+        name = graphene.String(required=True)
+        description = graphene.String(required=False)
+
+    role = graphene.Field(Role)
+
+    def mutate(self, info, name, description=None):
+        role = user_datastore.create_role(name=name,
+                                          description=description)
+        user_datastore.commit()
+        return CreateRole(role=role)
+
+
 class Query(graphene.ObjectType):
     node = relay.Node.Field()
     all_users = SQLAlchemyConnectionField(User)
@@ -50,6 +64,7 @@ class Query(graphene.ObjectType):
 
 class Mutation(graphene.ObjectType):
     create_user = UserMutation.Field()
+    create_role = CreateRole.Field()
 
 
 schema = graphene.Schema(query=Query, types=[User, Role, Application], mutation=Mutation)