上文解释了mcp的基本架构,但说到底理论还是理论,没有实践出来的知识还是不熟属于你自己。
那么要实现一个mcp 的架构会很难吗?答案是不是,但最大的困难点是学习资源太分散,不利学习。

所以首先简单总结一下,要实现一个基本的mcp 程式,以python 为例
你需要安装uv package 管理,不用UV的话就使用传统的pip。另外,要使用inspector 介面测试的话 node is 也是必须的。总结编写一个mcp架构程式须要的依赖套件:

  • Python
  • Pip 套件管理
  • node.js
  • UV 套件管理
  • mcp[cli]  

其中mcp[cli] 可使用pip全域安装,也可以使用uv 建立项目管理后再为每个项目安装

如果你是使用mac os ,Python, pip 套件管理, node.js 和uv 套件管理也可以使用brew 安装到你的系统。在真正开始编程式,我要先讲讲使用SDK 前你必须要搞懂的部份

1. Server(伺服器):核心部份,处理MCP协议的连线和信息交换。

2. Resources(资源):透过MCP协议暴露给外部的资源,与Restful API 的GET 请求相似,主要作用是取得内容,Resoruces 类型接口透过@mcp.resources() 定义。内容可以是文字类型档案/二进位类型档案。文字类型档案可以是以下类型:

  • Source code
  • Configuration files
  • Log files
  • JSON/XML data
  • Plain text

     二进位类型档案可以是以下类型:

  • Images
  • PDFs
  • Audio files
  • Video files
  • Other non-text formats

3. Tools(工具)

类似程式中的函数, 如果涉及运算功能的接口都归为这类,作用是提供给LLM 或Client 调用及执行工作。这类型接口透过@mcp.tool()定义

4. Prompt(提示)
客制化定义提示词模版供LLM 重复使用,LLM 会根据模版的定义把结果按指定格式返回。
这类型接口透过@mcp.prompt()定义

明白这4个概念后,现在就动动手启动一个简单的project
如果你是使用uv 进行项目管理,输入以下指令建立一个项目

uv init mcp-demo

运行后会系统会建立一个mcp-demo的资料夹,然后再为这个项目加入需要的mcp程式库依赖

uv add "mcp[cli]"

打开main.py 编写程式

之后输入

uv run mcp dev main.py 

成功运行后便可以使用browser 打开检视介面,进行测试

如果你是使用pip 全域安装的话,直接建立一个python 档案再编写相同的程式码便可
编写相同代码
最后输入

mcp dev main.py 

成功运行后便可以使用browser 打开检视介面,进行测试

就这样,一个最基本的mcp 伺服器程式便运行起来
以下部份,开始结合tool, resources 和prompt 建立一个具有简单功能的mcp server

1. Resources
我将会建立2个Resoures, 一个是返回文字类型,一个返回二进制档案的base64 格式
打开main.py 建立一个名为introduction 的方法,该方法会返回一段自我介绍文字,输出的名字会因应输入的参数而有所不同


再建立一个profile_picture_in_bs64 的方法。这个方法会因应输入的参数再指定的目录中加载图片后返回它的base格式文字。

其中加载图片会使用到pillow 程式库,所以如果是使用uv 运行的话,需要先加入pillow 的依赖

Uv add pillow 

再次运行mcp dev main.py ,就可以测试resources的效果了

  1. 点击connect
  2. 点击resource
  3. 点击list template 后可以在介面中见到刚才定义的introduction 和profile_picture_in_bs64
  4. 点击introduction 并输入名字后,介面便出现伺服器返回的文字

重覆以上步骤,可测试profile_picture_in_bs64方法

1. Tool

熟悉resources 后,现在再试试tool的用法,编程方式也是大同小异。作为示例,我编写了一个方法,它会根据输入的名和档案类型在指定的目录中加载图片并作为结果返回。

再次运行python 程式
在inspector 介面
1. 点击tools
2. 点击list templates 后可见到profile_picture方法
3. 点击profile_picture,输入参数并运行
4. 程式会返回图片并在介面中显示

3. Prompt

最后试试promopt,也是在同一个python档案编写。

测试方法也与Resource和Tool 完全相同

以上就是完整的resources, tools 和prompt 的编程及调用方法。也是mcp 伺服器的核心内容。
开发完mcp 伺服器,当然是要把它用在llm 上。接下来,我将示范如何把它整合至Claude Desktop 中。

MCP 伺服器程式整合至Claude Desktop

如果你已安装Claude Desktop,直接在项目目录下运行这段指令

uv run mcp install main.py

这个指令会生成Claude Desktop mcp 设定档的内容,以mac os 为例,设定档位于
~/Library/Application Support/Claude/claude_desktop_config.json

command 和args 是核心内容,可根据自己情况修改。 由于我想使用anaconda 安装

的python 和mcp 运行,所以我在command 中改作指向anaconda 路径。args 是运行的python 档案和 mcp 指令的parameter。

Claude Desktop启动时会运行设定档内的mcp程式,并且在运行时与它们交互资料

打开Claude Desktop,在输入框附近可以见到Tool 按钮

点击后可见到在设定档设定的伺服器称,点击伺服器名称后,可见到先前编写的tool,点击启动(预设已启动,启动后便可在LLM 的输入框输入tool名称和参数,LLM便会在收到指令后与mcp伺服器交互资料并返回结果,这次,我以mario 为例,Claude Desktop和MCP 伺服器交互后便返回Mario 的图片。

体验完tool的使用,现在再试试prompt

以上就是整个mcp 伺服器的开发和整合至Claude Desktop的步骤,除了整合至Claude Desktop外,你也可以尝试整合至其他支援MCP 伺服器的应用程式(如VSCode)。开发过程也是一样,本文我以简单的程式展示MCP 在LLM应用上的潜能,但毕竟只是一个DEMO 程式,在这个科技发展迅速的年头需要有实际的应用例子才能完全展现,正如我在第一篇MCP文章提及,我会在下一篇文章以一个实际的MCP 例子作为介绍MCP协议系列的总结。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