MCP 外设服务器
本项目是一个Model Context Protocol (MCP) 服务器,旨在通过标准化的API让大型语言模型 (LLM) 客户端能够无缝地与计算机连接的各种外设进行交互。
主要功能点
该服务器通过MCP工具暴露了以下功能:
- 摄像头控制: 列出可用摄像头、获取摄像头信息、拍照、开始/停止视频录制。
- 打印管理: 列出可用打印机、发送文件进行打印、将文件打印为PDF、获取打印作业状态、取消打印作业。
- 音频能力: 列出音频输入/输出设备、从麦克风录制音频、停止音频录制、通过扬声器播放音频文件。
- 屏幕捕获: 列出连接的显示器、截取屏幕截图、开始/停止屏幕录制。
安装步骤
-
安装系统依赖: 需要安装FFMPEG(用于屏幕和摄像头录制)和PortAudio(用于音频录制)。安装方法取决于你的操作系统:
- macOS: 打开终端执行 'brew install ffmpeg portaudio'
- Linux (Ubuntu/Debian): 打开终端执行 'sudo apt update && sudo apt install ffmpeg portaudio19-dev'
- Linux (Fedora): 打开终端执行 'sudo dnf install ffmpeg portaudio-devel'
- Windows: 打开PowerShell执行 'winget install ffmpeg' (PortAudio通常包含在Python库中或通过其他方式安装)
-
克隆代码仓库: 打开终端或命令提示符,执行:
git clone https://github.com/akshitsinha/mcp-device-server.git cd mcp-device-server -
安装Python依赖: 确保你已安装 uv 或 pip 工具。在项目目录下执行:
uv sync # 或者使用 pip # pip install -r requirements.txt
服务器配置
该MCP服务器可以通过环境变量或项目根目录下的 '.env' 文件进行配置。主要配置选项包括:
- 'MCP_HOST': 服务器监听的IP地址 (默认: 127.0.0.1)
- 'MCP_PORT': 服务器监听的端口 (默认: 8000)
- 'MCP_ENABLE_CAMERA': 是否启用摄像头功能 (默认: true)
- 'MCP_ENABLE_PRINTER': 是否启用打印机功能 (默认: true)
- 'MCP_ENABLE_AUDIO': 是否启用音频功能 (默认: true)
- 'MCP_ENABLE_SCREEN': 是否启用屏幕功能 (默认: true)
对于MCP客户端(如Claude Desktop),你需要将此服务器添加到客户端的配置文件中。以下是配置示例及其说明(请将 '/path/to/mcp-device-server' 替换为你的实际项目路径):
{ "mcpServers": { "mcp-device-server": { "command": "uv", "args": [ "--directory", "/path/to/mcp-device-server", "run", "src/main.py" ] } } }
- '"mcp-device-server"': 这是你在MCP客户端中为此服务器指定的名称,可以自定义。
- '"command": "uv"': 启动服务器的可执行程序命令。如果你没有安装 'uv',并且使用 'pip install -r requirements.txt' 安装的依赖,你可能需要使用 'python' 作为命令。
- '"args": [...]': 传递给启动命令的参数列表。
- '"--directory", "/path/to/mcp-device-server"': 指定运行命令的目录为你的项目路径。请务必修改 '/path/to/mcp-device-server'。
- '"run", "src/main.py"': 如果使用 'uv',这是运行 'src/main.py' 文件的命令。如果使用 'python' 命令,args 可能只需要 '"src/main.py"'。
配置完成后,重启你的MCP客户端以加载服务器。
基本使用方法
安装并配置好服务器后,LLM客户端即可发现并使用该服务器提供的工具。你可以通过LLM客户端的界面或指令来调用这些工具,例如:
- 询问LLM:“列出我连接的摄像头。” (调用 'list_cameras' 工具)
- 询问LLM:“帮我用默认打印机打印文件 'report.pdf'。” (调用 'print_file' 工具,需要你提供文件内容)
- 询问LLM:“从麦克风录制10秒钟的音频。” (调用 'record_audio' 工具)
- 询问LLM:“截取我的主屏幕。” (调用 'capture_screenshot' 工具)
LLM会根据你的指令选择合适的工具并执行,然后将工具的执行结果反馈给你。
信息
分类
桌面与硬件