feat: add mcp-servers/**
This commit is contained in:
17
mcp-servers/dockerhub/.env.example
Normal file
17
mcp-servers/dockerhub/.env.example
Normal file
@@ -0,0 +1,17 @@
|
||||
# Docker image version
|
||||
DOCKERHUB_MCP_VERSION=latest
|
||||
|
||||
# Host port override
|
||||
DOCKERHUB_MCP_PORT_OVERRIDE=8000
|
||||
|
||||
# Docker Hub username (optional, for authentication)
|
||||
DOCKERHUB_USERNAME=
|
||||
|
||||
# Docker Hub password (optional, for authentication)
|
||||
DOCKERHUB_PASSWORD=
|
||||
|
||||
# Docker Hub access token (recommended for authentication)
|
||||
DOCKERHUB_TOKEN=
|
||||
|
||||
# Timezone
|
||||
TZ=UTC
|
||||
185
mcp-servers/dockerhub/README.md
Normal file
185
mcp-servers/dockerhub/README.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# Docker Hub MCP Server
|
||||
|
||||
Docker Hub MCP Server provides integration with Docker Hub through the Model Context Protocol, enabling image search, query, and management capabilities.
|
||||
|
||||
## Features
|
||||
|
||||
- 🔍 **Image Search** - Search for images on Docker Hub
|
||||
- 📊 **Image Info** - Get detailed image information
|
||||
- 🏷️ **Tag Management** - View image tags
|
||||
- 📈 **Statistics** - View download counts and stars
|
||||
- 👤 **User Management** - Manage Docker Hub account
|
||||
- 📝 **Repository Info** - Repository information queries
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
| ----------------------------- | -------- | ---------------------------------------------- |
|
||||
| `DOCKERHUB_MCP_VERSION` | `latest` | Docker image version |
|
||||
| `DOCKERHUB_MCP_PORT_OVERRIDE` | `8000` | Service port |
|
||||
| `DOCKERHUB_USERNAME` | - | Docker Hub username (optional, for auth) |
|
||||
| `DOCKERHUB_PASSWORD` | - | Docker Hub password (optional, for auth) |
|
||||
| `DOCKERHUB_TOKEN` | - | Docker Hub access token (recommended for auth) |
|
||||
| `TZ` | `UTC` | Timezone |
|
||||
|
||||
## Authentication Methods
|
||||
|
||||
The service supports three authentication methods:
|
||||
|
||||
### 1. No Authentication (Public Access)
|
||||
|
||||
Only public images and information can be accessed.
|
||||
|
||||
### 2. Username & Password Authentication
|
||||
|
||||
```env
|
||||
DOCKERHUB_USERNAME=your_username
|
||||
DOCKERHUB_PASSWORD=your_password
|
||||
```
|
||||
|
||||
### 3. Access Token Authentication (Recommended)
|
||||
|
||||
```env
|
||||
DOCKERHUB_TOKEN=your_access_token
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Configure Environment
|
||||
|
||||
Create a `.env` file:
|
||||
|
||||
#### No Authentication Mode (Public Access Only)
|
||||
|
||||
```env
|
||||
DOCKERHUB_MCP_VERSION=latest
|
||||
DOCKERHUB_MCP_PORT_OVERRIDE=8000
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
#### Token Authentication Mode (Recommended)
|
||||
|
||||
```env
|
||||
DOCKERHUB_MCP_VERSION=latest
|
||||
DOCKERHUB_MCP_PORT_OVERRIDE=8000
|
||||
DOCKERHUB_TOKEN=dckr_pat_your_token_here
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
### 2. Get Docker Hub Access Token
|
||||
|
||||
1. Login to [Docker Hub](https://hub.docker.com/)
|
||||
2. Click avatar → **Account Settings**
|
||||
3. Navigate to **Security** → **Access Tokens**
|
||||
4. Click **New Access Token**
|
||||
5. Set permissions (read-only recommended)
|
||||
6. Generate and copy the token
|
||||
|
||||
### 3. Start Service
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 4. Verify Service
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
- Minimum memory: 128MB
|
||||
- Recommended memory: 512MB
|
||||
- CPU: 0.25-1.0 cores
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
1. **Image Search** - Search for Docker images suitable for projects
|
||||
2. **Version Query** - View all available tags for an image
|
||||
3. **Dependency Analysis** - Analyze base images and dependencies
|
||||
4. **Security Check** - View image security scan reports
|
||||
5. **Download Statistics** - Check image popularity
|
||||
|
||||
## API Features
|
||||
|
||||
The MCP server provides the following main features:
|
||||
|
||||
- ✅ Search public and private images
|
||||
- ✅ Get image tag lists
|
||||
- ✅ View detailed image information
|
||||
- ✅ Query repository statistics
|
||||
- ✅ Check for image updates
|
||||
- ✅ View Dockerfiles
|
||||
|
||||
## Permission Types
|
||||
|
||||
### Read-Only Token Permissions
|
||||
|
||||
Recommended for most query operations:
|
||||
|
||||
- ✅ Search images
|
||||
- ✅ View image information
|
||||
- ✅ Get tag lists
|
||||
- ❌ Push images
|
||||
- ❌ Delete images
|
||||
|
||||
### Read-Write Token Permissions
|
||||
|
||||
For management operations:
|
||||
|
||||
- ✅ All read-only operations
|
||||
- ✅ Push images
|
||||
- ✅ Delete images
|
||||
- ✅ Update repository settings
|
||||
|
||||
## Security Recommendations
|
||||
|
||||
⚠️ **Important**:
|
||||
|
||||
1. **Prefer Access Tokens**: More secure than passwords
|
||||
2. **Least Privilege**: Only grant necessary permissions
|
||||
3. **Regular Rotation**: Update access tokens regularly
|
||||
4. **Protect Environment Variables**: Don't commit `.env` to version control
|
||||
5. **Monitor Access**: Regularly check token usage
|
||||
6. **Use Read-Only Tokens**: Unless write access is needed
|
||||
|
||||
## Rate Limits
|
||||
|
||||
Docker Hub has API rate limits:
|
||||
|
||||
- **Unauthenticated**: 100 requests/6 hours
|
||||
- **Free Account**: 200 requests/6 hours
|
||||
- **Paid Account**: Higher rate limits
|
||||
|
||||
Authentication is recommended for higher rate limits.
|
||||
|
||||
## References
|
||||
|
||||
- [Docker Hub Official Site](https://hub.docker.com/)
|
||||
- [Docker Hub API Documentation](https://docs.docker.com/docker-hub/api/latest/)
|
||||
- [MCP Documentation](https://modelcontextprotocol.io/)
|
||||
|
||||
## License
|
||||
|
||||
MIT License
|
||||
|
||||
通过 AI 可以进行以下查询:
|
||||
|
||||
1. "搜索 nginx 相关的镜像"
|
||||
2. "查看 python:3.11 镜像的所有标签"
|
||||
3. "获取 redis:alpine 镜像的详细信息"
|
||||
4. "查找最流行的 PostgreSQL 镜像"
|
||||
5. "比较不同 Node.js 镜像的大小"
|
||||
|
||||
## 参考链接
|
||||
|
||||
- [Docker Hub](https://hub.docker.com/)
|
||||
- [Docker Hub API 文档](https://docs.docker.com/docker-hub/api/latest/)
|
||||
- [Docker Hub 访问令牌](https://docs.docker.com/docker-hub/access-tokens/)
|
||||
- [MCP 官方文档](https://modelcontextprotocol.io/)
|
||||
- [Docker Hub - mcp/dockerhub](https://hub.docker.com/r/mcp/dockerhub)
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
165
mcp-servers/dockerhub/README.zh.md
Normal file
165
mcp-servers/dockerhub/README.zh.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Docker Hub MCP Server
|
||||
|
||||
Docker Hub MCP Server 提供通过模型上下文协议(MCP)与 Docker Hub 集成的能力,实现镜像搜索、查询和管理功能。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 🔍 **镜像搜索** - 在 Docker Hub 上搜索镜像
|
||||
- 📊 **镜像信息** - 获取详细的镜像信息
|
||||
- 🏷️ **标签管理** - 查看镜像标签
|
||||
- 📈 **统计信息** - 查看下载量和星标数
|
||||
- 👤 **用户管理** - 管理 Docker Hub 账户
|
||||
- 📝 **仓库信息** - 仓库信息查询
|
||||
|
||||
## 环境变量
|
||||
|
||||
| 变量 | 默认值 | 说明 |
|
||||
| ----------------------------- | -------- | ----------------------------------- |
|
||||
| `DOCKERHUB_MCP_VERSION` | `latest` | Docker 镜像版本 |
|
||||
| `DOCKERHUB_MCP_PORT_OVERRIDE` | `8000` | 服务端口 |
|
||||
| `DOCKERHUB_USERNAME` | - | Docker Hub 用户名(可选,用于认证) |
|
||||
| `DOCKERHUB_PASSWORD` | - | Docker Hub 密码(可选,用于认证) |
|
||||
| `DOCKERHUB_TOKEN` | - | Docker Hub 访问令牌(推荐用于认证) |
|
||||
| `TZ` | `UTC` | 时区 |
|
||||
|
||||
## 认证方式
|
||||
|
||||
该服务支持三种认证方式:
|
||||
|
||||
### 1. 无认证(公开访问)
|
||||
|
||||
仅能访问公开镜像和信息。
|
||||
|
||||
### 2. 用户名和密码认证
|
||||
|
||||
```env
|
||||
DOCKERHUB_USERNAME=your_username
|
||||
DOCKERHUB_PASSWORD=your_password
|
||||
```
|
||||
|
||||
### 3. 访问令牌认证(推荐)
|
||||
|
||||
```env
|
||||
DOCKERHUB_TOKEN=your_access_token
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 配置环境
|
||||
|
||||
创建 `.env` 文件:
|
||||
|
||||
#### 无认证模式(仅公开访问)
|
||||
|
||||
```env
|
||||
DOCKERHUB_MCP_VERSION=latest
|
||||
DOCKERHUB_MCP_PORT_OVERRIDE=8000
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
#### 令牌认证模式(推荐)
|
||||
|
||||
```env
|
||||
DOCKERHUB_MCP_VERSION=latest
|
||||
DOCKERHUB_MCP_PORT_OVERRIDE=8000
|
||||
DOCKERHUB_TOKEN=dckr_pat_your_token_here
|
||||
TZ=Asia/Shanghai
|
||||
```
|
||||
|
||||
### 2. 获取 Docker Hub 访问令牌
|
||||
|
||||
1. 登录 [Docker Hub](https://hub.docker.com/)
|
||||
2. 点击头像 → **Account Settings**
|
||||
3. 导航到 **Security** → **Access Tokens**
|
||||
4. 点击 **New Access Token**
|
||||
5. 设置权限(推荐只读权限)
|
||||
6. 生成并复制令牌
|
||||
|
||||
### 3. 启动服务
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 4. 验证服务
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
## 资源需求
|
||||
|
||||
- 最小内存:128MB
|
||||
- 推荐内存:512MB
|
||||
- CPU:0.25-1.0 核心
|
||||
|
||||
## 常见使用场景
|
||||
|
||||
1. **镜像搜索** - 搜索适合项目的 Docker 镜像
|
||||
2. **版本查询** - 查看镜像的所有可用标签
|
||||
3. **依赖分析** - 分析镜像的基础镜像和依赖
|
||||
4. **安全检查** - 查看镜像的安全扫描报告
|
||||
5. **下载统计** - 查看镜像的受欢迎程度
|
||||
|
||||
## API 功能
|
||||
|
||||
该 MCP 服务器提供以下主要功能:
|
||||
|
||||
- ✅ 搜索公开和私有镜像
|
||||
- ✅ 获取镜像标签列表
|
||||
- ✅ 查看镜像详细信息
|
||||
- ✅ 查询仓库统计信息
|
||||
- ✅ 检查镜像更新
|
||||
- ✅ 查看 Dockerfiles
|
||||
|
||||
## 权限类型
|
||||
|
||||
### 只读令牌权限
|
||||
|
||||
推荐用于大多数查询操作:
|
||||
|
||||
- ✅ 搜索镜像
|
||||
- ✅ 查看镜像信息
|
||||
- ✅ 获取标签列表
|
||||
- ❌ 推送镜像
|
||||
- ❌ 删除镜像
|
||||
|
||||
### 读写令牌权限
|
||||
|
||||
用于管理操作:
|
||||
|
||||
- ✅ 所有只读操作
|
||||
- ✅ 推送镜像
|
||||
- ✅ 删除镜像
|
||||
- ✅ 更新仓库设置
|
||||
|
||||
## 安全建议
|
||||
|
||||
⚠️ **重要**:
|
||||
|
||||
1. **优先使用访问令牌**:比密码更安全
|
||||
2. **最小权限原则**:只授予必要的权限
|
||||
3. **定期轮换**:定期更新访问令牌
|
||||
4. **保护环境变量**:不要将 `.env` 提交到版本控制
|
||||
5. **监控访问**:定期检查令牌使用情况
|
||||
6. **使用只读令牌**:除非需要写权限
|
||||
|
||||
## 速率限制
|
||||
|
||||
Docker Hub 有 API 速率限制:
|
||||
|
||||
- **未认证**:100 次请求 / 6 小时
|
||||
- **免费账户**:200 次请求 / 6 小时
|
||||
- **付费账户**:更高的速率限制
|
||||
|
||||
建议使用认证以获得更高的速率限制。
|
||||
|
||||
## 参考链接
|
||||
|
||||
- [Docker Hub 官方网站](https://hub.docker.com/)
|
||||
- [Docker Hub API 文档](https://docs.docker.com/docker-hub/api/latest/)
|
||||
- [MCP 文档](https://modelcontextprotocol.io/)
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
34
mcp-servers/dockerhub/docker-compose.yaml
Normal file
34
mcp-servers/dockerhub/docker-compose.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
x-default: &default
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 100m
|
||||
max-file: "3"
|
||||
|
||||
services:
|
||||
dockerhub:
|
||||
<<: *default
|
||||
image: mcp/dockerhub:${DOCKERHUB_MCP_VERSION:-latest}
|
||||
environment:
|
||||
- DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME}
|
||||
- DOCKERHUB_PASSWORD=${DOCKERHUB_PASSWORD}
|
||||
- DOCKERHUB_TOKEN=${DOCKERHUB_TOKEN}
|
||||
- MCP_HOST=0.0.0.0
|
||||
- TZ=${TZ:-UTC}
|
||||
ports:
|
||||
- "${DOCKERHUB_MCP_PORT_OVERRIDE:-8000}:8000"
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.00'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 128M
|
||||
Reference in New Issue
Block a user