Shell执行服务器

MCP Shell Server是一款提供Shell执行和文件系统操作的服务器,支持多会话隔离,专为LibreChat设计。

  • by ptonelli
  • Python
  • 混合部署
  • 更新于
在 GitHub 查看 ptonelli/mcp-python

使用说明

MCP外壳服务器

一种模型上下文协议(MCP)服务器,提供shell执行和文件系统操作 多对话支持 LibreChat。

✨ 新增:多对话支持

此版本现在支持在与LibreChat一起使用时对每个对话进行适当的会话隔离。每个对话都有自己的工作目录状态,防止并行对话之间的冲突。

运作原理

服务器现在使用LibreChat的对话ID(可通过PR#9095获得)创建隔离会话:

  • 用途 {{LIBRECHAT_BODY_CONVERSATIONID}} header以获取唯一的对话ID
  • 每个对话都保持自己的工作目录状态
  • LibreChat中平行对话之间不再有冲突

LibreChat配置

将此添加到您的 librechat.yaml:

LibreChat配置

将此添加到您的 librechat.yamlThe X-Conversation-ID header对于在不同聊天之间隔离文件系统状态至关重要。

mcpServers:
  mcp-shell:
    type: streamable-http
    url: http://mcp-shell:8000/mcp
    headers:
      # 🎯 KEY: This enables per-conversation isolation
      X-Conversation-ID: "{{LIBRECHAT_BODY_CONVERSATIONID}}"
      # Optional: User context for logging
      X-User-ID: "{{LIBRECHAT_USER_ID}}"
    
    serverInstructions: |
      Shell execution server with per-conversation working directories.
      Each conversation maintains its own isolated file system state.
      Capabilities: shell execution, file reading/writing, git cloning.

Docker编写示例

将此服务添加到您的 docker-compose.yml:

services:
  mcp-shell:
    container_name: mcp-shell
    image: mcp-shell:latest
    build: .
    environment:
      - WORKDIR=/home/projects
      - HOST=0.0.0.0
      - PORT=8000
      - MCP_LOG_COMMANDS=1
    volumes:
      - ./projects:/home/projects

调试模式

集 MCP_LOG_COMMANDS=1 启用调试日志记录,显示:

  • 上下文对象检查(所有可用属性)
  • 会话ID解析逻辑
  • 从标头中检测会话ID
  • 工作目录分配

要在本地运行调试日志记录,请执行以下操作:

MCP_LOG_COMMANDS=1 python server.py

特性

  • 会话隔离:每个LibreChat对话都有自己的工作目录。
  • 文件操作:读取、写入、列出具有路径安全检查的文件。
  • Shell 执行:运行shell命令(支持Python venvs检测)。
  • Git支持:克隆存储库并自动切换上下文。