从入门到实践:构建你的第一个 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
相关推荐
栈溢出的浪漫7 小时前
国内MCP工具推荐:AIbase宣布推出MCP资源网站
github·开发者·mcp·aibase·资源网站
跨境Jacky8 小时前
亚马逊CLI实测:成本维护效率三维度横评传统爬虫
跨境电商·mcp·sorftime
小燕子~~8 小时前
PS 怎么调整图片尺寸?4 种方法避免拉伸变形与放大失真
图像处理·人工智能·ai·aigc·photoshop
小帅不太帅10 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
玉鸯11 小时前
多 Agent 系统通信的实现原理与最佳实践
llm·agent·mcp
VIP_CQCRE11 小时前
用 Ace Data Cloud 快速接入 Suno 声音克隆 API:让 AI 音乐唱出你的专属声线
ai·aigc·api·音乐生成·suno
TunerT_TQ12 小时前
Valhalla 静态工程审阅 #009|Continue 源码证据驱动评测【大厂开源基础设施特辑】
vscode·测试工具·开源·llm·github·jetbrains·ai编程助手
weixin_4713830313 小时前
01 LLM简介
llm
极连AI13 小时前
极连AI平台解读、Codex5.6仅需0.01倍率,无需Token焦虑,极速响应
人工智能·gpt·chatgpt·aigc·ai编程·ai写作·gpu算力
远航计算机14 小时前
职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册
大数据·人工智能·自动化·aigc·火山引擎