当前位置: 首页 > news >正文

使用MCP构建AI Apps 《MCP: Build Rich-Context AI Apps with Anthropic》

吴恩达老师新推出一门免费 MCP 学习短课程:《MCP: Build Rich-Context AI Apps with Anthropic》https://www.deeplearning.ai/short-courses/mcp-build-rich-context-ai-apps-with-anthropic/ 由 Anthropic 技术教育负责人 Elie Schoppik 主讲,将教我们如何使用 MCP 标准化 LLM 与外部工具、数据、提示词的连接方式。通过实践项目强化学习,包括构建 MCP 聊天助手、创建 MCP 服务器、连接第三方参考服务器等,帮助我们掌握这一标准化协议的应用能力。

课程大纲

    • 1. 为什么选择mcp?
    • 2. MCP架构
    • 3. 问答机器人示例,建立一个自己的chatbot,并引入自己编写的tool。chatbot.py
    • 4. 创立一个MCP服务器,基于FastMCP
    • 5. 在聊天机器人中创建MCP客户端
    • 6.将MCP Chatbot连接到引用服务器
    • 7. 升级server:添加提示词和资源

1. 为什么选择mcp?

模型需要依赖提供的上下文来工作,mcp是模型上下文协议,mcp标准了ai应用与不同外部数据/系统交互的方式。
没有mcp的话,不同的ai应用访问相似的数据库,需要开发者重复造轮子。
在这里插入图片描述

有了mcp,可以通过大模型的自然语言能力,与不同的数据库交互,整合各种数据源。
在这里插入图片描述

谁可以开发mcp?任何人,或者采用社区版本。

2. MCP架构

https://modelcontextprotocol.io/specification/2025-03-26/architecture
基于client-server架构,MCP客户端和MCP服务器通过MCP定义的消息进行通信。客户端运行在Host上。
格式 json-rpc 2.0
Host:可以通过MCP访问数据库的LLM应用,如Claude桌面版,IDE, AI agent等
MCP服务器:通过MCP暴露特定能力的程序
MCP客户端:维护和服务器一对一的连接,通常在Host上的应用中。
在这里插入图片描述
三大功能:工具、资源、提示词模版

  • Tools 工具调度(Tool/Function Calling):集成第三方能力或系统指令的调用机制。
    作用:在模型无法回答时调用外部函数或插件(如天气查询、数据库读取等);支持 OpenAI Function Calling 或 LangChain Tool 类型结构。

  • Resources 管理与调用(Resources / 数据资源):统一管理模型访问的结构化/非结构化数据源,如数据库、文档、索引库等。
    作用:让模型能够查询企业数据,如 MySQL、PostgreSQL、MongoDB;提供基于语义检索的知识库接入;控制访问权限和速率,支持多租户资源隔离。

  • Prompt 模板管理(Prompt Templates)预定义用于规范和复用大语言模型的输入模板
    作用:把用户请求统一转化为标准化 Prompt 模板,提高准确率和可控性。支持参数化、模板版本控制、场景配置(如问答/写作/代码生成等)。

客户端的任务是寻找资源和工具,服务器的任务是向客户端提供这些信息。
定义Tool,基于Python SDK @mcp.tool
定义resource,@mcp.resource
定义prompt,@mcp.prompt

MCP transport:client-server之间的传输。https://modelcontextprotocol.io/specification/2025-03-26/basic/transports client端发送请求到 MCP Server, 如工具调用、数据访问等。

  • stdio模式:标准输入输出模式,用于本地通信。MCP Server 被当作一个本地可执行程序运行,MCP Client 将用户请求写入它的标准输入,Server 处理后将响应写到标准输出
  • http模式:MCP Server 作为一个 HTTP 服务存在,MCP Client 通过 POST 请求将输入发送给 MCP Server。支持远程访问,需要网络配置,有一点http协议开销。

3. 问答机器人示例,建立一个自己的chatbot,并引入自己编写的tool。chatbot.py

准备:按照固定的格式构建tools, 如 search_papers, extract_info。tool use的json格式包括name description input_schema等等。同时需要编写代码,实现这些tool函数。比如search_papers工具的具体实现函数,具体是archive库实现的。
Tool Mapping:创建字典,将tool对应到底层的函数调用。
创建聊天机器人:process_query处理来自用户的query,类型分为text和tool_use。普通的query,比如hi,以message处理,大模型回复。可能会涉及到tool的query,大模型调用具体tool处理,再传回结果。

