游乐游手机版
首页/AI热点日报/热点详情

快速上手:开发你的第一个MCP Server

类型:热点整理2026-07-04
想要快速掌握 MCP Server 开发?本文提供了一份完整的实战教程,从环境搭建到代码实现,再到通过 Cline 进行全流程测试,带你一步步走通所有环节。核心内容分为三部分:首先梳理主流 AI 应用对 MCP Server 的支持现状;接着动手实现一个能查询物流信息的 Server;最后使用 Cl

想要快速掌握 MCP Server 开发?本文提供了一份完整的实战教程,从环境搭建到代码实现,再到通过 Cline 进行全流程测试,带你一步步走通所有环节。核心内容分为三部分:首先梳理主流 AI 应用对 MCP Server 的支持现状;接着动手实现一个能查询物流信息的 Server;最后使用 Cline 连接并验证功能。

在《一文说清楚让LangChain大佬“开战”的MCP是什么?》中已经详细介绍了 MCP 的基本概念。简单来说,MCP 为连接 AI 应用与数据源提供了一个通用的开放标准,用单一协议取代了碎片化的集成方式。通过这一机制,能力有限的 AI 应用可以变得更加强大和灵活。

在整个 MCP 架构中,AI 应用(例如 Cline)作为 MCP Hosts,通过内部的 MCP Client 接入不同的 MCP Server,从而实现增强能力的目标。

根据 MCP 协议,当 AI 应用连接到 MCP Server 后,可以获取 Tool、Prompts、Resources 等多种能力。

更多背景知识可以回看那篇基础文章。接下来直接进入实战环节。

1. 主流AI应用对MCP Server能力的支持现状

目前 MCP 仍处于快速发展阶段,从官方公开的信息可以看出,主流 AI 应用对 Tool 能力的支持已经非常广泛,这也是本文要重点演示的核心能力。

2. 手把手实现MCP Server

我们将实现一个简单的 Server,它会提供一个 tool,可以通过订单号查询物流信息。这个 Server 在整个架构中的位置就是下图中绿色的模块:

2.1 开发环境配置

首先安装 uv 并设置 Python 项目和环境。uv 是一个用 Rust 编写的极快的 Python 包和项目管理器,能够显著提升依赖管理效率。

安装uv工具(Windows)

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

重新开启一个终端,并确认uv已经安装成功

PS G:workspaceideapyhello-mcp-server> uv version
uv 0.6.6 (c1a0bb85e 2025-03-12)

在 macOS/Linux 环境中安装 uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

创建项目,初始化环境:

# 初始化项目
uv init hello-mcp-server

# 创建Python虚拟环境
cd hello-mcp-server
uv venv

# 激活虚拟环境
.venvScriptsactivate

# 安装依赖
uv add mcp[cli]

2.2 创建MCP Server:hello_mcp_server.py

新建一个 Server,并添加 tool 来模拟通过订单号查询物流信息的功能。

2.2.1 定义Server实例

导入必要的包并定义 mcp 实例:

"""
pip install mcp[cli]
"""
from mcp.server.fastmcp import FastMCP
from pydantic import Field

# Initialize FastMCP server
mcp = FastMCP("hello-mcp-server", log_level="ERROR")

2.2.2 注册Tool工具

通过 @mcp.tool() 注解,可以将一个函数注册为 Tool:

# 注册工具的装饰器,可以很方便的把一个函数注册为工具
@mcp.tool()
async def query_logistics(order_id: str = Field(description="订单号")) -> str:
    """查询物流信息。当用户需要根据订单号查询物流信息时,调用此工具

    Args:
        order_id: 订单号

    Returns:
        物流信息的字符串描述
    """
    # 统一的物流信息数据
    tracking_info = [
        {"time": "2024-01-20 10:00:00", "status": "包裹已揽收", "location": "深圳转运中心"},
        {"time": "2024-01-20 15:30:00", "status": "运输中", "location": "深圳市"},
        {"time": "2024-01-21 09:00:00", "status": "到达目的地", "location": "北京市"},
        {"time": "2024-01-21 14:00:00", "status": "派送中", "location": "北京市朝阳区"},
        {"time": "2024-01-21 16:30:00", "status": "已签收", "location": "北京市朝阳区三里屯"}
    ]

    # 格式化物流信息
    result = f"物流单号:{order_id}\n\n物流轨迹:\n"
    for item in tracking_info:
        result += f"[{item['time']}] {item['status']} - {item['location']}\n"

    return result

