Skip to content

Commit bb3cdd2

Browse files
authored
Merge pull request #21957 from docker/published-update
publish updates from main
2 parents 429aac4 + f2f023a commit bb3cdd2

File tree

6 files changed

+171
-21
lines changed

6 files changed

+171
-21
lines changed

_vale/Docker/Acronyms.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ exceptions:
7575
- LLDB
7676
- LTS
7777
- MAC
78+
- MCP
7879
- MDM
7980
- MDN
8081
- MSI
File renamed without changes.
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
---
2+
title: MCP
3+
description: Learn how to use MCP servers with Gordon
4+
keywords: ai, mcp, gordon
5+
---
6+
7+
## What is MCP?
8+
9+
Anthropic recently announced the [Model Context Protocol](https://www.anthropic.com/news/model-context-protocol) (MCP) specification, an open protocol that standardises how applications provide context to large language models. MCP functions as a client-server protocol, where the client (e.g., an application like Gordon) sends requests, and the server processes those requests to deliver the necessary context to the AI.
10+
11+
Gordon, along with other MCP clients like Claude Desktop, can interact with MCP servers running as containers. Docker has partnered with Anthropic to build container images for the [reference implementations](https://github.com/modelcontextprotocol/servers/) of MCP servers, available on Docker Hub under [the mcp namespace](https://hub.docker.com/u/mcp).
12+
13+
## Simple MCP server usage with Gordon
14+
15+
When you run the `docker ai` command in your terminal to ask a question, Gordon looks for a `gordon-mcp.yml` file in your working directory for a list of MCP servers that should be used when in that context. The `gordon-mcp.yml` file is a Docker Compose file that configures MCP servers as Compose services for Gordon to access.
16+
17+
The following minimal example shows how you can use the [mcp-time server](https://hub.docker.com/r/mcp/time) to provide temporal capabilities to Gordon. For more information, you can check out the [source code and documentation](https://github.com/modelcontextprotocol/servers/tree/main/src/time).
18+
19+
1. Create the `gordon-mcp.yml` file and add the time server:
20+
21+
```yaml
22+
services:
23+
time:
24+
image: mcp/time
25+
```
26+
27+
2. With this file you can now ask Gordon to tell you the time in another timezone:
28+
29+
```bash
30+
$ docker ai 'what time is it now in kiribati?'
31+
32+
• Calling get_current_time
33+
34+
The current time in Kiribati (Tarawa) is 9:38 PM on January 7, 2025.
35+
36+
```
37+
38+
39+
As you can see, Gordon found the MCP time server and called its tool when needed.
40+
41+
## Advanced usage
42+
43+
Some MCP servers need access to your filesystem or system environment variables. Docker Compose can help with this. Since `gordon-mcp.yml` is a Compose file you can add bind mounts using the regular Docker Compose syntax, which makes your filesystem resources available to the container:
44+
45+
```yaml
46+
services:
47+
fs:
48+
image: mcp/filesystem
49+
command:
50+
- /rootfs
51+
volumes:
52+
- .:/rootfs
53+
```
54+
55+
The `gordon-mcp.yml` file adds filesystem access capabilities to Gordon and since everything runs inside a container Gordon only has access to the directories you specify.
56+
57+
Gordon can handle any number of MCP servers. For example, if you give Gordon access to the internet with the `mcp/fetch` server:
58+
59+
```yaml
60+
services:
61+
fetch:
62+
image: mcp/fetch
63+
fs:
64+
image: mcp/filesystem
65+
command:
66+
- /rootfs
67+
volumes:
68+
- .:/rootfs
69+
```
70+
71+
You can now ask things like:
72+
73+
```bash
74+
$ docker ai can you fetch rumpl.dev and write the summary to a file test.txt
75+
76+
• Calling fetch ✔️
77+
• Calling write_file ✔️
78+
79+
The summary of the website rumpl.dev has been successfully written to the file test.txt in the allowed directory. Let me know if you need further assistance!
80+
81+
82+
$ cat test.txt
83+
The website rumpl.dev features a variety of blog posts and articles authored by the site owner. Here's a summary of the content:
84+
85+
1. **Wasmio 2023 (March 25, 2023)**: A recap of the WasmIO 2023 conference held in Barcelona. The author shares their experience as a speaker and praises the organizers for a successful event.
86+
87+
2. **Writing a Window Manager in Rust - Part 2 (January 3, 2023)**: The second part of a series on creating a window manager in Rust. This installment focuses on enhancing the functionality to manage windows effectively.
88+
89+
3. **2022 in Review (December 29, 2022)**: A personal and professional recap of the year 2022. The author reflects on the highs and lows of the year, emphasizing professional achievements.
90+
91+
4. **Writing a Window Manager in Rust - Part 1 (December 28, 2022)**: The first part of the series on building a window manager in Rust. The author discusses setting up a Linux machine and the challenges of working with X11 and Rust.
92+
93+
5. **Add docker/docker to your dependencies (May 10, 2020)**: A guide for Go developers on how to use the Docker client library in their projects. The post includes a code snippet demonstrating the integration.
94+
95+
6. **First (October 11, 2019)**: The inaugural post on the blog, featuring a simple "Hello World" program in Go.%
96+
97+
```
98+
99+
## What’s next?
100+
101+
Now that you’ve learned how to use MCP servers with Gordon, here are a few ways you can get started:
102+
103+
- Experiment: Try integrating one or more of the tested MCP servers into your `gordon-mcp.yml` file and explore their capabilities.
104+
1. Explore the ecosystem: Check out the [reference implementations on GitHub](https://github.com/modelcontextprotocol/servers/) or browse the [Docker Hub MCP namespace](https://hub.docker.com/u/mcp) for additional servers that might suit your needs.
105+
2. Build your own: If none of the existing servers meet your needs, or you’re curious about exploring how they work in more detail, consider developing a custom MCP server. Use the [MCP specification](https://www.anthropic.com/news/model-context-protocol) as a guide.
106+
3. Share your feedback: If you discover new servers that work well with Gordon or encounter issues with existing ones, [share your findings to help improve the ecosystem.](https://docker.qualtrics.com/jfe/form/SV_9tT3kdgXfAa6cWa)
107+
108+
With MCP support, Gordon offers powerful extensibility and flexibility to meet your specific use cases whether you’re adding temporal awareness, file management, or internet access.
109+
110+
### List of known working MCP Servers
111+
112+
These are the MCP servers that have been tested successfully with Gordon:
113+
114+
- `mcp/time`
115+
- `mcp/fetch`
116+
- `mcp/filesystem`
117+
- `mcp/postgres`
118+
- `mcp/git`
119+
- `mcp/sqlite`
120+
- `mcp/github`
121+
122+
### List of untested MCP servers
123+
124+
These are the MCP servers that were not tested but should work if given the appropriate API tokens:
125+
126+
- `mcp/brave-search`
127+
- `mcp/gdrive`
128+
- `mcp/slack`
129+
- `mcp/google-maps`
130+
- `mcp/gitlab`
131+
- `mcp/everything`
132+
- `mcp/aws-kb-retrieval-server`
133+
- `mcp/sentry`
134+
135+
### List of MCP servers that don’t work with Gordon
136+
137+
These are the MCP servers that are currently unsupported:
138+
139+
- `mcp/sequentialthinking` - The tool description is too long
140+
- `mcp/puppeteer` - Puppeteer sends back images and Gordon doesn’t know how to handle them, it only handles text responses from tools
141+
- `mcp/everart` - Everart sends back images and Gordon doesn’t know how to handle them, it only handles text responses from tools
142+
- `mcp/memory` - There is no way to configure the server to use a custom path for its knowledge base

content/manuals/docker-hub/usage/_index.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ The following table provides an overview of the included usage and limits for ea
2020
user type, subject to fair use:
2121

2222

23-
| User type | Pulls per month | Pull rate limit per hour | Public repositories | Public repository storage | Private repositories | Private repository storage |
24-
|--------------------------|-----------------|--------------------------|---------------------|---------------------------|----------------------|----------------------------|
25-
| Business (authenticated) | 1M | Unlimited | Unlimited | Unlimited | Unlimited | Up to 500 GB |
26-
| Team (authenticated) | 100K | Unlimited | Unlimited | Unlimited | Unlimited | Up to 50 GB |
27-
| Pro (authenticated) | 25K | Unlimited | Unlimited | Unlimited | Unlimited | Up to 5 GB |
28-
| Personal (authenticated) | Not applicable | 40 | Unlimited | Unlimited | Up to 1 | Up to 2 GB |
29-
| Unauthenticated users | Not applicable | 10 per IP address | Not applicable | Not applicable | Not applicable | Not applicable |
23+
| User type | Pulls per month | Pull rate limit per hour | Public repositories | Public repository storage | Private repositories | Private repository storage |
24+
|--------------------------|-----------------|----------------------------------------|---------------------|---------------------------|----------------------|----------------------------|
25+
| Business (authenticated) | 1M | Unlimited | Unlimited | Unlimited | Unlimited | Up to 500 GB |
26+
| Team (authenticated) | 100K | Unlimited | Unlimited | Unlimited | Unlimited | Up to 50 GB |
27+
| Pro (authenticated) | 25K | Unlimited | Unlimited | Unlimited | Unlimited | Up to 5 GB |
28+
| Personal (authenticated) | Not applicable | 40 | Unlimited | Unlimited | Up to 1 | Up to 2 GB |
29+
| Unauthenticated users | Not applicable | 10 per IPv4 address or IPv6 /64 subnet | Not applicable | Not applicable | Not applicable | Not applicable |
3030

3131
For more details, see the following:
3232

@@ -45,10 +45,10 @@ exhibiting excessive data and storage consumption.
4545

4646
Docker Hub has an abuse rate limit to protect the application and
4747
infrastructure. This limit applies to all requests to Hub properties including
48-
web pages, APIs, and image pulls. The limit is applied per-IP, and while the
49-
limit changes over time depending on load and other factors, it's in the order
50-
of thousands of requests per minute. The abuse limit applies to all users
51-
equally regardless of account level.
48+
web pages, APIs, and image pulls. The limit is applied per IPv4 address or per
49+
IPv6 /64 subnet, and while the limit changes over time depending on load and
50+
other factors, it's in the order of thousands of requests per minute. The abuse
51+
limit applies to all users equally regardless of account level.
5252

5353
You can differentiate between the pull rate limit and abuse rate limit by
5454
looking at the error code. The abuse limit returns a simple `429 Too Many

content/manuals/docker-hub/usage/pulls.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ The following pull usage and limits apply based on your subscription, subject to
2323
fair use:
2424

2525

26-
| User type | Pulls per month | Pull rate limit per hour |
27-
|--------------------------|-----------------|--------------------------|
28-
| Business (authenticated) | 1M | Unlimited |
29-
| Team (authenticated) | 100K | Unlimited |
30-
| Pro (authenticated) | 25K | Unlimited |
31-
| Personal (authenticated) | Not applicable | 40 |
32-
| Unauthenticated Users | Not applicable | 10 per IP address |
26+
| User type | Pulls per month | Pull rate limit per hour |
27+
|--------------------------|-----------------|----------------------------------------|
28+
| Business (authenticated) | 1M | Unlimited |
29+
| Team (authenticated) | 100K | Unlimited |
30+
| Pro (authenticated) | 25K | Unlimited |
31+
| Personal (authenticated) | Not applicable | 40 |
32+
| Unauthenticated Users | Not applicable | 10 per IPv4 address or IPv6 /64 subnet |
3333

3434
## Pull definition
3535

@@ -121,6 +121,13 @@ for information on authentication.
121121

122122
If you're using any third-party platforms, follow your provider’s instructions on using registry authentication.
123123

124+
> [!NOTE]
125+
>
126+
> When pulling images via a third-party platform, the platform may use the same
127+
> IPv4 address or IPv6 /64 subnet to pull images for multiple users. Even if you
128+
> are authenticated, pulls attributed to a single IPv4 address or IPv6 /64 subnet
129+
> may cause [abuse rate limiting](./_index.md#abuse-rate-limit).
130+
124131
- [Artifactory](https://www.jfrog.com/confluence/display/JFROG/Advanced+Settings#AdvancedSettings-RemoteCredentials)
125132
- [AWS CodeBuild](https://aws.amazon.com/blogs/devops/how-to-use-docker-images-from-a-private-registry-in-aws-codebuild-for-your-build-environment/)
126133
- [AWS ECS/Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html)
@@ -153,7 +160,6 @@ separated file with the following detailed information.
153160
| `version_checks` | The number of version checks accumulated for the date and hour of each image repository. Depending on the client, a pull can do a version check to verify the existence of an image or tag without downloading it. | This helps identify the frequency of version checks, which you can use to analyze usage trends and potential unexpected behaviors. |
154161
| `pulls` | The number of pulls accumulated for the date and hour of each image repository. | This helps identify the frequency of repository pulls, which you can use to analyze usage trends and potential unexpected behaviors. |
155162

156-
157163
## View hourly pull rate and limit
158164

159165
The pull rate limit is calculated on a per hour basis. There is no pull rate
@@ -215,4 +221,5 @@ To view your current pull rate and limit:
215221
is unlimited in partnership with a publisher, provider, or an open source
216222
organization. It could also mean that the user you are pulling as is part of a
217223
paid Docker plan. Pulling that image won't count toward pull rate limits if you
218-
don't see these headers.
224+
don't see these headers.
225+

content/manuals/security/for-admins/hardened-desktop/settings-management/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Using the `admin-settings.json` file, you can:
4545
- Turn off Docker Extensions
4646
- Turn off Docker Scout SBOM indexing
4747
- Turn off beta and experimental features
48-
- Turn off Docker AI ([Ask Gordon](../../../../desktop/features/gordon.md))
48+
- Turn off Docker AI ([Ask Gordon](../../../../desktop/features/gordon/_index.md))
4949
- Turn off Docker Desktop's onboarding survey
5050
- Control whether developers can use the Docker terminal
5151
- Control the file sharing implementation for your developers on macOS

0 commit comments

Comments
 (0)