diff --git a/database/schema.py b/database/schema.py
index eca2ecdea8ce2a9b4486c145dc2d1156ad7100c0..d0e2ba74fdeb0fdc37d2d7e4f9eeb3a058b68e30 100644
--- a/database/schema.py
+++ b/database/schema.py
@@ -12,6 +12,19 @@ class User(SQLAlchemyObjectType):
         exclude_fields = ("password")
         interfaces = (relay.Node, )
 
+class UserMutation(graphene.Mutation):
+    class Arguments:
+        username = graphene.String(required=True)
+        password = graphene.String(required=True)
+        email = graphene.String(required=True)
+
+    user = graphene.Field(User)
+
+    def mutate(self, info, username, password, email):
+        user = user_datastore.create_user(username=username, email=email, password=password)
+        user_datastore.commit()
+        return UserMutation(user=user)
+
 class Application(SQLAlchemyObjectType):
     class Meta:
         model = ApplicationModel
@@ -32,4 +45,8 @@ class Query(graphene.ObjectType):
         query = User.get_query(info)
         return query.filter(UserModel.username == username).first()
 
-schema = graphene.Schema(query=Query)
+class Mutation(graphene.ObjectType):
+    create_user = UserMutation.Field()
+
+
+schema = graphene.Schema(query=Query, types=[User, Role, Application], mutation=Mutation)