小白10分钟上手MCP:理论+实操,给你的AI加点料!(附详细教程)

大模型向量数据库关系型数据库

哈喽,大家好,我是狗哥!

这是Ai Coding系列的又一篇干货,今天咱们来聊一聊如何通过MCP让AI变得更加强大。

前言

虽然之前狗哥已经写了好几篇介绍MCP工具的文章,但是基本都是直接介绍如何配置使用,太偏实践,会让大家有种知其然,不知其所以然的感觉。

所以本文将先尽量用相对通俗的语言和图形介绍基本的理论,然后通过实操开发一款自定义MCP工具,让大家能更好地理解和掌握 MCP。

什么是MCP?

模型上下文协议(MCP) ,听起来好像挺唬人的,但是简单来说大家可以认为它其实就是 AI 应用程序的USB端口,为 AI 模型连接不同数据源和工具提供了标准化方法。

picture.image

从技术角度来看,MCP 采用经典高效的客户端-服务器架构,通过标准化协议实现 LLM 与外部资源的高效互联,其中主机应用可以连接到多个服务器。

其通常包含三个部分:

  • MCP Host: 它代表的是需求方,是 MCP Client 的运行时环境,负责协调用户、LLM 与外部资源之间的交互。代表任何提供 AI 交互环境的应用程序(如 Claude 桌面版、Cursor)
  • MCP Client: Host 内部负责与 MCP Server 交互的组件。Client 由 Host 创建并与 Server 建立一对一的有状态会话,会将 Host 的请求转换为符合 MCP 标准的消息发送给 Server,再将 Server 的响应解析为 Host 可以理解的格式。
  • MCP Server: 暴露特定功能给LLM并提供数据访问。这里指的能力可以是读取本地磁盘文件,写入本地数据库,查询天气/股票价格等等,但 Server 不是能力/资源本身,Server 是通过统一的标准协议将能力对外暴露的代理。

上面三个部分,咱们可以看出MCP Server 是其中的关键部分,而Server 本身对外暴露的能力又分为三种:

  • Resources: 向 LLM 公开服务器中的数据和内容。一般是静态或者半动态的原始数据,这些数据可以直接被 LLM 理解并放在上下文中用于推理。比如是日志或配置等基础信息,类似于一个只读的文件或者数据库。
  • Tools: 使 LLM 能通过Server执行操作。当 LLM 将用户需求拆分为多个具体的子步骤时,可以通过调用 Tools 实现其中的一步或者多步,可以是写入数据库的操作,可以是基于敏感信息进行计算然后输出脱敏信息。
  • Prompts: 可复用的 LLM 提示模板。通常 LLM 在处理不同任务时会使用预定义的 Prompt 模板进行引导,但当处理一些私域场景时可能需要一些特化逻辑,比如输入/输出格式或上下文片段等,这些逻辑可以固化为 Prompts 保存在 MCP Server 中。

picture.image

另外 MCP Server 的通信方式也有多种,这里咱们主要介绍两种:基于标准输入输出(stdio)的本地通信和基于SSE(Server-Sent Events)的远程通信。

  • • 本地通信:通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信,最常见的是命令行调用Command。这种通信方式需要咱们将代码下载到本地后在配置执行,对新手可能不太友好。

  • • 远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。这种配置起来最简单。

MCP 相比传统 API 的优势

看到这里,估计有人要问了:"这不就是API调用吗?有啥新鲜的?"

嘿,这问题问到点子上了!咱们来举个例子哈:

传统API的痛点:

比如你现在有一个天气API,最初只需要两个参数(例如位置和日期),应用程序会携带这两个参数进行请求,然后收到响应结果。

picture.image

但是如果API需要添加第三个必需参数,那么应用程序就必须更新代码以包含新参数。如果不更新,请求可能失败、返回错误或提供不完整结果。

picture.image

MCP的优势:

MCP相对来说就灵活了很多,当客户端(如 Cursor)连接到 MCP 服务器时,它会发送初始请求以了解服务器的能力。

这里可以理解为每次请求时客户端都会问一句 : "兄弟,你现在支持什么功能?"

这样就算功能升级了,也无需我们人工干预,可以直接无缝链接。

picture.image

MCP 是怎么干活的?

picture.image

整个流程其实很简单:

    1. 用户提出问题
    1. AI 选择合适的MCP工具
    1. 征求用户同意(可设置自动同意)
    1. 调用MCP服务执行任务
    1. 返回结果给AI
    1. AI整理答案给用户

实战:自己动手做个MCP服务

说了这么多,是不是已经跃跃欲试了?来,跟着狗哥实际操作一波!

文档准备

在开始之前,收集必要的文档来帮助大模型理解 MCP:

官方文档: 直接去 https://modelcontextprotocol.info/llms-full.txt 把整个文档复制下来

选择 SDK: 复制 README 文件和其他相关文档

  • • TypeScript: MCP TypeScript SDK
  • • Python: Python SDK

环境准备: 将上面的文档粘贴到你与大模型的对话中;我这里直接使用Cursor进行开发。

picture.image

开发你的MCP服务

接下来,你需要向AI说清楚你想要啥功能的MCP。大家可以从如下几点进行描述:

  • • 你的服务器将暴露哪些资源

  • • 它将提供什么工具

  • • 它应该提供什么提示

  • • 它需要与哪些外部系统交互

这里狗哥来演示开发一个能操作本地数据库的MCP:

  

    
     
       
       
       
       
     
     构建一个 MCP 服务器,它能:- 连接到我本地的数据库- 将表结构作为资源暴露- 提供运行只读 SQL 查询的工具
    

接下来把需求丢给Cursor,让它开始给你打工吧。

picture.image

测试和调试

代码出来以后,咱们按文档跑一下,如果没生成的话,可以让cursor帮你生成一份详细的markdown文档。

如果有问题的话,也可以让Cursor帮我们处理。

picture.image

很好,上来就给我报错了。

picture.image

问题不大,谁写的bug谁解决。咱们直接把错误日志扔给Cursor,它会帮我们解决的 。几轮调试下来后:

picture.image

搞定!服务器跑起来了。

配置Cursor使用你的MCP服务

最后一步,在Cursor中配置你的MCP服务:

picture.image

picture.image

配置完成后,让我们来试试效果:

picture.image

完美~从此以后,我的Cursor也能直接帮我操作数据库了。

写在最后

其实狗哥第一次接触MCP的时候,也觉得这玩意儿太复杂了。但是现在呢?MCP简单吧?相信大家现在应该都能有个大致的认识了。

现在轮到你了,快按照上面的教程动手开发一个自己的MCP服务试试呢,让你的AI助手变得更加强大。

如果这篇文章对你有帮助,不知道大家能否点个关注,顺便给我个三连击:点赞、转发和再看。有什么问题也欢迎在评论区留言,我会一一回复的~

我是狗哥,关注我获得更多优质内容。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 NoSQL 的实践与探索
随着 NoSQL 的蓬勃发展越来越多的数据存储在了 NoSQL 系统中,并且 NoSQL 和 RDBMS 的界限越来越模糊,各种不同的专用 NoSQL 系统不停涌现,各具特色,形态不一。本次主要分享字节跳动内部和火山引擎 NoSQL 的实践,希望能够给大家一定的启发。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论