2.2.3 通过MCP Inspector测试Server

MCP Inspector 是一个交互式开发工具,专门用于测试和调试 MCP 服务器。

启动MCP Inspector:

执行命令:mcp dev hello_mcp_server.py

(hello-mcp-server) PS G:workspaceideapyhello-mcp-server> mcp dev hello_mcp_server.py
Starting MCP inspector...
Proxy server listening on port 3000

? MCP Inspector is up and running at http://localhost:5173 ?

在浏览器中打开 http://localhost:5173 即可进入界面。

连接MCP Server:

点击“Connect”启动 MCP Server 并建立连接。具体配置如下:

  • 传输层:使用标准输入输出
  • 命令:uv
  • uv 命令的参数根据项目路径填写

查询所有Tool:

  1. 点击“Tools”能力标签
  2. 点击“List Tools”,查询 server 中所有的 tool(调用协议的 tools/list 端点)
  3. 显示所有 tool 列表

执行Tool测试:

  1. 选择需要测试的 tool
  2. 输入入参:ORDER-123456,点击“Run Tool”(调用协议的 tools/call 端点)
  3. Tool 成功返回结果

3. 通过Cline测试MCP Server

打开 Cline,点击顶部的“MCP Server”。

选择“Installed”标签。

点击“Configure MCP Servers”,右侧将弹出配置文件。填入刚刚编写的服务器配置信息并保存:

"hello-mcp-server": {
  "name": "第一个MCP服务",
  "key": "hello-mcp-server",
  "command": "uv",
  "args": [
    "--directory",
    "G:\workspace\idea\py\hello-mcp-server\",
    "run",
    "--with",
    "mcp",
    "mcp",
    "run",
    "hello_mcp_server.py"
  ],
  "disabled": false,
  "autoApprove": []
}

完整命令解析如下:

uv --directory G:workspaceideapyhello-mcp-server run --with mcp mcp run hello_mcp_server.py

可分解为三段:

  1. uv --directory G:\workspace\idea\py\hello-mcp-server 指定工作目录
  2. run --with mcp 运行时必须安装 mcp 包
  3. mcp run hello_mcp_server.py 使用 mcp 启动 server

左侧将生成对应的服务列表,点击“Done”退出。在 Cline 对话框中输入提示词:查一下订单为“ORDER-123456”的物流信息。Cline 随即调用 MCP Server,点击“Approve”同意,Server 调用成功。

(Cline 交互截图省略,但实际测试中可看到完整流程。)

3.1 Cline连接MCP Server的客户端源码分析

Cline(相当于 MCP 架构中的 Host)的源码中,MCP 相关代码位于 src/services/mcp/McpHub.ts,其中 MCP Client 连接 MCP Server 的核心逻辑在 connectToServer 方法中:

private async connectToServer(name: string, config: StdioServerParameters): Promise {
  ...

  try {
    // 创建新的MCP客户端实例,设置客户端名称和版本信息
    const client = new Client(
      {
        name: "Cline",
        version: this.providerRef.deref()?.context.extension?.packageJSON?.version ?? "1.0.0",
      },
      {
        capabilities: {},        // 客户端没有给服务端暴露能力
      },
    )

    // 创建标准输入输出传输实例,配置命令、参数和环境变量
    // 这里就是配置文件的内容
    const transport = new StdioClientTransport({
      command: config.command,
      args: config.args,
      env: {
        ...config.env,
        ...(process.env.PATH ? { PATH: process.env.PATH } : {}),
      },
      stderr: "pipe",
    })

    ......

    // 启动传输层,建立实际的进程间通信通道
    await transport.start()

    ...

    // 建立MCP客户端连接
    // 连接成功后更新服务器状态为已连接,清除错误信息
    // 初始化并获取服务器提供的工具和资源列表
    await client.connect(transport)
    connection.server.status = "connected"
    connection.server.error = ""

    // 初始化获取工具资源列表
    connection.server.tools = await this.fetchToolsList(name)
    connection.server.resources = await this.fetchResourcesList(name)
    connection.server.resourceTemplates = await this.fetchResourceTemplatesList(name)
  } catch (error) {
    ......
  }
}

至此,我们成功实现了一个提供 Tool 能力的 MCP Server。整个流程跑通后,你可以在自己的 AI 应用中快速集成类似能力,让 AI 真正具备扩展性和实用性。

来源:https://www.53ai.com/news/finetuning/2025032120374.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。