从入门到实践:构建你的第一个 MCP Server

MCP 模型上下文协议

前言

昨天看到一个抖音MCP服务的源码,发现实现起来还是比较清晰的。萌生了自己动手试着做了一个的想法,以此来加深对MCP理解。先回顾迭代一下MCP的一些相关知识,然后跑通一个简单的MCP服务demo。

MCP 核心架构

  • • MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 或 AI 工具)。
  • • MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持连接。
  • • MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。
  • • 本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。
  • • 远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)。
null

交互流程

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

    1. MCP client 首先从 MCP server 获取可用的工具列表。
    1. 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
    1. LLM 决定是否需要使用工具以及使用哪些工具。
    1. 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
    1. 工具调用的结果会被发送回 LLM。
    1. LLM 基于所有信息生成自然语言响应。
    1. 最后将响应展示给用户。
null

构建 MCP Server

MCP Server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:

  • • 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
  • • 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
  • • 提示(Prompts):预先编写的模板,帮助用户完成特定任务。

这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。

AI 应用的开发更多的是需要编写的不同的 MCP Server,因为 MCP Client 相对固定,且有很多现成的工具实现了这一部分。,不同的业务场景需要使用不同的工具和资源,意味着需要开发出各种各样的 MCP server,来为大模型提供工具和资源。

因此了解 MCP Server 的开发流程很有价值。

最小的 MCP Server 样例

学习新东西,最好先从最小且必要的开始。以下就是 mcp 的 python SDK 中 Quickstart 的样例:

安装环境

推荐使用 uv 来进行 python 项目管理

bash 复制代码
# 安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 创建名为"mcp-server-demo"的项目
uv init mcp-server-demo

# 进入项目根目录
cd mcp-server-demo

# 创建虚拟环境venv
uv venv

# 进入项目虚拟环境
source .venv/bin/activate

# 安装项目依赖包
uv add "mcp[cli]"

新增 server 代码文件

创建 server.py 文件,添加以下代码。

代码来源:github.com/modelcontex...

python 复制代码
# 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}!"

调试

为了调试,运行以下命令,使用 MCP Inspector 来运行 MCP 服务器。

MCP Insepector 会提供一个直观的调试页面,

vbscript 复制代码
mcp dev server.py

运行成功后会输出类似: MCP Inspector is up and running at http://127.0.0.1 ,浏览器访问地址这个地址,可以看到如下页面,然后依次点开:Connect》Tools,即可查看到当前 mcp server 拥有的一个名为"add"的工具。

null
相关推荐
花千树-01015 分钟前
基于 IndexTTS2 的数字人语音生成 Pipeline 设计
人工智能·aigc·ai编程·tts
Omics Pro24 分钟前
马普所:生命蛋白质宇宙聚类
数据库·人工智能·算法·机器学习·数据挖掘·aigc·聚类
西门吹-禅25 分钟前
claude code mcp google
mcp·chrome-devtools
拉什福德Rashford1 小时前
一个人就是一支影视团队:实测国内最强影视级 AI 视频创作平台 TapNow——告别抽卡,导演级精准控制
人工智能·科技·ai作画·aigc·音视频·产品经理
予枫的编程笔记1 小时前
清华团队首发OpenClaw研究报告:AI智能体生态闭环全解析
aigc·ai智能体·ai生态·openclaw·清华ai·zeelinclaw·ai研究报告
语戚2 小时前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
zhangshuang-peta2 小时前
MCP 的渐进式披露
人工智能·ai agent·mcp·peta
iiiiii112 小时前
【论文阅读笔记】ReVal:让大模型强化学习真正支持离策略(off-policy)数据复用
论文阅读·笔记·语言模型·大模型·llm
怕浪猫2 小时前
第11章 内存机制:让模型记住对话历史(LangChain实战)
langchain·aigc·ai编程