
MCPTest
MCP功能测试,编写LLM(支持OpenAI接口风格的大模型)应用程序调用MCP。MCP(模型上下文协议)是Claude开源的一种开放协议,可实现LLM应用程序与外部数据源和工具之间的无缝集成。
3 years
Works with Finder
3
Github Watches
20
Github Forks
64
Github Stars
1、项目介绍
1.1、主要内容
本期系列相关视频如下,按照发布的先后顺序:
(第一期)[2024.12.10]Claude重大突破!发布MCP(模型上下文协议),带你在LLM应用程序脚本中感受它,无需使用Claude Desktop桌面软件,支持类OpenAI风格大模型
主要内容:MCP介绍、MCP功能测试,LLM(支持OpenAI接口风格的大模型)应用程序调用MCP
https://www.bilibili.com/video/BV1HBquYbE7t/
https://youtu.be/Jmo7rgb_OXQ
(第二期)[2024.12.12]Claude MCP应用Text2SQL用例,带你在LLM应用程序中感受它的丝滑,无需使用Claude Desktop桌面软件,支持类OpenAI风格大模型
主要内容:使用MCP实现LLM应用程序Text2SQL功能操纵MySQL数据库
https://www.bilibili.com/video/BV1ELq4YME8T/
https://youtu.be/yaLAqEMz45A
(第三期)[2024.12.12]Claude MCP应用客户端同时访问和调用多个服务器资源和工具,无需使用Claude Desktop桌面软件,支持类OpenAI风格大模型
主要内容:MCP客户端同时访问多个MCP服务器,支持文件系统操作和Text2SQL功能操纵MySQL数据库
https://www.bilibili.com/video/BV1oNqaYJEUy/
https://youtu.be/tG-ZjOgrcSA
(第四期)[2024.12.23]DuckDuckGo在线搜索、Fetch内容提取MCP服务器,访问和调用多个服务器资源和工具,支持阿里通义千问大模型、GPT大模型、Ollama本地开源大模型
主要内容:MCP客户端同时访问多个MCP服务器,支持文件系统操作、Text2SQL功能操纵MySQL数据库、在线搜索(DuckDuckGo搜索引擎)和网页内容提取
https://www.bilibili.com/video/BV1SckXY3E6S/
https://youtu.be/9pzS9saNcGA
1.2 MCP介绍
MCP(模型上下文协议)是Claude开源的一种开放协议,可实现LLM应用程序与外部数据源和工具之间的无缝集成
该架构非常简单:开发人员可以通过MCP服务器公开数据,也可以构建连接到这些服务器的AI应用程序(MCP客户端)
目前MCP还算是一个测试版,一个本地的服务,运行在你自己的电脑上的
MCP官方简介:https://www.anthropic.com/news/model-context-protocol
MCP文档手册:https://modelcontextprotocol.io/introduction
MCP官方服务器列表:https://github.com/modelcontextprotocol/servers
PythonSDK的github地址:https://github.com/modelcontextprotocol/python-sdk
(1)PythonSDK版本
截止当前(12.9),当前的稳定版本为1.1.0
(2)MCP工作原理
MCP遵循客户端-服务器架构(client-server),其中主机应用程序可以连接到多个服务器
MCP主机(MCP Host): 是发起连接的LLM应用程序(Claude Desktop、IDE或AI应用等)
MCP客户端(MCP Client): 在主机应用程序内部与服务器保持1:1连接
MCP服务器(MCP Servers): 服务器向客户端提供上下文、工具和提示词(context, tools, and prompts)
(3)核心组件
Protocol layer 协议层
协议层处理消息帧、请求/响应链接和高级通信模式。关键类:Protocol、Client、Server
Transport layer 传输层
传输层处理客户端和服务器之间的实际通信
Stdio(standard input/output):使用标准输入/输出进行通信
SSE(Server-Sent Events):使用服务器发送的事件来发送服务器到客户端的消息
所有传输都使用JSON-RPC2.0 来交换消息
Message types 消息类型
Requests:请求期望来自另一方的响应
Notifications:通知是一种不期望响应的单向消息
Results:结果是对请求的成功响应
Errors:错误表明请求失败
(4)连接生命周期
Initialization 初始化
客户端发送带有协议版本和功能的initialize请求
服务器响应其协议版本和功能
客户端发送initialized通知作为确认
正常消息交换开始
Message exchange 消息交换
初始化后,支持以下模式:
请求-响应(Request-Response):客户端或服务器发送请求,对方响应
通知(Notifications):任何一方发送单向消息
Termination 终止
定义了这些标准错误代码:
ParseError = -32700
InvalidRequest = -32600
MethodNotFound = -32601
InvalidParams = -32602
InternalError = -32603
(5)核心功能
Resources 资源
资源是模型上下文协议 (MCP) 中的核心功能,允许服务器公开可供客户端读取并用作LLM交互上下文的数据和内容
File contents 文件内容
Database records 数据库记录
API responses API 响应
Live system data 实时系统数据
Screenshots and images 屏幕截图和图像
Log files 日志文件
And more 还有更多
每个资源都由唯一的 URI 标识,并且可以包含文本或二进制数据
Prompts 提示
服务器能够定义可重用的提示模板和工作流程,客户端可以轻松地向用户和LLMs展示这些模板和工作流程。它们提供了一种强大的方法来标准化和共享常见的LLM交互
接受动态参数
包括资源中的上下文
指导具体工作流程
Tools 工具
工具是MCP中的强大功能,工具被设计为LLMs控制的,这意味着工具从服务器公开给客户端,目的是让LLMs能够自动调用它们(有人在循环中授予批准)
工具的关键方面包括:
发现(Discovery):客户端可以通过tools/list端点列出可用的工具
调用(Invocation):使用tools/call端点调用工具,服务器在其中执行请求的操作并返回结果
灵活性(Flexibility):工具范围从简单的计算到复杂的API交互
Sampling 采样
采样是一项强大的MCP功能,允许服务器通过客户端请求LLM完成,从而在保持安全和隐私的同时实现复杂的代理行为
服务器向客户端发送sampling/createMessage请求
客户端审查请求并可以修改它
LLM采样的客户端样本
客户端审核完成情况
客户端将结果返回给服务器
这种人机交互设计可确保用户保持对LLM所看到和生成的内容的控制
Transports 传输
MCP的传输为客户端和服务器之间的通信提供了基础。传输处理消息发送和接收的底层机制
MCP使用JSON-RPC 2.0作为其格式。传输层负责将MCP协议消息转换为JSON-RPC格式进行传输,并将接收到的JSON-RPC消息转换回MCP协议消息
2、前期准备工作
2.1 集成开发环境搭建
anaconda提供python虚拟环境,pycharm提供集成开发环境
具体参考如下视频:
【大模型应用开发-入门系列】03 集成开发环境搭建-开发前准备工作
https://youtu.be/KyfGduq5d7w
https://www.bilibili.com/video/BV1nvdpYCE33/
2.2 大模型LLM服务接口调用方案
(1)gpt大模型等国外大模型使用方案
国内无法直接访问,可以使用代理的方式,具体代理方案自己选择
这里推荐大家使用:https://nangeai.top/register?aff=Vxlp
(2)非gpt大模型方案 OneAPI方式或大模型厂商原生接口
(3)本地开源大模型方案(Ollama方式)
具体参考如下视频:
【大模型应用开发-入门系列】04 大模型LLM服务接口调用方案
https://youtu.be/mTrgVllUl7Y
https://www.bilibili.com/video/BV1BvduYKE75/
3、项目初始化
3.1 下载源码
GitHub或Gitee中下载工程文件到本地,下载地址如下:
https://github.com/NanGePlus/MCPTest
https://gitee.com/NanGePlus/MCPTest
3.2 构建项目
使用pycharm构建一个项目,为项目配置虚拟python环境
项目名称:MCPTest
虚拟环境名称保持与项目名称一致
3.3 将相关代码拷贝到项目工程中
将下载的代码文件夹中的文件全部拷贝到新建的项目根目录下
3.4 安装项目依赖
新建命令行终端,在终端中运行 pip install -r requirements.txt 安装依赖
注意: 建议先使用要求的对应版本进行本项目测试,避免因版本升级造成的代码不兼容。测试通过后,可进行升级测试
4、功能测试
4.1 (第一期)[2024.12.10]测试步骤
核心演示示例介绍:Filesystem 使用官方提供的文件操作MCP服务器
描述: 提供文件系统操作功能,包括读写文件、目录管理和文件搜索
资源: file://system 文件系统资源URI
工具: read_file, write_file, create_directory, list_directory, move_file, search_files, get_file_info
read_file:读取文件内容,参数:path (文件路径)
read_multiple_files:读取多个文件内容,参数:paths (文件路径数组)
write_file:创建或覆写文件,参数: path (文件路径), content (文件内容)
create_directory:创建目录,参数: path (目录路径)
list_directory:列出目录内容,参数: path (目录路径)
move_file:移动/重命名文件,参数: source (源路径), destination (目标路径)
search_files:递归搜索文件,参数: path (起始路径), pattern (搜索模式)
get_file_info:获取文件元数据,参数: path (文件路径)
对应的链接:https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem
代码目录
脚本放置在nangeAGICode/basic、filesystem_basic、filesystem_chat目录内,运行对应脚本进行测试
测试内容:
我当前可以访问哪个文件夹
帮我创建一个test文件夹
帮我在test文件夹下创建一个文件test1.txt,内容为:南哥AGI研习社。
把test1.txt中的内容agi改大写AGI。
4.2 (第二期)[2024.12.12]测试步骤
核心演示示例介绍:Text2SQL 自定义操纵MySQL数据库的MCP服务器
描述: 提供Text2SQL功能操纵MySQL数据库
资源: mysql://{table[0]}/data 数据库表资源URI
工具描述: execute_sql
execute_sql: 运行SQL脚本,参数:query (SQL语句)
代码目录
脚本放置在nangeAGICode/mysql_chat目录内,运行对应脚本进行测试
提供LLM对MySQL数据库操作功能,增、删、改、查
测试内容:
(1)列举可用资源
当前可以访问哪些数据表
(2)获取某资源内容
获取nange_agi这个表的内容
(3)列举可用的工具
当前可以使用哪些工具
(4)查询
调用工具获取nange_agi这个表的内容
(5)增加
随机帮我增加一条数据
调用工具获取nange_agi这个表的内容
(6)修改
新增的那条数据把名称改为test
调用工具获取nange_agi这个表的内容
(7)删除
把刚新建的那条数据删除
调用工具获取nange_agi这个表的内容
(8)统计数据量
这张表中一共几条数据
4.3 (第三期)[2024.12.12]测试步骤
核心演示示例介绍:MCP客户端访问多个MCP服务器
描述: 结合前面两期的内容,对Filesystem和Text2SQL服务器进行融合使用
代码目录
脚本放置在nangeAGICode/mysql_filesystem_chat目录内,运行对应脚本进行测试
测试内容:
当前可以访问哪些资源
当前可以访问哪些表
当前可以使用哪些工具
创建一个test文件夹
在test文件夹下创建一个文件test1.txt,内容为:用户名:NanGe003,密码:6543217890,内容:南哥AGI研习社++。
获取nange_agi这个表的内容
增加一条数据,数据内容为刚刚创建的test1.txt中的内容
获取nange_agi这个表的内容
这张表中一共几条数据
新增的那条数据把名称改为test
获取nange_agi这个表的内容
把刚新建的那条数据删除
获取nange_agi这个表的内容
4.4 (第四期)[2024.12.23]测试步骤
核心演示示例介绍:在线搜索及获取链接内容 自定义在线搜索DuckDuckGo的MCP服务器及官方fetch MCP服务器
描述: 提供在线搜索,并提前搜索结果中有关网页链接内容的提取和总结
工具描述: duckduckgo_web_search、fetch
duckduckgo_web_search: 执行在线搜索,参数:query(搜索关键词);参数:max_results(最大返回内容数量)
fetch:从互联网获取 URL 并将其内容提取为markdown,参数:url(链接地址);参数:max_length(返回的最大字符数,默认值:5000);raw(获取原始内容而不进行Markdown转换,默认:false)
代码目录
脚本放置在nangeAGICode/search_mysql_filesystem_chat目录内,运行对应脚本进行测试
测试内容:
当前可以访问哪些资源
当前可以使用哪些工具
搜索2024年有关AI的最新进展,内容要以中文输出,列出10条,且需要带上相关的链接
将这些内容写入到test.txt文件
获取第一条链接中的内容并进行总结
相关推荐
I find academic articles and books for research and literature reviews.
Converts Figma frames into front-end code for various mobile frameworks.
Confidential guide on numerology and astrology, based of GG33 Public information
Embark on a thrilling diplomatic quest across a galaxy on the brink of war. Navigate complex politics and alien cultures to forge peace and avert catastrophe in this immersive interstellar adventure.
Advanced software engineer GPT that excels through nailing the basics.
Delivers concise Python code and interprets non-English comments
💬 MaxKB is a ready-to-use AI chatbot that integrates Retrieval-Augmented Generation (RAG) pipelines, supports robust workflows, and provides advanced MCP tool-use capabilities.
MCP server to provide Figma layout information to AI coding agents like Cursor
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
Python code to use the MCP3008 analog to digital converter with a Raspberry Pi or BeagleBone black.
AI Agents & MCPs & AI Workflow Automation • (280+ MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Reviews

user_rXvCtYc7
MCPTest is an excellent tool developed by NanGePlus. It offers a seamless experience for my testing needs. Its intuitive interface and robust functionality make it a standout among other similar applications. The support and documentation provided are top-notch, ensuring a smooth onboarding process. Highly recommend checking it out! Learn more at: https://github.com/NanGePlus/MCPTest