@@ -12,7 +12,8 @@ func catalogCommand() *cobra.Command {
12
12
cmd := & cobra.Command {
13
13
Use : "catalog" ,
14
14
Aliases : []string {"catalogs" },
15
- Short : "Manage the catalog" ,
15
+ Short : "Manage MCP server catalogs" ,
16
+ Long : `Manage MCP server catalogs for organizing and configuring custom MCP servers alongside Docker's official catalog.` ,
16
17
}
17
18
cmd .AddCommand (bootstrapCatalogCommand ())
18
19
cmd .AddCommand (importCatalogCommand ())
@@ -32,8 +33,15 @@ func catalogCommand() *cobra.Command {
32
33
func importCatalogCommand () * cobra.Command {
33
34
return & cobra.Command {
34
35
Use : "import <alias|url|file>" ,
35
- Short : "Import a catalog" ,
36
- Args : cobra .ExactArgs (1 ),
36
+ Short : "Import a catalog from URL or file" ,
37
+ Long : `Import an MCP server catalog from a URL or local file. The catalog will be downloaded
38
+ and stored locally for use with the MCP gateway.` ,
39
+ Args : cobra .ExactArgs (1 ),
40
+ Example : ` # Import from URL
41
+ docker mcp catalog import https://example.com/my-catalog.yaml
42
+
43
+ # Import from local file
44
+ docker mcp catalog import ./shared-catalog.yaml` ,
37
45
RunE : func (cmd * cobra.Command , args []string ) error {
38
46
return catalog .Import (cmd .Context (), args [0 ])
39
47
},
@@ -60,8 +68,14 @@ func lsCatalogCommand() *cobra.Command {
60
68
}
61
69
cmd := & cobra.Command {
62
70
Use : "ls" ,
63
- Short : "List configured catalogs" ,
71
+ Short : "List all configured catalogs" ,
72
+ Long : `List all configured catalogs including Docker's official catalog and any locally managed catalogs.` ,
64
73
Args : cobra .NoArgs ,
74
+ Example : ` # List all catalogs
75
+ docker mcp catalog ls
76
+
77
+ # List catalogs in JSON format
78
+ docker mcp catalog ls --json` ,
65
79
RunE : func (cmd * cobra.Command , _ []string ) error {
66
80
return catalog .Ls (cmd .Context (), opts .JSON )
67
81
},
@@ -75,7 +89,11 @@ func rmCatalogCommand() *cobra.Command {
75
89
return & cobra.Command {
76
90
Use : "rm <name>" ,
77
91
Short : "Remove a catalog" ,
78
- Args : cobra .ExactArgs (1 ),
92
+ Long : `Remove a locally configured catalog. This will delete the catalog and all its server definitions.
93
+ The Docker official catalog cannot be removed.` ,
94
+ Args : cobra .ExactArgs (1 ),
95
+ Example : ` # Remove a catalog
96
+ docker mcp catalog rm old-servers` ,
79
97
RunE : func (_ * cobra.Command , args []string ) error {
80
98
return catalog .Rm (args [0 ])
81
99
},
@@ -85,7 +103,15 @@ func rmCatalogCommand() *cobra.Command {
85
103
func updateCatalogCommand () * cobra.Command {
86
104
return & cobra.Command {
87
105
Use : "update [name]" ,
88
- Short : "Update a specific catalog or all catalogs if no name is provided" ,
106
+ Short : "Update catalog(s) from remote sources" ,
107
+ Long : `Update one or more catalogs by re-downloading from their original sources.
108
+ If no name is provided, updates all catalogs that have remote sources.` ,
109
+ Args : cobra .MaximumNArgs (1 ),
110
+ Example : ` # Update all catalogs
111
+ docker mcp catalog update
112
+
113
+ # Update specific catalog
114
+ docker mcp catalog update team-servers` ,
89
115
RunE : func (cmd * cobra.Command , args []string ) error {
90
116
return catalog .Update (cmd .Context (), args )
91
117
},
@@ -97,9 +123,16 @@ func showCatalogCommand() *cobra.Command {
97
123
Format catalog.Format
98
124
}
99
125
cmd := & cobra.Command {
100
- Use : "show <name>" ,
101
- Short : "Show a catalog" ,
102
- Args : cobra .MaximumNArgs (1 ),
126
+ Use : "show [name]" ,
127
+ Short : "Display catalog contents" ,
128
+ Long : `Display the contents of a catalog including all server definitions and metadata.
129
+ If no name is provided, shows the Docker official catalog.` ,
130
+ Args : cobra .MaximumNArgs (1 ),
131
+ Example : ` # Show Docker's official catalog
132
+ docker mcp catalog show
133
+
134
+ # Show a specific catalog in JSON format
135
+ docker mcp catalog show my-catalog --format=json` ,
103
136
RunE : func (cmd * cobra.Command , args []string ) error {
104
137
name := catalog .DockerCatalogName
105
138
if len (args ) > 0 {
@@ -117,8 +150,14 @@ func showCatalogCommand() *cobra.Command {
117
150
func forkCatalogCommand () * cobra.Command {
118
151
return & cobra.Command {
119
152
Use : "fork <src-catalog> <new-name>" ,
120
- Short : "Fork a catalog" ,
153
+ Short : "Create a copy of an existing catalog" ,
154
+ Long : `Create a new catalog by copying all servers from an existing catalog. Useful for creating variations of existing catalogs.` ,
121
155
Args : cobra .ExactArgs (2 ),
156
+ Example : ` # Fork the Docker catalog to customize it
157
+ docker mcp catalog fork docker-mcp my-custom-docker
158
+
159
+ # Fork a team catalog for personal use
160
+ docker mcp catalog fork team-servers my-servers` ,
122
161
RunE : func (_ * cobra.Command , args []string ) error {
123
162
return catalog .Fork (args [0 ], args [1 ])
124
163
},
@@ -128,8 +167,14 @@ func forkCatalogCommand() *cobra.Command {
128
167
func createCatalogCommand () * cobra.Command {
129
168
return & cobra.Command {
130
169
Use : "create <name>" ,
131
- Short : "Create a new catalog" ,
170
+ Short : "Create a new empty catalog" ,
171
+ Long : `Create a new empty catalog for organizing custom MCP servers. The catalog will be stored locally and can be populated using 'docker mcp catalog add'.` ,
132
172
Args : cobra .ExactArgs (1 ),
173
+ Example : ` # Create a new catalog for development servers
174
+ docker mcp catalog create dev-servers
175
+
176
+ # Create a catalog for production monitoring tools
177
+ docker mcp catalog create prod-monitoring` ,
133
178
RunE : func (_ * cobra.Command , args []string ) error {
134
179
return catalog .Create (args [0 ])
135
180
},
@@ -139,8 +184,11 @@ func createCatalogCommand() *cobra.Command {
139
184
func initCatalogCommand () * cobra.Command {
140
185
return & cobra.Command {
141
186
Use : "init" ,
142
- Short : "Initialize the catalog" ,
187
+ Short : "Initialize the catalog system" ,
188
+ Long : `Initialize the local catalog management system by creating the necessary configuration files and directories.` ,
143
189
Args : cobra .NoArgs ,
190
+ Example : ` # Initialize catalog system
191
+ docker mcp catalog init` ,
144
192
RunE : func (cmd * cobra.Command , _ []string ) error {
145
193
return catalog .Init (cmd .Context ())
146
194
},
@@ -153,8 +201,15 @@ func addCatalogCommand() *cobra.Command {
153
201
}
154
202
cmd := & cobra.Command {
155
203
Use : "add <catalog> <server-name> <catalog-file>" ,
156
- Short : "Add a server to your catalog" ,
157
- Args : cobra .ExactArgs (3 ),
204
+ Short : "Add a server to a catalog" ,
205
+ Long : `Add an MCP server definition to an existing catalog by copying it from another catalog file.
206
+ The server definition includes all configuration, tools, and metadata.` ,
207
+ Args : cobra .ExactArgs (3 ),
208
+ Example : ` # Add a server from another catalog file
209
+ docker mcp catalog add my-catalog github-server ./github-catalog.yaml
210
+
211
+ # Add with force to overwrite existing server
212
+ docker mcp catalog add my-catalog slack-bot ./team-catalog.yaml --force` ,
158
213
RunE : func (_ * cobra.Command , args []string ) error {
159
214
parsedArgs := catalog .ParseAddArgs (args [0 ], args [1 ], args [2 ])
160
215
if err := catalog .ValidateArgs (* parsedArgs ); err != nil {
@@ -172,8 +227,11 @@ func resetCatalogCommand() *cobra.Command {
172
227
return & cobra.Command {
173
228
Use : "reset" ,
174
229
Aliases : []string {"empty" },
175
- Short : "Empty the catalog" ,
230
+ Short : "Reset the catalog system" ,
231
+ Long : `Reset the local catalog management system by removing all user-managed catalogs and configuration. This does not affect Docker's official catalog.` ,
176
232
Args : cobra .NoArgs ,
233
+ Example : ` # Reset all user catalogs
234
+ docker mcp catalog reset` ,
177
235
RunE : func (cmd * cobra.Command , _ []string ) error {
178
236
return catalog .Reset (cmd .Context ())
179
237
},
0 commit comments