diff --git a/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java b/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
index 3e1a80e..42e41a1 100644
--- a/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
+++ b/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
@@ -57,7 +57,8 @@
 
 public class HugeGraphCommand {
 
-    private static final int DEFAULT_CLEAR_TIMEOUT = 300;
+    private static final int DEFAULT_GRAPH_CLEAR_TIMEOUT = 300;
+    private static final int DEFAULT_GRAPH_CREATE_TIMEOUT = 300;
 
     private SubCommands subCommands;
 
@@ -267,6 +268,26 @@
                 dumpManager.dumpFormatter(dump.formatter());
                 dumpManager.dump();
                 break;
+            case "graph-create":
+                SubCommands.GraphCreate graphCreate = this.subCommand(subCmd);
+                if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
+                    this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
+                }
+                graphsManager = manager(GraphsManager.class);
+                graphsManager.create(graphCreate.name(), graphCreate.config());
+                Printer.print("Graph '%s' is created", graphCreate.name());
+                break;
+            case "graph-clone":
+                SubCommands.GraphClone graphClone = this.subCommand(subCmd);
+                if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
+                    this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
+                }
+                graphsManager = manager(GraphsManager.class);
+                graphsManager.clone(graphClone.name(),
+                                    graphClone.cloneGraphName());
+                Printer.print("Graph '%s' is created(cloned from '%s')",
+                              graphClone.name(), graphClone.cloneGraphName());
+                break;
             case "graph-list":
                 graphsManager = manager(GraphsManager.class);
                 Printer.printList("Graphs", graphsManager.list());
@@ -278,13 +299,22 @@
                 break;
             case "graph-clear":
                 SubCommands.GraphClear graphClear = this.subCommand(subCmd);
-                if (timeout() < DEFAULT_CLEAR_TIMEOUT) {
-                    this.timeout(DEFAULT_CLEAR_TIMEOUT);
+                if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
+                    this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
                 }
                 graphsManager = manager(GraphsManager.class);
                 graphsManager.clear(this.graph(), graphClear.confirmMessage());
                 Printer.print("Graph '%s' is cleared", this.graph());
                 break;
+            case "graph-drop":
+                SubCommands.GraphDrop graphDrop = this.subCommand(subCmd);
+                if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
+                    this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
+                }
+                graphsManager = manager(GraphsManager.class);
+                graphsManager.drop(this.graph(), graphDrop.confirmMessage());
+                Printer.print("Graph '%s' is dropped", this.graph());
+                break;
             case "graph-mode-set":
                 SubCommands.GraphModeSet graphModeSet = this.subCommand(subCmd);
                 graphsManager = manager(GraphsManager.class);
diff --git a/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java b/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
index 92bd2e0..0102123 100644
--- a/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
+++ b/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
@@ -59,9 +59,12 @@
     }
 
     private void initSubCommands() {
+        this.commands.put("graph-create", new GraphCreate());
+        this.commands.put("graph-clone", new GraphClone());
         this.commands.put("graph-list", new GraphList());
         this.commands.put("graph-get", new GraphGet());
         this.commands.put("graph-clear", new GraphClear());
+        this.commands.put("graph-drop", new GraphDrop());
         this.commands.put("graph-mode-set", new GraphModeSet());
         this.commands.put("graph-mode-get", new GraphModeGet());
 
@@ -370,6 +373,45 @@
         }
     }
 
+    @Parameters(commandDescription = "Create graph with config")
+    public static class GraphCreate {
+
+        @Parameter(names = {"--name", "-n"}, arity = 1,
+                   description = "The name of new created graph, default is g")
+        public String name = "g";
+
+        @ParametersDelegate
+        private ConfigFile configFile = new ConfigFile();
+
+        public String name() {
+            return this.name;
+        }
+
+        public String config() {
+            return this.configFile.config;
+        }
+    }
+
+    @Parameters(commandDescription = "Clone graph")
+    public static class GraphClone {
+
+        @Parameter(names = {"--name", "-n"}, arity = 1,
+                   description = "The name of new created graph, default is g")
+        public String name = "g";
+
+        @Parameter(names = {"--clone-graph-name"}, arity = 1,
+                   description = "The name of cloned graph, default is hugegraph")
+        public String cloneGraphName = "hugegraph";
+
+        public String name() {
+            return this.name;
+        }
+
+        public String cloneGraphName() {
+            return this.cloneGraphName;
+        }
+    }
+
     @Parameters(commandDescription = "List all graphs")
     public static class GraphList {
     }
@@ -381,7 +423,18 @@
     public static class GraphClear {
 
         @ParametersDelegate
-        private ConfirmMessage message = new ConfirmMessage();
+        private ClearConfirmMessage message = new ClearConfirmMessage();
+
+        public String confirmMessage() {
+            return this.message.confirmMessage;
+        }
+    }
+
+    @Parameters(commandDescription = "Drop graph")
+    public static class GraphDrop {
+
+        @ParametersDelegate
+        private DropConfirmMessage message = new DropConfirmMessage();
 
         public String confirmMessage() {
             return this.message.confirmMessage;
@@ -736,7 +789,7 @@
         public String url = null;
     }
 
-    public static class ConfirmMessage {
+    public static class ClearConfirmMessage {
 
         @Parameter(names = {"--confirm-message", "-c"}, arity = 1,
                    description = "Confirm message of graph clear is " +
@@ -746,6 +799,16 @@
         public String confirmMessage;
     }
 
+    public static class DropConfirmMessage {
+
+        @Parameter(names = {"--confirm-message", "-c"}, arity = 1,
+                   description = "Confirm message of graph clear is " +
+                                 "\"I'm sure to drop the graph\". " +
+                                 "(Note: include \"\")",
+                   required = true)
+        public String confirmMessage;
+    }
+
     public static class Mode {
 
         @Parameter(names = {"--graph-mode", "-m"}, arity = 1,
@@ -765,6 +828,14 @@
         public String script;
     }
 
+    public static class ConfigFile {
+
+        @Parameter(names = {"--file", "-f"}, arity = 1,
+                   converter = FileNameToContentConverter.class,
+                   description = "Creating graph config file")
+        public String config;
+    }
+
     public static class GremlinScript {
 
         @Parameter(names = {"--script", "-s"}, arity = 1,
diff --git a/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java b/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
index 6561975..b88fb8f 100644
--- a/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
+++ b/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
@@ -32,6 +32,14 @@
         super(info, "graphs");
     }
 
+    public Map<String, String> create(String name, String config) {
+        return this.client.graphs().createGraph(name, config);
+    }
+
+    public Map<String, String> clone(String name, String cloneGraphName) {
+        return this.client.graphs().cloneGraph(name, cloneGraphName);
+    }
+
     public List<String> list() {
         return this.client.graphs().listGraph();
     }
@@ -44,6 +52,10 @@
         this.client.graphs().clearGraph(graph, confirmMessage);
     }
 
+    public void drop(String graph, String confirmMessage) {
+        this.client.graphs().dropGraph(graph, confirmMessage);
+    }
+
     public void mode(String graph, GraphMode mode) {
         this.client.graphs().mode(graph, mode);
     }
