DeepSeek本地RAG知识库(29):MCP讲解和菜谱数据库增强实例

360影视 国产动漫 2025-04-17 06:53 2

摘要:大模型的**MCP协议(Model Context Protocol,模型上下文协议)**是一种开放标准协议,让大模型与外部数据源、工具和服务之间建立安全、标准化的双向连接。

大家好,我是程序员寒山。

你想不想开发自己的MCP呢?

MCP最近特别火,大家都在聊也都在说,但是很多人还是没有搞清楚,今天手把手教大家怎么开发自己的MCP,同时给大家用通俗的语言说一下MCP。

大模型的**MCP协议(Model Context Protocol,模型上下文协议)**是一种开放标准协议,让大模型与外部数据源、工具和服务之间建立安全、标准化的双向连接。

它通过统一接口规范,解决AI应用开发中的数据孤岛、工具适配复杂等问题,使大模型能够灵活调用私有数据或第三方服务,从而提升其实用性和执行能力。

标准化接口
MCP协议类似于硬件领域的USB接口,提供统一的交互标准,允许大模型通过固定格式的请求调用工具或数据源,无需为每个工具单独开发适配代码。安全双向通信
支持本地和远程通信模式,本地通过标准输入输出(stdio)实现高安全性,远程基于HTTP/SSE协议扩展至云端服务,同时通过加密机制保护数据传输。灵活架构
采用客户端-服务器模型,包含以下核心组件:MCP主机(Host):发起请求的终端应用(如IDE、智能体客户端)。MCP客户端(Client):在主机内与MCP服务器通信的桥梁。MCP服务器(Server):提供数据或工具服务的后端程序,支持Python、Node.js等语言开发。功能多样性
MCP服务器可提供三类功能:资源(Resources):静态数据(如文件、数据库记录)。工具(Tools):动态函数(如调用API、执行操作)。提示(Prompts):预定义的交互模板,用于标准化与大模型的对话。创建MCP服务器
需编写服务端程序,并通过SDK(如Python的mcp.server)注册工具或资源。 例如,用@mcp.Tool装饰器标记函数,使其可被大模型调用。from mcp.server.fastmcp import FastMCP mcp = FastMCP @mcp.tool def get_desktop_files: """获取桌面文件列表""" return os.listdir(os.path.expanduser("~/Desktop"))配置客户端
在AI应用(如Cursor、Dify、CherryStudio等)中配置MCP服务器地址。 例如,编辑mcp.json文件指定服务器启动命令:{ "server_name": { "url": "http://192.168.1.131:8000/sse", "headers": {}, "timeout": 60, "sse_read_timeout": 300 }} { "mcpServers": { "listdesktopfiles": { "command": "python d:\\mcp-demo\\file.py" } } }调用与交互
用户通过自然语言指令触发大模型调用MCP工具。 例如,输入“我的桌面有哪些文件”,模型解析后自动调用get_desktop_files工具并返回结果。企业私有数据接入
允许大模型安全访问企业内部数据库、文档库,生成基于私有知识的精准回答(如医疗诊断辅助、金融分析)。是RAG本地知识库的一个有效的补充。第三方服务集成
例如,百度高德地图通过MCP协议封装核心API,开发者无需处理复杂接口,即可让大模型直接调用地点检索、路线规划等功能。自动化任务执行
现在很多的自动化编程工具,也都使用MCP协议,例如Cursor、Cline等。自己创建修改文件,调用MCP工具,实现自动化任务执行。

有菜谱的结构化数据,菜谱的数据库处理脚本,菜谱的数据库文件,以及本地MCP服务器代码。如下图:

@app.list_tools async def list_tools -> list[types.Tool]: return [ types.Tool( name="calculate", description="实现常用的加减法运算", inputSchema={ "type": "object", "required": ["operation", "a", "b"], "properties": { "operation": { "type": "string", "description": "Operation to perform (add or subtract)", "enum": ["add", "subtract"] }, "a": { "type": "number", "description": "First number" }, "b": { "type": "number", "description": "Second number" } }, }, ), types.Tool( name="query_recipe", description="按菜名查询菜谱详细信息", inputSchema={ "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "要查询的菜名" } }, }, ), types.Tool( name="search_recipes", description="按条件筛选菜谱", inputSchema={ "type": "object", "properties": { "cuisine": { "type": "string", "description": "菜系" }, "category": { "type": "string", "description": "类别" }, "taste": { "type": "string", "description": "口味" } }, }, ) ]

MCP协议是一个固定且开放的标准,定义了详细的通信规范与架构设计。其核心价值在于降低AI应用开发门槛,通过统一接口实现“连接万物”,推动大模型从“问答”向“执行”演进。

未来,随着更多厂商和开发者加入,MCP有望成为AI领域的“微服务框架”,进一步释放大模型的潜力。

我们的本地RAG知识可以通过MCP协议进行扩展,从而实现更复杂的知识库。

来源:半月叨

相关推荐