diff --git a/NEWS b/NEWS
index 42895107e..f50996679 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ ver 0.17 (2011/??/??)
   - support client-to-client communication
   - "update" and "rescan" need only "CONTROL" permission
   - new command "seekcur" for simpler seeking within current song
+  - new command "config" dumps location of music directory
   - add range parameter to command "load"
   - print extra "playlist" object for embedded CUE sheets
 * input:
diff --git a/doc/protocol.xml b/doc/protocol.xml
index dbc60f40d..5b8857ee0 100644
--- a/doc/protocol.xml
+++ b/doc/protocol.xml
@@ -1845,6 +1845,47 @@ OK
       <title>Reflection</title>
 
       <variablelist>
+        <varlistentry id="command_config">
+          <term>
+            <cmdsynopsis>
+              <command>config</command>
+            </cmdsynopsis>
+          </term>
+          <listitem>
+            <para>
+              Dumps configuration values that may be interesting for
+              the client.  This command is only permitted to "local"
+              clients (connected via UNIX domain socket).
+            </para>
+            <para>
+              The following response attributes are available:
+            </para>
+            <informaltable>
+              <tgroup cols="2">
+                <thead>
+                  <row>
+                    <entry>
+                      Name
+                    </entry>
+                    <entry>
+                      Description
+                    </entry>
+                  </row>
+                </thead>
+                <tbody>
+                  <row>
+                    <entry>
+                      <varname>music_directory</varname>
+                    </entry>
+                    <entry>
+                      The absolute path of the music directory.
+                    </entry>
+                  </row>
+                </tbody>
+              </tgroup>
+            </informaltable>
+          </listitem>
+        </varlistentry>
         <varlistentry id="command_commands">
           <term>
             <cmdsynopsis>
diff --git a/src/command.c b/src/command.c
index 4479b803e..61f0fdd0c 100644
--- a/src/command.c
+++ b/src/command.c
@@ -55,6 +55,7 @@
 #include "path.h"
 #include "replay_gain_config.h"
 #include "idle.h"
+#include "mapper.h"
 
 #ifdef ENABLE_SQLITE
 #include "sticker.h"
@@ -1696,6 +1697,23 @@ static enum command_return
 handle_not_commands(struct client *client,
 		    G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[]);
 
+static enum command_return
+handle_config(struct client *client,
+	      G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[])
+{
+	if (!client_is_local(client)) {
+		command_error(client, ACK_ERROR_PERMISSION,
+			      "Command only permitted to local clients");
+		return COMMAND_RETURN_ERROR;
+	}
+
+	const char *path = mapper_get_music_directory();
+	if (path != NULL)
+		client_printf(client, "music_directory: %s\n", path);
+
+	return COMMAND_RETURN_OK;
+}
+
 static enum command_return
 handle_playlistclear(struct client *client, G_GNUC_UNUSED int argc, char *argv[])
 {
@@ -2139,6 +2157,7 @@ static const struct command commands[] = {
 	{ "clearerror", PERMISSION_CONTROL, 0, 0, handle_clearerror },
 	{ "close", PERMISSION_NONE, -1, -1, handle_close },
 	{ "commands", PERMISSION_NONE, 0, 0, handle_commands },
+	{ "config", PERMISSION_ADMIN, 0, 0, handle_config },
 	{ "consume", PERMISSION_CONTROL, 1, 1, handle_consume },
 	{ "count", PERMISSION_READ, 2, -1, handle_count },
 	{ "crossfade", PERMISSION_CONTROL, 1, 1, handle_crossfade },