使用说明
项目简介
MCP Shell Server 是一个简单的 MCP 服务器实现,它允许 LLM 客户端通过调用预设的 'shell_command' 工具来执行服务器端的 shell 命令。该服务器使用 Server-Sent Events (SSE) 协议与客户端通信,并通过 API 密钥进行简单的身份验证。
主要功能点
- Shell 命令执行: 提供 'shell_command' 工具,允许 LLM 客户端远程执行服务器操作系统的 shell 命令。
- MCP 协议支持: 基于 'fastmcp' 库构建,实现了基本的 MCP 协议交互。
- API 密钥认证: 通过简单的 API 密钥机制保护服务器接口。
- SSE 传输协议: 使用 Server-Sent Events 协议进行数据传输。
- 轻量级易部署: 代码简洁,易于理解和部署。
安装步骤
-
克隆仓库: 虽然仓库的 README 提供了 'git clone https://github.com/mark-oori/mcpserve/releases' 命令,但正确的克隆仓库命令应为:
git clone https://github.com/mark-oori/mcpserve cd mcpserve -
安装 Python 依赖: 虽然仓库中没有 'requirements.txt' 文件,但根据代码推测,可能需要安装 'fastmcp' 和 'dotenv' 库。建议使用 pip 安装:
pip install python-dotenv # 用于加载 .env 环境变量 # fastmcp 库可能需要手动安装或根据实际情况安装,如果运行报错再安装 # pip install fastmcp # 假设库名为 fastmcp,实际情况请查阅 fastmcp 文档如果 'fastmcp' 库无法直接安装,可能需要从其源代码仓库手动安装,或者该仓库已经包含了 'fastmcp' 库的必要代码。
-
配置环境变量:
- 在项目根目录下创建 '.env' 文件。
- 根据需要配置以下环境变量(示例):
注意: 'MCP_API_KEY' 是客户端连接服务器时需要提供的身份验证密钥,请务必设置并妥善保管。APP_NAME=MyMCPServer APP_DEBUG=True APP_LOG_LEVEL=DEBUG APP_PORT=8005 MCP_API_KEY=your_secret_api_key # 请替换为你自己的 API 密钥
-
运行 MCP 服务器:
python -m mcp.main或者,如果直接运行 'main.py' 文件:
python mcp/main.py服务器默认会在 '8005' 端口启动,并输出启动信息。
服务器配置 (MCP 客户端)
MCP 客户端需要配置以下信息以连接到 MCP Shell Server:
{ "serverName": "MCP Shell Server", "command": "python", "args": ["-m", "mcp.main"], "transport": "sse", "baseUrl": "http://localhost:8005", "headers": { "x-api-key": "your_secret_api_key" // 替换为 .env 文件中设置的 MCP_API_KEY } }
配置参数说明:
- '"serverName"': 服务器名称,可以自定义。
- '"command"': 启动服务器的命令,这里使用 'python'。
- '"args"': 启动命令的参数,'["-m", "mcp.main"]' 表示执行 'mcp' 模块下的 'main.py' 文件。
- '"transport"': 传输协议,设置为 'sse' (Server-Sent Events)。
- '"baseUrl"': 服务器的基础 URL,默认为本地的 '8005' 端口。如果服务器部署在远程,请修改为相应的 IP 地址或域名。
- '"headers"': HTTP 请求头,用于传递 API 密钥进行身份验证。'"x-api-key"' 字段的值需要与服务器 '.env' 文件中配置的 'MCP_API_KEY' 一致。
基本使用方法
-
启动 MCP Shell Server: 按照上述步骤在服务器端启动 MCP 服务器。
-
配置 MCP 客户端: 在 MCP 客户端中,根据上述提供的 JSON 配置信息配置服务器连接。确保 '"headers"' 中的 'x-api-key' 与服务器端配置一致。
-
客户端调用工具: 在 MCP 客户端中,可以使用类似以下的 JSON-RPC 请求来调用 'shell_command' 工具执行 shell 命令:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "shell_command", "arguments": { "command": "ls -l" // 要执行的 shell 命令,例如列出当前目录文件 } }, "id": 1 }服务器会执行 'ls -l' 命令,并将命令执行结果作为 JSON-RPC 响应返回给客户端。
注意:
- 安全性: 'shell_command' 工具具有潜在的安全风险,因为它允许 LLM 客户端执行任意 shell 命令。在生产环境中使用时,请务必谨慎,并考虑更严格的权限控制和安全措施。例如,可以限制允许执行的命令类型,或者增加更完善的身份验证和授权机制。
- 错误处理: 示例代码中的错误处理较为简单。在实际应用中,应根据需要完善错误处理机制,以便更好地处理命令执行失败等情况。
- 依赖库: 请根据实际运行情况安装 'fastmcp' 和其他必要的 Python 库。
信息
分类
桌面与硬件