模型是如何从用户基于自然语言的query中,确定自己要调用哪个tool,以及tool需要参数是什么的?
Function Calling 模型的训练:支持 Tool Use 的模型(如 GPT-4-turbo、Claude、Gemini 等)是通过以下方式实现这种能力的:系统提示(System Prompt)中定义好 tools(函数列表 + 说明),模型已在训练中见过类似场景:如模型知道如何把“天气查询”映射到 get_weather(city),使用 JSON Schema 作为函数定义标准,让模型知道每个函数需要哪些参数,如果用的是 LangChain/OpenAI,Agent 层会反复调用直到找到合适的工具或回答。

这节实现了一个简单的大模型聊天机器人通过function calling获取arxiv相关topic文章列表的功能,function calling技术回顾:在这里插入图片描述

4. 创立一个MCP服务器,基于FastMCP

在上一节写的tool文件里修改

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("research");
@mcp.tool() //定义mcp tool,装饰下面函数即可。
def search_papers() ... //上一节tool的具体实现
@mcp.tool()
def extract_info() ...if __name__ == "__main__""mcp.run(transport=‘stdio’)

配置环境并启动mcp服务器

> uv init  
> uv venv  
> source .venv/bin/activate //创建激活进入虚拟环境 
> uv add mcp arxiv //安装依赖 npx @modelcontextprotocol/inspector uv run
> reserach_server.py//启动mcp inspector,打开网页进入

MCP inspector无需构建任何server和client,在沙盒环境中测试server返回的tool resource prompt。只测试server功能,无关大模型

5. 在聊天机器人中创建MCP客户端

指定配置,让客户端知道如何启动server
mcp_chatbot.py
初始化聊天机器人,connect to server and run。建立一个到server的连接,获取流和底层会话的访问权限,列出所需的工具,获取工具,传递给模型以供使用。

uv add anthropic python-dotenv nest_asyncio
uv run mcp_chatbot.py

query之后client会启动call tool request

6.将MCP Chatbot连接到引用服务器

https://github.com/modelcontextprotocol/servers
Fetch server https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
Filesystem MCP Server https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem
将以上三者都接入chatbot,建立以下json文件。chatbot会load并解析出所有可用的tool list。
在这里插入图片描述

建立多个客户端,可以连接到多个server。可以看到所有tool都连接了。
在这里插入图片描述

提示词:从deeplearning.ai中找到一个有意思的关键词,寻找相关论文,总结到result.txt。
会分别使用fetch、serach_papers、abstrac_info、写入本地文件。
在这里插入图片描述

7. 升级server:添加提示词和资源

@mcp.resource(“papers://folers”)
def get_available_folers() //获取文件夹

@mcp.prompt()
def generate_search_prompt()
提示词本来是用户定义的,但是用户可能不知道最佳实践是什么。提示词模版在server端创建,发送至client端,以便用户能直接使用这些完整的模板,无需自行完成提示词工程。
在本文的例子里,与其要求用户仅指定如何搜索论文,server直接为用户提供经过实战检验的提示模版,包含可动态填充的信息字段。
在chatbot.py中list prompts和resource与tool一样。

http://www.dtcms.com/a/517939.html

相关文章:

  • 营销网站建设的步骤东莞市网站建设系统企业
  • 企业公司网站建设ppt建设一个简单的网站
  • 查询网站的二级域名网页设计如何添加图片
  • 信阳网站设计个人网站网页制作
  • 企业网站优化方案的策划个旧市建设网站
  • 肥西县建设发展局网站福州台江区网站建设
  • 广州哪个区最繁华重庆seo优化公司
  • 官方网站弹幕怎么做需要推销自己做网站的公司
  • 上海未成年人思想道德建设网站网站的运营
  • 东台网站建设logo设计在线生成免费平台只需4步
  • 深圳网站建设伪静态 报价 jsp 语言网站建设龙头企业
  • 网站建设管理 自查 报告小企业网站建设地点
  • 自己做淘宝返利网站网站投资设计
  • 电竞网站建设方案wordpress拼团
  • 赣州企业网站建设推广做网课网站
  • 英文旅游网站建设找个会做网站的 一起做网站
  • 网站公司不给ftp上海网站建设 找思创网络
  • 企业网站建设可行性杭州萧山做网站
  • 树莓派玩win游戏:树莓派5 安装box86 wine vulkan运行Windows游戏,性能非常强劲,仙剑四测试完美通过
  • 网站建设费 科研 类wordpress 后台列表
  • WebGL关键知识点
  • 图片瀑布流网站模板网络空间安全学院
  • 静态网站开发工具有谁帮做网站
  • 单位建设网站的请示上海官方网站建
  • 鄂州网站制作人才招聘企业手机网站建设策划
  • 以用户为中心 建设学校网站苏州学习网站建设
  • 3d视频动画制作优化网站架构
  • 网站建设的淘宝模板西安长安网站建设制作
  • 美食教做网站如何建立免费的网站
  • wordpress设置多站点采集电影做的网站