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

MCP开发入门

MCP开发入门

官方文档: https://modelcontextprotocol.io/introduction
入门教程: https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide

  • 本文源代码:https://github.com/youngqqcn/mcp-server-demo

什么是MCP?

模型上下文协议(MCP)是一个创新的开源协议,它重新定义了大语言模型(LLM)与外部世界的互动方式。MCP 提供了一种标准化方法,使任意大语言模型能够轻松连接各种数据源和工具,实现信息的无缝访问和处理。MCP 就像是 AI 应用程序的 USB-C 接口,为 AI 模型提供了一种标准化的方式来连接不同的数据源和工具。

MCP 有以下几个核心功能:

  • Resources 资源
  • Prompts 提示词(模板), 用于给客户端提供提示词模板
  • Tools 工具
  • Sampling 采样
  • Roots 根目录
  • Transports 传输层
    • stdio 用于本地
      • 通过 uvx 或 npx 跑一个本地服务供mcp客户端(也是大模型客户端)调用
    • streamable http 最新的
    • http + sse : 已废弃,老的mcp依然使用

MCP客户端:

  • Claude App (要翻墙)
  • Cusor
  • Vscode
  • Cherry Studio

mcp的资源

目前 MCP 非常火爆,很多开发者参与:

  • https://github.com/modelcontextprotocol/servers/tree/main/src

  • https://mcp.so/

  • https://www.modelscope.cn/mcp

  • https://github.com/punkpeye/awesome-mcp-servers/tree/main

MCP的工作原理

关于mcp工作过程 https://zhuanlan.zhihu.com/p/29001189476

  • 1, 用户使用客户端(如 Cursor, Cherry Studio), 并指定开启的mcp工具,并向大模型提出问题
  • 2, 客户端将问题发大模型,同时附带上可使用的mcp工具列表
  • 3, 如果大模型需要调用mcp工具获取外部数据,大模型会中断并返回需要调用的工具列表, 并包含一个中断原因: tool_call; 如果不需要调用工具,则直接返回结果
  • 4, 客户端根据大模型返回的工具列表,调用相应的mcp工具, 获取外部数据
  • 5, 客户端将获取到的数据,传递给大模型
  • 6, 大模型根据获取到的数据,继续处理问题
  • 7, 大模型返回结果
  • 8, 客户端将结果返回给用户

MCP server 开发

官方文档: https://modelcontextprotocol.io/introduction
Python SDK: https://github.com/modelcontextprotocol/python-sdk

支持 Python, Typescript, Java …

这里以 Python 为例, 用 uv创建一个项目

如果没有安装 uv, 请先安装 uv: https://docs.astral.sh/uv/getting-started/installation/

uv init mcp-server-democd mcp-server-demouv add "mcp[cli]"source .venv/bin/activate

创建一个 add_server.py, 代码:

# server.py
from mcp.server.fastmcp import FastMCP# Create an MCP server
mcp = FastMCP("Demo")# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:"""Add two numbers"""return a + b# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""Get a personalized greeting"""return f"Hello, {name}!"if __name__ == "__main__":# Start the servermcp.run(transport="streamable-http")

调试 MCP server:

  • 测试/调试MCP程序, 启动2个终端

  • 在一个终端运行 mcp 服务, streamable-http 默认监听 8000 端口 和 mcp端点 python add_server.py

  • 在另外一个终端中, 启动一个测试客户端 mcp dev add_server.py

  • 浏览器打开 http://127.0.0.1:6274

  • Transport 选择 streamable-http

  • URL 填入 http://localhost:8000/mcp

  • 点击 Connect, 可以看到连接成功

  • 然后点击 Tools, 点击 List Tools 列出所有的工具

  • 点击 add 进行测试, 输入 ab 的值, 点击 Run Tool, 可以看到返回结果

在客户端使用 MCP server

在 Cherry Studio 中使用上面的 add MCP server

  • 下载 Cherry Studio

在 Cherry Studio 中选择支持工具调用的大模型(带工具icon的模型)

在对话中,开启我们刚才添加的 my_test_add工具:

因为我们这个add工具过于简单,如果直接问大模型 100 + 3 等于多少,模型会直接返回结果,而不会调用我们添加的 add 工具 , 因此,我们这里需要换种方式提问,以便大模型能够调用我们添加的 add 工具

可见, 大模型调用了我们添加的 add 工具,并返回了正确结果

http://www.xdnf.cn/news/4848.html

相关文章:

  • C++ stl中的stack和queue的相关函数用法
  • uniapp 百家云直播插件打包失败
  • 在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置
  • 基于大模型的母婴ABO血型不合溶血病全方位预测与诊疗方案研究
  • Java EE初阶——初识多线程
  • 纯净IP,跨境账号稳定的底层逻辑
  • Linux 文件系统中的数据定位:inode 与 dentry 的技术解析
  • CentOS 7 系统下安装 OpenSSL 1.0.2k 依赖问题的处理
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.1)
  • [Windows] 东芝存储诊断工具1.30.8920(20170601)
  • 【应急响应】- 日志流量如何分析?
  • 文本框碰撞测试
  • 基 LabVIEW 的多轴电机控制系统
  • element-ui时间线样式修改
  • vison transformer vit 论文阅读
  • 微软系统 红帽系统 网络故障排查:ping、traceroute、netstat
  • PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!
  • 使用Python和OpenCV实现实时人脸检测与识别
  • C++ 观察者模式详解
  • 使用程序绘制中文字体——中文字体的参数化设计方案初探
  • 打造专属AI好友:小智AI聊天机器人详解
  • 【新品发布】VXI可重构信号处理系统模块系列
  • 麦科信获评CIAS2025金翎奖【半导体制造与封测领域优质供应商】
  • CI/CD面试题及答案
  • Android SDK
  • 记录一次使用thinkphp使用PhpSpreadsheet扩展导出数据,解决身份证号码等信息科学计数法问题处理
  • 【Linux操作系统】第一弹——Linux基础篇
  • 第8章-4 查询性能优化2
  • 学习threejs,使用Physijs物理引擎
  • 排序算法总结