使用说明
MCP包装
模型上下文协议(MCP)服务器的容器包装脚本。
概述
此存储库包含包装器脚本,可简化使用Docker在容器中运行MCP服务器的过程。这些脚本自动处理容器生命周期管理(创建、启动和连接)。
脚本
conference_jira_mcp_wrapper.sh
Atlassian MCP服务器的包装脚本,提供Jira集成功能。
特征:
- 如果容器不存在,则自动拉取并创建容器
- 如果容器停止,则启动容器
- 使用MCP stdio传输连接到容器
- 支持Jira操作:搜索、获取问题、创建问题、更新问题和添加评论
先决条件:
配置参考:
所有配置都是通过环境变量完成的:
| 变量 | 必填 | 示例 | 描述 |
|---|---|---|---|
JIRA_EMAIL |
是的 | user@example.com |
您的Jira帐户电子邮件 |
JIRA_API_TOKEN |
是的 | ATPA... |
来自Jira的个人API令牌 |
JIRA_URL |
是的 | https://company.atlassian.net |
您的Jira实例URL |
重要提示: 使脚本可执行:
chmod +x confluence_jira_mcp_wrapper.sh
获取Jira API代币:
- 首选https://id.atlassian.com/manage-profile/security/api-tokens
- 点击“创建API令牌”
- 复制令牌值
Claude代码和光标设置:
此包装器旨在跨多个MCP客户端(Claude Code、Cursor等)共享单个容器。容器在后台运行,每个客户端通过stdio传输连接到它。
-
设置环境变量 (添加到您的shell配置文件中,如
~/.zshrc或~/.bashrc):export JIRA_EMAIL="your.email@example.com" export JIRA_API_TOKEN="your-api-token-here" export JIRA_URL="https://your-company.atlassian.net" # Required: Your Jira instance URL -
配置Claude代码 (
~/.config/claude/claude_desktop_config.json):{ "mcpServers": { "jira": { "command": "/path/to/mcp_wrappers/confluence_jira_mcp_wrapper.sh" } } } -
配置光标 (设置→ 特性→ MCP或
.cursor/mcp.json):{ "mcpServers": { "jira": { "command": "/path/to/mcp_wrappers/confluence_jira_mcp_wrapper.sh" } } }
它是如何工作的:
- 第一个连接的客户端将创建并启动容器
- 后续客户端连接到同一个正在运行的容器
- 在Claude Code和Cursor之间切换时不需要重新启动容器
- 每个客户端都有自己的到容器的stdio连接
手动使用:
export JIRA_EMAIL="your.email@example.com"
export JIRA_API_TOKEN="your-api-token-here"
export JIRA_URL="https://your-company.atlassian.net"
./confluence_jira_mcp_wrapper.sh
配置:
该脚本配置用于:
- 容器图像:
ghcr.io/sooperset/mcp-atlassian:latest - 容器名称:
jira-mcp - Jira URL:可通过配置
JIRA_URL环境变量 - 端口绑定:
127.0.0.1:9000:9000 - 启用的工具:jira_search、jira_get_issue、jira_create_issue和jira_update_issue
- 只读模式:已禁用
gmail_mcp_wrapper.sh
提供Gmail集成功能的Gmail MCP服务器的包装脚本。
特征:
- 如果容器不存在,则自动拉取并创建容器
- 如果容器停止,则启动容器
- 使用MCP stdio传输连接到容器
- 支持Gmail操作:搜索、阅读、发送、草稿、标签、过滤器和附件
- 60分钟不活动后自动清理
先决条件:
Gmail凭据必须在Docker卷中设置:
- 创建Docker卷:
docker volume create mcp-gmail - 复制您的
credentials.json文件到卷(从启用Gmail API的Google云控制台获取)
Claude代码和光标设置:
此包装器旨在跨多个MCP客户端(Claude Code、Cursor等)共享单个容器。容器在后台运行,每个客户端通过stdio传输连接到它。
-
配置Claude代码 (
~/.claude/settings.json):{ "mcpServers": { "gmail": { "command": "/path/to/mcp_wrappers/gmail_mcp_wrapper.sh" } } } -
配置光标 (设置→ 特性→ MCP或
.cursor/mcp.json):{ "mcpServers": { "gmail": { "command": "/path/to/mcp_wrappers/gmail_mcp_wrapper.sh" } } }
它是如何工作的:
- 第一个连接的客户端将创建并启动容器
- 后续客户端连接到同一个正在运行的容器
- 在Claude Code和Cursor之间切换时不需要重新启动容器
- 每个客户端都有自己的到容器的stdio连接
- 容器在60分钟不活动后自动清理
配置:
该脚本配置用于:
- 容器图像:
mcp/gmail - 容器名称:
gmail-mcp - 卷装载:
mcp-gmail:/gmail-server - 凭据路径:
/gmail-server/credentials.json - 调试日志记录:已启用(
DEBUG=*)
集装箱自动清理
MCP容器使用持久模式进行快速重新连接,但在空闲时间后会自动清理:
它是如何工作的:
- 容器在积极使用时保持运行
- 60分钟不活动后,自动删除
- 下一次克劳德会议立即重现了它们
配置空闲超时:
export MCP_IDLE_TIMEOUT=3600 # seconds (default: 1 hour)
设置自动清理(推荐):
- 使清理脚本可执行(已完成):
chmod +x cleanup_idle_containers.sh - 加载启动服务:
launchctl load ~/Library/LaunchAgents/com.user.mcp-cleanup.plist - 验证它是否正在运行:
launchctl list | grep mcp-cleanup
替代手动清理: 需要时运行清理脚本:
./cleanup_idle_containers.sh
检查正在运行的容器:
docker ps --filter "label=auto_cleanup=true"
禁用自动清理:
launchctl unload ~/Library/LaunchAgents/com.user.mcp-cleanup.plist
需求
- Docker已安装并配置
- 网络访问以提取容器图像
- 有效的Jira凭据、API令牌和URL(用于Jira包装)
- 启用Gmail API的Google云凭据(用于Gmail包装)
故障排除
Jira包装问题
“连接被拒绝”或JSON解析错误:
- 确保设置了环境变量:
env | grep JIRA - 验证脚本是否可执行:
ls -la *.sh - 测试证书:
curl -u $JIRA_EMAIL:$JIRA_API_TOKEN $JIRA_URL/rest/api/3/myself
找不到脚本或权限被拒绝:
- 使其可执行:
chmod +x confluence_jira_mcp_wrapper.sh - 在Claude Code配置中使用绝对路径:
~/.claude.json
容器无法启动:
- 检查日志:
docker logs jira-mcp - 删除并重新创建:
docker rm -f jira-mcp然后重新启动Claude Code
环境变量错误:
- 检查所有三个变量是否已设置:
JIRA_EMAIL,JIRA_API_TOKEN,JIRA_URL - 重新加载您的shell配置文件:
source ~/.zshrc(或~/.bashrc) - 验证JIRA_URL格式:必须以开头
http://或https://
备注
- 容器配置有
--restart=unless-stopped用于自动重启(仅限Jira) - 包装器使用stdio传输进行MCP通信
- 环境变量验证可确保在配置错误时显示清晰的错误消息
