使用说明
项目简介
MCPTest项目是一个演示 Model Context Protocol (MCP) 应用的仓库,它提供了一系列MCP服务器的示例,这些服务器可以扩展LLM应用的功能,使其能够访问本地文件系统、操作MySQL数据库、进行在线搜索以及提取网页内容。本仓库旨在帮助开发者理解和应用MCP协议,构建功能丰富的LLM应用。
主要功能点
- 资源 (Resources) 管理:
- 文件系统资源: 允许LLM客户端访问和操作本地文件系统,例如读取文件内容、创建目录、搜索文件等。
- MySQL数据库资源: 允许LLM客户端查询MySQL数据库中的数据表。
- 工具 (Tools) 注册与执行:
- 文件系统工具: 提供读写文件、目录管理、文件搜索等工具,例如 'read_file', 'write_file', 'create_directory', 'search_files' 等。
- Text2SQL工具: 提供 'execute_sql' 工具,允许LLM客户端通过SQL语句操作MySQL数据库。
- 在线搜索工具: 提供 'duckduckgo_web_search' 工具,允许LLM客户端使用DuckDuckGo搜索引擎进行在线搜索。
- 网页内容提取工具: 提供 'fetch' 工具,允许LLM客户端获取并提取指定URL的网页内容。
- Prompt 模板 (Prompts):
- 虽然仓库中主要侧重于资源和工具的演示,但MCP服务器框架本身支持Prompt模板的定义和使用,为LLM交互提供可定制的模式。(在提供的代码中,'basic/server.py' 和 'search_mysql_filesystem_chat/mcp_server_fetch.py' 中有 prompt 的示例定义和使用)
安装步骤
- 下载源码: 从GitHub仓库 https://github.com/NanGePlus/MCPTest 下载项目代码到本地。
- 构建项目: 使用PyCharm或其他Python IDE打开下载的项目文件夹。建议创建一个新的虚拟Python环境,并在该环境下进行操作。
- 拷贝代码: 将下载的代码文件夹中的所有文件拷贝到新建的PyCharm项目根目录下。
- 安装依赖: 打开PyCharm的终端,切换到项目根目录,运行命令 'pip install -r requirements.txt' 安装项目所需的Python依赖库。
服务器配置
本仓库提供多个MCP服务器示例,以下是运行 'search_mysql_filesystem_chat' 示例所需的服务器配置信息。你需要根据实际使用的MCP客户端,配置以下服务器启动命令和参数,以便客户端能够连接到这些服务器。
请注意,MCP客户端通常需要一个JSON格式的配置文件来描述要连接的MCP服务器。以下是一个示例配置,你需要根据实际情况修改 'command' 和 'args' 字段,确保命令能够正确启动相应的MCP服务器。
{ "mcpServers": { "filesystem": { "name": "filesystem_server", "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/workspace" // 请替换为你的工作区路径,例如: "/Users/yourname/Desktop/workspace" ], "env": {} }, "mysql": { "name": "mysql_server", "command": "python", "args": [ "nangeAGICode/search_mysql_filesystem_chat/mcp_server_mysql.py" // MySQL服务器脚本路径 ], "env": { "MYSQL_HOST": "your_mysql_host", // 请替换为你的MySQL主机地址,例如: "localhost" "MYSQL_USER": "your_mysql_user", // 请替换为你的MySQL用户名 "MYSQL_PASSWORD": "your_mysql_password", // 请替换为你的MySQL密码 "MYSQL_DATABASE": "your_mysql_database" // 请替换为你的MySQL数据库名 } }, "duckduckgo": { "name": "duckduckgo_server", "command": "python", "args": [ "nangeAGICode/search_mysql_filesystem_chat/mcp_server_duckduckgo.py" // DuckDuckGo搜索服务器脚本路径 ], "env": {} }, "fetch": { "name": "fetch_server", "command": "python", "args": [ "nangeAGICode/search_mysql_filesystem_chat/mcp_server_fetch.py" // 网页内容提取服务器脚本路径 ], "env": {} } } }
注意:
- 请将上述JSON配置信息保存到一个文件中,例如 'servers_config.json',并确保MCP客户端能够读取到该配置文件。
- '/path/to/your/workspace' 需要替换为你希望文件系统服务器能够访问的工作区根目录的实际路径。
- 'your_mysql_host', 'your_mysql_user', 'your_mysql_password', 'your_mysql_database' 需要替换为你的MySQL数据库的连接信息。
- 确保MySQL数据库服务器已启动并运行,且使用正确的用户名、密码和数据库名。
- 运行文件系统服务器需要安装 '@modelcontextprotocol/server-filesystem',如果尚未安装,请确保你的环境中安装了 Node.js 和 npm,然后在终端中运行 'npm install -g @modelcontextprotocol/server-filesystem' 进行安装。
- 请根据你希望测试的具体功能,选择启动相应的MCP服务器,并在MCP客户端的配置文件中配置相应的服务器信息。
基本使用方法
- 启动MCP服务器: 根据你的需求,选择并启动相应的MCP服务器(例如,运行 'nangeAGICode/search_mysql_filesystem_chat/mcp_server_mysql.py' 或 'nangeAGICode/search_mysql_filesystem_chat/mcp_server_duckduckgo.py' 等)。
- 配置MCP客户端: 配置MCP客户端,使其能够连接到启动的MCP服务器。通常需要提供服务器的启动命令和参数,以及服务器的网络地址(如果不是Stdio传输)。
- 运行MCP客户端: 运行MCP客户端程序(例如 'nangeAGICode/search_mysql_filesystem_chat/client_chat.py'),客户端将通过Stdio协议与MCP服务器建立连接。
- 与LLM应用交互: 在MCP客户端的交互界面中,输入自然语言指令,客户端会将指令发送给LLM模型。如果LLM模型需要访问外部数据或工具,它会通过MCP协议与MCP服务器进行通信,获取资源或调用工具,并将结果返回给用户。
例如,在 'search_mysql_filesystem_chat/client_chat.py' 客户端中,你可以进行以下操作:
- 查询MySQL数据库中的数据表信息,例如 "当前可以访问哪些数据表"。
- 读取MySQL数据表中的内容,例如 "获取nange_agi这个表的内容"。
- 使用文件系统工具创建文件夹和文件,例如 "创建一个test文件夹","在test文件夹下创建一个文件test1.txt,内容为:南哥AGI研习社。"。
- 使用DuckDuckGo搜索工具进行在线搜索,例如 "搜索2024年有关AI的最新进展,内容要以中文输出,列出10条,且需要带上相关的链接"。
- 使用fetch工具获取网页内容,例如 "获取第一条链接中的内容并进行总结"。
通过这些步骤,你可以体验如何使用MCP服务器扩展LLM应用的功能,使其能够处理更复杂的任务,例如数据查询、文件操作和信息检索等。
信息
分类
数据库与文件