Jira和Gmail容器封装脚本

提供Jira和Gmail集成的容器封装脚本,简化MCP服务器的容器生命周期管理。

  • by MrSantamaria
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 MrSantamaria/mcp_wrappers

使用说明

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代币:

  1. 首选https://id.atlassian.com/manage-profile/security/api-tokens
  2. 点击“创建API令牌”
  3. 复制令牌值

Claude代码和光标设置:

此包装器旨在跨多个MCP客户端(Claude Code、Cursor等)共享单个容器。容器在后台运行,每个客户端通过stdio传输连接到它。

  1. 设置环境变量 (添加到您的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
    
  2. 配置Claude代码 (~/.config/claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "jira": {
          "command": "/path/to/mcp_wrappers/confluence_jira_mcp_wrapper.sh"
        }
      }
    }
    
  3. 配置光标 (设置→ 特性→ 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卷中设置:

  1. 创建Docker卷: docker volume create mcp-gmail
  2. 复制您的 credentials.json 文件到卷(从启用Gmail API的Google云控制台获取)

Claude代码和光标设置:

此包装器旨在跨多个MCP客户端(Claude Code、Cursor等)共享单个容器。容器在后台运行,每个客户端通过stdio传输连接到它。

  1. 配置Claude代码 (~/.claude/settings.json):

    {
      "mcpServers": {
        "gmail": {
          "command": "/path/to/mcp_wrappers/gmail_mcp_wrapper.sh"
        }
      }
    }
    
  2. 配置光标 (设置→ 特性→ 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)

设置自动清理(推荐):

  1. 使清理脚本可执行(已完成): chmod +x cleanup_idle_containers.sh
  2. 加载启动服务:
    launchctl load ~/Library/LaunchAgents/com.user.mcp-cleanup.plist
    
  3. 验证它是否正在运行:
    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通信
  • 环境变量验证可确保在配置错误时显示清晰的错误消息