diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index 7cc63b06322b7af24744adae05506ff149e140ca..bae6beeb64f2f5dec74a45dedd77c348ae32e634 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -85,6 +85,7 @@ bool command_user_add(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_AR
 /* Program management control */
 bool command_restart(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_kill   (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
+bool command_import (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_update (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_rescan (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX], int forced);
 
diff --git a/src/base/commands.c b/src/base/commands.c
index 9b7b493395537113e001bb5f994df7a44778218f..d5b442ecfe015b99fefbcad4e5c9d1eabf6c0511 100644
--- a/src/base/commands.c
+++ b/src/base/commands.c
@@ -60,6 +60,15 @@ command_update(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_AR
     return ! MOD_PROC(srv->repo_mod, "update");
 }
 
+bool
+command_import(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX])
+{
+    RETURN_UNLESS(lkt_client_auth(srv, c, false), "Failed to authentificate user", false);
+    srv->mpd_idle_events |= MPD_IDLE_UPDATE;
+    srv->mpd_idle_events |= MPD_IDLE_DATABASE;
+    return ! MOD_PROC(srv->repo_mod, "import");
+}
+
 bool
 command_rescan(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX],
                int UNUSED forced)
diff --git a/src/main/lkt.c b/src/main/lkt.c
index 5edcc32dfb5c191d7dd241627abb2ba340827105..af3f49ec4cf370188c146055716b7f4ebb452303 100644
--- a/src/main/lkt.c
+++ b/src/main/lkt.c
@@ -358,7 +358,7 @@ update__(struct cmd_args *args)
 noreturn void
 import__(struct cmd_args *args)
 {
-    rescan_or_update__(args, "import");
+    rescan_or_update__(args, "__import");
 }
 
 noreturn void
diff --git a/src/net/listen.c b/src/net/listen.c
index 00f7c7f8bec7eb5565a1c5d6b592c0555c56b207..908c026b2b4ff143b231745180af66da36273fad 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -162,6 +162,8 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
             err = ! command_update(srv, c, cmd.args);
         else if (STR_MATCH(cmd.name, "rescan"))
             err = ! command_rescan(srv, c, cmd.args, false);
+        else if (STR_MATCH(cmd.name, "__import"))
+            err = ! command_import(srv, c, cmd.args);
         else if (STR_MATCH(cmd.name, "__rescan"))
             err = ! command_rescan(srv, c, cmd.args, true);