使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的本地工具服务器实现,旨在为本地大型语言模型 (LLM) 应用提供标准化的工具调用能力。它集成了天气查询、谷歌搜索和摄像头控制等实用工具,并可通过灵活的配置进行功能扩展。
主要功能点
- 天气查询:通过高德地图API获取指定城市的天气信息。
- 谷歌搜索:使用Selenium驱动Chrome浏览器进行谷歌搜索,并返回搜索结果。
- 摄像头控制:调用本地摄像头拍照,并将照片保存到本地。
- 工具代理:通过代理服务器统一管理和调用多个工具服务。
- 高度可配置:支持通过配置文件灵活扩展和定制工具功能。
- 易于部署:采用 Python 开发,配置简单,易于本地部署和运行。
安装步骤
-
克隆仓库
git clone https://github.com/Dreamboat-Rachel/MCP-Server-For-Local.git cd MCP-Server-For-Local -
创建并激活虚拟环境
# 创建虚拟环境 python -m venv .venv # 激活虚拟环境 (Windows) .venv\Scripts\activate # 激活虚拟环境 (Linux/MacOS) source .venv/bin/activate -
安装依赖
pip install -r requirements.txt -
配置环境变量
- 创建 '.env' 文件,并根据需要配置以下环境变量:
- 'DASHSCOPE_API_KEY': DashScope API Key (用于客户端与DashScope模型交互,common_client.py中用到)
- 'MODEL': 使用的DashScope模型名称,默认为 'qwen-max' (common_client.py中用到)
- 'GAODE_API_KEY': 高德地图API Key (用于天气查询服务,server/weather_server.py中用到)
- 'CHROME_PATH': Chrome浏览器可执行文件路径 (用于谷歌搜索服务,server/google_search_server.py中用到,如果Chrome已在默认路径,则无需配置)
- 'CHROMEDRIVER_PATH': ChromeDriver可执行文件路径 (用于谷歌搜索服务,server/google_search_server.py中用到,如果ChromeDriver已在默认路径,则无需配置)
- 'PROXY': 代理服务器地址,例如 'http://your_proxy:port' (用于谷歌搜索服务,server/google_search_server.py中用到,如果不需要代理,则无需配置)
- 'IMAGE_SAVE_PATH': 摄像头照片保存路径,默认为当前目录 (用于摄像头控制服务,server/capture_server.py中用到)
- 创建 '.env' 文件,并根据需要配置以下环境变量:
服务器配置
本MCP服务器包含多个独立的工具服务和一个代理服务器。客户端需要配置代理服务器的启动命令才能连接并使用所有工具。
代理服务器配置 (proxy_server.py):
{ "server name": "ProxyServer", "command": "python", "args": ["server/proxy_server.py"] }
配置说明:
- '"server name"': 服务器名称,客户端配置中用于标识服务器。
- '"command"': 启动服务器的命令,这里使用 'python' 解释器。
- '"args"': 启动命令的参数,指定代理服务器脚本的路径 'server/proxy_server.py'。
注意: 客户端只需要配置代理服务器,代理服务器会自动加载和管理其他工具服务器。工具服务器的配置信息在 'server/proxy_server.py' 同目录下的 'config/servers.json' 文件中配置,用户无需手动配置。
基本使用方法
-
启动代理服务器 打开终端,进入项目根目录,运行以下命令启动代理服务器:
python server/proxy_server.py请确保 '.env' 文件已配置正确,特别是 API Keys 和 Chrome/ChromeDriver 路径(如果需要谷歌搜索功能)。
-
启动 MCP 客户端 打开另一个终端,进入项目根目录,运行客户端脚本 'client/common_client.py',并传入代理服务器脚本的路径作为参数:
python client/common_client.py server/proxy_server.py客户端启动后,会连接到代理服务器并列出可用的工具。
-
与客户端交互 在客户端终端,可以输入自然语言指令与模型进行交互,例如:
- '北京的天气怎么样?' (调用天气查询工具)
- '在谷歌上搜索 Python 教程' (调用谷歌搜索工具)
- '拍照' (调用摄像头控制工具)
- 'quit' (退出客户端)
客户端会将指令发送给模型进行处理,模型会根据指令判断是否需要调用工具,并返回结果。
示例交互:
你: 北京的天气怎么样? 🤖 DashScope: 🌍 北京 🌡 温度: 3°C 💧 湿度: 57% 🌬 风向: 北风 风力: 2级 🌤 天气: 晴 ⏰ 更新时间: 2024-01-29 17:40:49
你: 在谷歌上搜索 Python 教程 🤖 DashScope: 谷歌搜索 'Python 教程' 的结果: 1. Python 教程 | 菜鸟教程 链接: https://www.runoob.com/python/python-tutorial.html 摘要: Python 教程 Python 是一种易于学习又功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型,以及其解释性的本质,使它成为一种在 ... ... (更多搜索结果) ...
你: 拍照 🤖 DashScope: 成功拍摄并保存图片至 ./image/captured_image_xxxxx.jpg
注意事项
- 首次运行谷歌搜索工具可能需要下载 ChromeDriver,请根据提示信息进行操作。
- 确保已正确安装 Chrome 浏览器和 ChromeDriver,并配置正确的路径到 '.env' 文件中,或者将 ChromeDriver 放置在系统 PATH 环境变量中。
- 使用摄像头控制工具前,请确保已连接摄像头并安装 OpenCV 库 ('pip install opencv-python').
- 代理服务器和工具服务器都需要在独立的终端窗口中运行。
信息
分类
桌面与硬件