从入门到实践:构建你的第一个 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
相关推荐
猿小羽9 分钟前
AIGC 应用工程师(3-5 年)面试题精讲:从基础到实战的系统备战清单
面试·大模型·aigc·agent·rag
ujainu小24 分钟前
CANN仓库内容深度解读:昇腾AI生态的基石与AIGC发展的引擎
人工智能·aigc
盛夏光年爱学习1 小时前
上下文工程:构建高性能AI Agent的系统性架构设计
aigc
bloglin999991 小时前
Qwen3-32B报错Invalid json output:{“type“: “1“}For troubleshooting, visit
llm·json
Dimpels2 小时前
CANN ops-nn 算子解读:AIGC 批量生成中的 Batch 处理与并行算子
开发语言·aigc·batch
哈里谢顿2 小时前
MCP 入门完全指南:模型上下文协议详解与实战
mcp
山顶夕景2 小时前
【MLLM】nano-banana绘图
大模型·aigc·多模态
永远都不秃头的程序员(互关)2 小时前
基于CANN的ops-signal仓库实现AIGC音频生成中的动态窗函数融合优化——从STFT预处理到端到端低延迟合成
aigc·音视频
是枚小菜鸡儿吖2 小时前
从 0 到 1 生成自定义算子:CANN + AIGC 的自动化工作流
运维·自动化·aigc
种时光的人3 小时前
CANN生态场景化部署:cann-deployer实现AIGC大模型一键落地
aigc