从零构建自己的MCP Server

前言

最近一直在研究 MCP,感觉这个协议真的会将大模型从单纯的对话发展为干活,前几天,连 Open AI 也已经选择跟进了。

前面,我们先了解了 MCP 的理论概念《一文读懂MCP:助力大模型接入合规"四肢" - 掘金》,然后,也掌握了如何使用现有的 MCP Server 扩展大模型能力《自动Bug清道夫:Gitee MCP Server初探 - 掘金》。

这次,我们就分享一下,如何自己实现一套 MCP Server。

本次分享为了降低开发难度,场景选择了非常基础的"文件系统"场景,客户端使用之前推荐的 Cherry Studio。

环境准备

本次分享使用 Python 开发,开发工具依然使用 Cursor。

基础环境

Python,版本为 3.12。

设置 Python 虚拟环境

隔离依赖影响。

Ctrl+Shift+P 选择 Python:Create Environment。

我使用的是venv方式,选择上面安装的Python版本即可。

安装 MCP 官方 SDK。

在 Cursor 终端中使用 pip 安装官方 SDK,代码中使用:

复制代码
pip install mcp

可以同时安装 mcpcli,运行调试使用。

css 复制代码
pip install mcp[cli] 

安装完成后可通过 mcp version 验证版本。

实现 MCP Server

代码

创建main.py,录入如下代码。

记得更改代码中的桌面路径

python 复制代码
import os
from mcp.server.fastmcp import FastMCP

mcp = FastMCP()  # 初始化 MCP 服务实例

@mcp.tool()
def get_desktop_files():
    """获取桌面上的文件列表"""
    return os.listdir(os.path.expanduser("<桌面路径>"))

if __name__ == "__main__":
    mcp.run(transport='stdio')  # 启动服务,使用标准输入输出通信

关键点解析:

  • @mcp.tool() 注解:声明此函数为 MCP 工具,客户端会自动发现该接口。
  • 函数注释:必须,详细描述功能和参数,大模型依赖注释理解接口用途。
  • 通信协议:transport='stdio' 表示使用标准输入输出,也可替换为 HTTP 或 WebSocket。

启动调试

终端使用 mcp 命令启动,使用的就是上面安装的 mcpcli。

底层使用的是官网提供的一套 web 界面,可以直接测试 MCP Server是否正常。

css 复制代码
mcp dev .\main.py

验证

访问 http://localhost:5173,左侧指令区域录入:

  • Command:直接保留 uv 即可,此处是 pip install 的,使用 python 虚拟环境,不需要绝对路径即可。
  • Arguments:复制"启动调试"控制台内容中的args即可。(上图红框内)

如果配置正常,点击 Connect 按钮后,下方会出现绿点和"Connected"字样。

到此,服务端已经开发完成。

客户端调用

客户端直接采用Cherry Studio。

详细说明可参考官网文档:docs.cherry-ai.com/advanced-ba...

准备工作:安装 uv、bun

Cherry Studio 目前只使用内置的 uv 和 bun,即需要保证如下位置有对应的exe文件。

文件位置:

  • Windows: C:\Users\用户名.cherrystudio\bin
  • macOS,Linux: ~/.cherrystudio/bin

安装方式有两种:

配置 MCP 服务器

设置 - MCP 服务器 中"添加服务器"即可。

  • 名称:随便起,容易区分即可。
  • 类型:我们使用的是命令启动,所以选择 STDIO。
  • 命令和参数:核心配置,和服务端验证时输入的内容类似,我为了省劲,直接都放到了"命令"中。
javascript 复制代码
C:/Users/xxx/.cherrystudio/bin/uv.exe run D:/xxx/mcp-hello/main.py

这里强烈建议vu.exe采用绝对路径

聊天框中使用 MCP

新建对话:

  1. 启用 MCP 服务器。
  2. 选择支持 函数调用 的模型,使用的 Qwen2.5-7B-Instruct 。
  3. 发送指令"我的桌面有哪些文件"。

即可看到调用我们的工具 get_desktop_files,并返回了正确的文件列表。

总结

整个过程还是比较顺利的,但是大家一定要注意区分服务端和客户端基础环境路径。比如:开发调试的 uv 是通过 pip install mcpcli 安装的,而客户端的 uv 是 CherryStudio 内的。

本次分享主要给大家展示下 MCP Server 开发的整个流程及开发的注意事项,后续会针对实际场景继续给大家分享。

相关推荐
骑着蜗牛撵大象327几秒前
闲鱼捡漏自动化:关键词加价格上限先粗筛,AI 大模型再做第一轮判定
大数据·人工智能·ai·自动化·二手交易·闲鱼·关键词监控
AI创界者1 分钟前
Python 进阶实战(十八):API 网关安全与异步鉴权中间件 —— 基于 AsyncIO 的 JWT 零拷贝验权与动态黑名单过滤
人工智能·python·aigc
涛声依旧-底层原理研究所5 分钟前
可控执行系统:企业 Agent 从演示到生产的架构重构
人工智能·架构
Data-Miner7 分钟前
不本地部署,大模型怎么安全用?
大数据·人工智能·安全
zwc32104320559 分钟前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
johnsong14 分钟前
AI前沿日报 · 2026-10-30 | 重构时刻——当基础设施开始重新洗牌
人工智能·重构
呆呆敲代码的小Y15 分钟前
【实战精选面试题】Unity精选面试题详细解答,按模块整理汇总
人工智能·游戏·unity·游戏引擎
意图共鸣21 分钟前
意图共鸣科技 · 时间胶囊(五)|认知中间层:设计思路与《认知律》
人工智能
深蓝AI3 小时前
10 万星投给了记忆:claude-mem 把编码 Agent 的断片压进 SQLite,值不值得装
人工智能·程序员
limuyang28 小时前
我在 2核2G 云主机上跑 OpenViking:一次关于云主机、模型选型与长期成本的真实复盘
人工智能·开源·ai编程