Skip to content

Commit 9de788a

Browse files
committed
Update docs on profiles and catalogs
- Remove references to http URI pointing at registry API - Add documentation about file:// for server entries
1 parent 82653f1 commit 9de788a

3 files changed

Lines changed: 57 additions & 47 deletions

File tree

cmd/docker-mcp/commands/catalog_next.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func createCatalogNextCommand() *cobra.Command {
6161
}
6262

6363
flags := cmd.Flags()
64-
flags.StringArrayVar(&opts.Servers, "server", []string{}, "Server to include specified with a URI: https:// (MCP Registry reference) or docker:// (Docker Image reference) or catalog:// (Catalog reference). Can be specified multiple times.")
64+
flags.StringArrayVar(&opts.Servers, "server", []string{}, "Server to include specified with a URI: docker:// (Docker Image reference), catalog:// (Catalog reference), or file:// (Local file path). Can be specified multiple times.")
6565
flags.StringVar(&opts.FromWorkingSet, "from-profile", "", "Profile ID to create the catalog from")
6666
flags.StringVar(&opts.FromLegacyCatalog, "from-legacy-catalog", "", "Legacy catalog URL to create the catalog from")
6767
flags.StringVar(&opts.Title, "title", "", "Title of the catalog")

cmd/docker-mcp/commands/workingset.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,15 @@ func createWorkingSetCommand(cfg *client.Config) *cobra.Command {
140140
Long: `Create a new profile that groups multiple MCP servers together.
141141
A profile allows you to organize and manage related servers as a single unit.
142142
Profiles are decoupled from catalogs. Servers can be:
143-
- MCP Registry references (e.g. http://registry.modelcontextprotocol.io/v0/servers/312e45a4-2216-4b21-b9a8-0f1a51425073)
144143
- OCI image references with docker:// prefix (e.g., "docker://my-server:latest"). Images must be self-describing.
145-
- Catalog references with catalog:// prefix (e.g., "catalog://mcp/docker-mcp-catalog/github+obsidian").`,
144+
- Catalog references with catalog:// prefix (e.g., "catalog://mcp/docker-mcp-catalog/github+obsidian").
145+
- Local file references with file:// prefix (e.g., "file://./server.yaml").`,
146146
Example: ` # Create a profile with servers from a catalog
147147
docker mcp profile create --name dev-tools --server catalog://mcp/docker-mcp-catalog/github+obsidian
148148
149149
# Create a profile with multiple servers (OCI references)
150150
docker mcp profile create --name my-profile --server docker://my-server:latest --server docker://my-other-server:latest
151151
152-
# Create a profile with MCP Registry references
153-
docker mcp profile create --name my-profile --server http://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860
154-
155152
# Connect to clients upon creation
156153
docker mcp profile create --name dev-tools --connect cursor`,
157154
Args: cobra.NoArgs,
@@ -169,7 +166,7 @@ Profiles are decoupled from catalogs. Servers can be:
169166
flags := cmd.Flags()
170167
flags.StringVar(&opts.Name, "name", "", "Name of the profile (required)")
171168
flags.StringVar(&opts.ID, "id", "", "ID of the profile (defaults to a slugified version of the name)")
172-
flags.StringArrayVar(&opts.Servers, "server", []string{}, "Server to include specified with a URI: https:// (MCP Registry reference) or docker:// (Docker Image reference) or catalog:// (Catalog reference). Can be specified multiple times.")
169+
flags.StringArrayVar(&opts.Servers, "server", []string{}, "Server to include specified with a URI: docker:// (Docker Image reference), catalog:// (Catalog reference), or file:// (Local file path). Can be specified multiple times.")
173170
flags.StringArrayVar(&opts.Connect, "connect", []string{}, fmt.Sprintf("Clients to connect to: mcp-client (can be specified multiple times). Supported clients: %s", client.GetSupportedMCPClients(*cfg)))
174171
_ = cmd.MarkFlagRequired("name")
175172

@@ -391,9 +388,6 @@ func addServerCommand() *cobra.Command {
391388
# Add servers with OCI references
392389
docker mcp profile server add my-profile --server docker://my-server:latest
393390
394-
# Add servers with MCP Registry references
395-
docker mcp profile server add my-profile --server http://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860
396-
397391
# Mix server references
398392
docker mcp profile server add dev-tools --server catalog://mcp/docker-mcp-catalog/github+obsidian --server docker://my-server:latest`,
399393
Args: cobra.ExactArgs(1),
@@ -409,7 +403,7 @@ func addServerCommand() *cobra.Command {
409403
}
410404

411405
flags := cmd.Flags()
412-
flags.StringArrayVar(&servers, "server", []string{}, "Server to include specified with a URI: https:// (MCP Registry reference) or docker:// (Docker Image reference) or catalog:// (Catalog reference). Can be specified multiple times.")
406+
flags.StringArrayVar(&servers, "server", []string{}, "Server to include specified with a URI: docker:// (Docker Image reference), catalog:// (Catalog reference), or file:// (Local file path). Can be specified multiple times.")
413407

414408
return cmd
415409
}

docs/profiles.md

Lines changed: 52 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ A profile is a named collection of MCP servers that can be:
1010
- Used to quickly switch between different server configurations
1111

1212
Profiles are decoupled from catalogs, meaning the servers in a profile can come from:
13-
- **MCP Registry references**: HTTP(S) URLs pointing to servers in the Model Context Protocol registry
1413
- **OCI image references**: Docker images with the `docker://` prefix
15-
16-
⚠️ **Important Caveat:** MCP Registry references are not fully implemented and are not expected to work yet.
14+
- **Catalog references**: Servers from existing catalogs with the `catalog://` prefix
15+
- **Local file references**: Server definitions from local YAML or JSON files with the `file://` prefix (see [Server Entry Specification](./server-entry-spec.md) for file format details)
1716

1817
## Enabling Profiles
1918

@@ -48,15 +47,20 @@ docker mcp profile create --name dev-tools \
4847
--server docker://my-server:latest \
4948
--server docker://my-other-server:latest
5049

51-
# Create with MCP Registry references
52-
docker mcp profile create --name registry-servers \
53-
--server https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860
50+
# Create with servers from a catalog
51+
docker mcp profile create --name catalog-servers \
52+
--server catalog://mcp/docker-mcp-catalog/github+slack
5453

55-
# Mix MCP Registry and OCI references
54+
# Mix catalog and OCI references
5655
docker mcp profile create --name mixed \
57-
--server https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860 \
56+
--server catalog://mcp/docker-mcp-catalog/github \
5857
--server docker://my-server:latest
5958

59+
# Create with servers from local files
60+
docker mcp profile create --name local-servers \
61+
--server file://./my-server.yaml \
62+
--server file://./another-server.json
63+
6064
# Specify a custom ID (otherwise derived from name)
6165
docker mcp profile create --name "My Servers" --id my-servers \
6266
--server docker://my-server:latest
@@ -66,9 +70,10 @@ docker mcp profile create --name "My Servers" --id my-servers \
6670
- `--name` is required and serves as the human-readable name
6771
- `--id` is optional; if not provided, it's generated from the name (lowercase, alphanumeric with hyphens)
6872
- `--server` can be specified multiple times to add multiple servers
69-
- Server references must be either:
70-
- `docker://` prefix for OCI images
71-
- `http://` or `https://` URLs for MCP Registry references
73+
- Server references must use one of these prefixes:
74+
- `docker://` for OCI images
75+
- `catalog://` for catalog references
76+
- `file://` for local YAML or JSON server definition files
7277

7378
### Adding Servers to a Profile
7479

@@ -80,32 +85,46 @@ docker mcp profile server add dev-tools \
8085
--server docker://my-server:latest \
8186
--server docker://my-other-server:latest
8287

83-
# Add servers with MCP Registry references
84-
docker mcp profile server add dev-tools \
85-
--server https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860
86-
87-
# Mix MCP Registry references and OCI references
88-
docker mcp profile server add dev-tools \
89-
--server https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860 \
90-
--server docker://my-server:latest
91-
9288
# Add servers from a catalog
9389
docker mcp profile server add dev-tools \
9490
--server catalog://mcp/docker-mcp-catalog/github+slack
9591

92+
# Add servers from local files
93+
docker mcp profile server add dev-tools \
94+
--server file://./my-server.yaml \
95+
--server file://./another-server.json
96+
9697
# Mix catalog servers with direct server references
9798
docker mcp profile server add dev-tools \
98-
--server catalog://mcp/docker-mcp-catalog/github
99+
--server catalog://mcp/docker-mcp-catalog/github \
99100
--server docker://my-server:latest
100101
```
101102

103+
**Local File Format:**
104+
105+
When using `file://`, the file should contain a server definition in YAML or JSON format:
106+
107+
```yaml
108+
# my-server.yaml
109+
name: my-custom-server
110+
title: My Custom Server
111+
type: server
112+
image: my-org/my-server:latest
113+
description: A custom MCP server
114+
allowHosts:
115+
- api.example.com:443
116+
```
117+
118+
See the [Server Entry Specification](./server-entry-spec.md) for complete file format documentation including configuration schemas, secrets, OAuth, and advanced options.
119+
102120
**Server References:**
103121
- Use `--server` flag for all server references (can be specified multiple times)
104122
- Server references must start with:
105-
- `catalog://` for catalog references. This takes the form of `catalog://<catalog-oci-refence>/<server-1>+<server-2>
123+
- `catalog://` for catalog references. This takes the form of `catalog://<catalog-oci-refence>/<server-1>+<server-2>`
106124
- `docker://` for OCI images
107-
- `http://` or `https://` for MCP Registry URLs
125+
- `file://` for local YAML or JSON server definition files (see [Server Entry Specification](./server-entry-spec.md))
108126
- Catalog servers are referenced by their name within the catalog
127+
- File references should point to either a single server definition or a legacy catalog file with a `registry` map
109128

110129
**Notes:**
111130
- You can add multiple servers in a single command
@@ -474,8 +493,6 @@ name: My Profile
474493
servers:
475494
- type: image
476495
image: mcp/github:latest
477-
- type: registry
478-
source: https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860
479496
config:
480497
key: value
481498
secrets: default
@@ -497,11 +514,7 @@ secrets:
497514
"servers": [
498515
{
499516
"type": "image",
500-
"image": "mcp/github:latest"
501-
},
502-
{
503-
"type": "registry",
504-
"source": "https://registry.modelcontextprotocol.io/v0/servers/71de5a2a-6cfb-4250-a196-f93080ecc860",
517+
"image": "mcp/github:latest",
505518
"config": {
506519
"key": "value"
507520
},
@@ -523,9 +536,8 @@ secrets:
523536
- **id**: Unique identifier for the profile
524537
- **name**: Human-readable name
525538
- **servers**: Array of server definitions
526-
- **type**: Either `image` or `registry`
527-
- **image**: (For type `image`) Docker image reference
528-
- **source**: (For type `registry`) MCP Registry URL
539+
- **type**: Currently only `image` is supported
540+
- **image**: Docker image reference
529541
- **config**: Optional configuration key-value pairs
530542
- **secrets**: Optional reference to a secrets configuration
531543
- **tools**: Optional list of specific tools to enable from this server
@@ -752,9 +764,10 @@ Error: unknown command "profile" for "docker mcp"
752764
Error: invalid server value: myserver
753765
```
754766

755-
**Solution**: Ensure server references use either:
756-
- `docker://` prefix for images
757-
- `http://` or `https://` for registry URLs
767+
**Solution**: Ensure server references use one of these prefixes:
768+
- `docker://` for images
769+
- `catalog://` for catalog references
770+
- `file://` for local server definition files
758771

759772
### Conflicting Flags
760773

@@ -911,6 +924,9 @@ docker mcp catalog create dev-catalog --title dev-tools --server catalog://mcp/d
911924
# Create a catalog with your own MCP server
912925
docker mcp catalog create my-catalog --title my-catalog --server docker://my-server:latest
913926
927+
# Create a catalog from a local server definition file
928+
docker mcp catalog create my-catalog --title my-catalog --server file://./my-server.yaml
929+
914930
# List all catalogs
915931
docker mcp catalog list
916932

0 commit comments

Comments
 (0)