从入门到实践:构建你的第一个 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
相关推荐
硬核隔壁老王3 分钟前
从零开始搭建RAG系统系列(二):手把手教你从零搭建RAG系统实战
人工智能·程序员·llm
海风极客25 分钟前
用通俗的话解释下MCP是个啥?
ai编程·mcp
ZHOU_WUYI1 小时前
吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
agent·mcp
无风听海9 小时前
Milvus单机模式安装和试用
大模型·llm·milvus·向量数据库
一个处女座的程序猿10 小时前
LLMs之MCP:如何使用 Gradio 构建 MCP 服务器
llm·mcp
Pitayafruit12 小时前
还在配置规则文件和智能体?Roo Commander:预置90+领域专家,开箱即用的AI编程新体验
aigc·ai编程·trae
zstar-_12 小时前
【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
人工智能·python·llm
shengjk113 小时前
FastMCP vs MCP:协议标准与实现框架的协同
mcp
Mr数据杨13 小时前
AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆
gpt·aigc·音视频
Tadas-Gao14 小时前
从 GPT 的发展看大模型的演进
人工智能·gpt·机器学习·大模型·llm