AI编程必看:从0到1写一个 MCP服务

1- AI 编程必看:从 0 到 1 写一个 MCP 服务

1.1- 什么是 MCP?

MCP(Model Context Protocol)是一种开放标准协议,旨在让 AI 模型与外部工具和资源进行交互。它允许 AI 模型调用各种工具、访问数据和执行操作,极大地扩展了 AI 的能力范围。

通过 MCP,开发者可以创建自定义工具和服务,让 AI 模型能够:

  • 调用 API 和执行代码
  • 访问和处理数据
  • 控制外部系统和服务
  • 执行特定领域的任务

看再多 MCP 教程,都不如直接上手写一个。

Deepseek 等模型训练经验告诉我们:

" 干中学 " 效率最高。

本文推荐一些常用 AI 编程工具,然后一步步教你写一个 MCP 服务器。

最后,再推荐一些好用的 MCP 应用市场。

MCP 是未来让 AI Agent 变得更简单易用的关键,趋势已非常明显,值得持续跟进学习。

1.2- 工欲善其事必先利器

Claude Sonnet 3.5 问世后,带动用这个模型的 AI 编程工具大火。

下面是常见的 AI 辅助编程工具,付费的有 Cursor、Windsurf,免费的可选 Trae(字节出品)。

喜欢自定义和 DIY 的,推荐 Visual Studio Code + Cline,再配置各种免费薅的 API key。

比如 Gemini 或者火山方舟 Deepseek V3,一定可以达到可用程度。

关于如何免费获取 API key,之前写有教程:

API Key 获取教程

1.2.1- Cursor

https://www.cursor.com/
image

Cursor 是一款基于 VSCode 的 AI 编程工具,内置 Claude 模型,支持代码生成、解释和重构,对 MCP 有很好的支持。

1.2.2- Windsurf

https://codeium.com/windsurf
image

Windsurf 是 Codeium 推出的 AI 编程工具,提供强大的代码补全和生成功能,同样支持 MCP 协议。

1.2.3- Trae

https://www.trae.ai/
image

Trae 是字节跳动推出的免费 AI 编程助手,支持多种编程语言,内置 MCP 支持,适合初学者使用。

1.2.4- Visual Code + Cline

https://cline.bot/
image

Cline 是 VSCode 的插件,可以连接多种 AI 模型,支持 MCP 协议,适合喜欢自定义的开发者。

1.3- 手把手创建第一个 MCP Server

有编程工具,接下来,手把手教完成第一个 MCP server

1.3.1- 第一步:打开系统终端或安装第三方工具

强推 Warp,AI 时代的 Terminal,有 LLM 加持,真的好用,且全平台支持(Linux、Windows、Mac)。

虽然要求注册账号登录有点怪,但也能理解。

官网下载:
https://www.warp.dev/
image

1.3.2- 第二步:创建 MCP 项目

终端中输入命令: mkdir mcp-demo ,敲回车

命令作用:创建一个文件夹,叫 mcp-demo

输入: cd mcp-demo 进入文件夹
image

输入: touch main.py 创建一个叫 main.py 的文件。
image

然后输入 python -m venv myenv 创建一个叫 “myenv” 的虚拟环境,避免 Python 库版本冲突。
image

激活虚拟环境

  • macOS/Linux 下输入:source myenv/bin/activate
  • Windows 输入:myenv\Scripts\activate
    image

1.3.3- 第三步:安装 SDK,输入代码

安装 MCP 的 Python SDK,命令:pip install mcp

其他安装方法和介绍见:
https://github.com/modelcontextprotocol/python-sdk

接着,用任意代码编辑器打开 main.py,输入以下内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import httpx
from mcp.server.fastmcp import FastMCP

# 创建MCP服务器
mcp = FastMCP("Demo")

# 简单加法工具
@mcp.tool()
def add(a: int, b: int) -> int:
    """两数相加"""
    return a + b

# 直接运行时的入口点
if __name__ == "__main__":
    print("服务已启动")
    mcp.run()  # 注意:这里需要添加mcp.run()来启动服务器

注意:上面代码中的 if __name__ == "__main__": 部分需要添加 mcp.run() 来启动服务器,否则服务不会运行。

创建一个最简单的 MCP 服务器,只提供一个工具:两个数字的加法。

1.3.4- 第四步:运行 MCP 服务器

在终端中,确保你已激活虚拟环境,然后运行:

python main.py

如果一切正常,你应该会看到类似这样的输出:

服务已启动
INFO:     Started server process [12345]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

这表明你的 MCP 服务器已经在本地端口 8000 上运行了。

1.4- 使用 MCP 服务器

1.4.1- Cursor 为例

首选项 -> Cursor Settings,打开如下图,点击 “Add new MCP server”

image

Name:随便起名
Command: mcp run /创建文件的完整目录/mcp-demo/main.py
image

注意:请将路径中的 /创建文件的完整目录/ 替换为你实际的文件路径。在 Windows 系统中,路径应使用反斜杠,例如 C:\Users\YourName\mcp-demo\main.py

过一会,MCP 服务器会启动,指示器会变绿色。
image

Cursor 右侧对话,输入 add 6,88,调用 MCP 中的 add 完成计算。

image

1.4.2- Cline 为例

打开 Cline 插件,按图示顺序点击

image

打开 MCP servers -> installed -> Configure MCP Servers

编辑配置文件,添加一条:
image

"mcp-demo": {
    "command": "mcp",
    "args": [
        "run",
        "/创建文件的完整目录/mcp-demo/main.py"
    ],
    "disabled": false,
    "autoApprove": [
        "add"
    ]
}

注意:同样需要替换实际的文件路径,Windows 系统使用反斜杠并需要转义,例如:C:\\Users\\YourName\\mcp-demo\\main.py

保存配置后,Cline 会自动连接到你的 MCP 服务器。你可以在聊天窗口中输入 add 6,88 来测试。

1.4.3- 持续迭代 MCP 功能

如果觉得上面的例子太简单。

你可以在这个 main.py 代码基础上迭代,给 MCP 增加更多 Tool,甚至还可以看官方文档,增加 Resource 或 Prompt 调用。

举个例子,再增加一个叫 call_llm 的工具,让它调用火山方舟的 Deepseek V3 回答问题。

迭代后代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import httpx
from mcp.server.fastmcp import FastMCP

# 创建MCP服务器
mcp = FastMCP("Demo")

# 简单加法工具
@mcp.tool()
def add(a: int, b: int) -> int:
    """两数相加"""
    return a + b

# LLM API调用工具
@mcp.tool()
def call_llm(prompt: str, system_prompt: str = "你是人工智能助手.") -> str:
    """调用LLM API获取回答"""
    # API配置
    url = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY"  # 替换为你的实际API密钥
    }
    data = {
        "model": "ep-20250222222029-sx6sd",
        "messages": [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": prompt}
        ]
    }
    
    try:
        # 发送请求
        response = httpx.post(url, headers=headers, json=data, timeout=30.0)
        response.raise_for_status()
        result = response.json()
        
        # 提取回答
        if "choices" in result and len(result["choices"]) > 0:
            return "回答:" + result["choices"][0]["message"]["content"]
        else:
            return "回答:未获得有效回答"
    except Exception as e:
        return f"回答:发生错误: {str(e)}"

# 直接运行时的入口点
if __name__ == "__main__":
    print("服务已启动")
    mcp.run()  # 启动MCP服务器

输入 Tool 名称,发给 AI: call_llm " 李白是谁 ",输出如下:

1.4.4- Cursor 结果

image

1.4.5- Cline 结果

image

1.5- 好用的 MCP 市场

1.5.1- Smithery.ai

华裔青年 Henry Mao 打造的产品。
https://smithery.ai/
image
目前发现交互体验最好的 MCP 导航网站,每个 MCP Server 都搭配或生成使用代码:
image

1.5.2- MCP.so

著名独立开发者 idoubi 开发的 MCP.so 导航,收录了 2k 多个 Server,数量庞大。

作者 X 账号:
https://x.com/idoubicc

image

1.5.3- MCPs.live 搜索

好友最近研究几个 MCP 客户端实现,顺手借助 AI 开发了一个 MCP 搜索站。

image

1.5.4- Composio MCP

image
https://mcp.composio.dev/

这个站点特别的地方是,每个 MCP 都可以生成一个 SSE URL,开发者可以在自己应用中集成这个 MCP 的能力,无需从 0 开发。
image

1.5.5- Pulse MCP

image
也是设计很棒的 MCP 站,收录了 1500 多个 Server。

比较特别的是,网站提供了很多 Use Case,让人更直观了解怎么用。
image

1.5.6- 更多说明

MCP 导航和市场在飞速扩张,但质量稂莠不齐,注意甄别。

预计,未来会出现很多付费 MCP Server,也会出大量支持 MCP 的客户端软件,不仅仅是现在的 AI 编程工具。

比如群友 Vaayne 正在开发的著名 AI 聊天客户端 Cherry Studio,目前在紧锣密鼓测试 MCP 功能,估计很快能上线。
image

image
如果想了解更多 MCP 相关知识,可参考:
MCP 相关知识

1.6- 后记

这两天看了一些 MCP 教程,很多只有例子,没说怎么配置环境、怎么在 Cursor、Cline 等编辑器中配置。

看完教程,还是不知道怎么搞,也不知道怎么开发自己的 MCP Server。

索性写个教程,一方面是自己的学习总结,另一方面帮助和我一样困惑的人。

1.7- 常见问题解答

1.7.1- 为什么我的 MCP 服务器无法启动?

最常见的原因是:

  • 没有正确安装 MCP SDK(pip install mcp
  • 忘记在代码中添加 mcp.run()
  • 端口 8000 被其他程序占用

1.7.2- 如何在 Windows 系统中正确配置路径?

Windows 系统中路径使用反斜杠 \,在 JSON 配置中需要转义,例如:C:\Users\YourName\mcp-demo\main.py

1.7.3- 如何让 MCP 服务器在后台运行?

可以使用 nohup python main.py & 命令在 Linux/Mac 系统中后台运行,或在 Windows 中创建一个服务。

1.7.4- 什么是 MCP 工具和资源?

MCP 协议中有两个核心概念:

  • 工具 (Tool):可以执行特定功能的函数,如我们示例中的 addcall_llm
  • 资源 (Resource):可以被 AI 模型访问的数据源,如文件、数据库或 API

1.7.5- 如何调试 MCP 服务?

  1. 使用日志:在代码中添加 print 语句或使用 Python 的 logging 模块
  2. 检查端口:确保 8000 端口没有被其他程序占用
  3. 检查错误信息:终端会显示详细的错误信息
  4. 使用 try-except 块捕获异常并打印详细信息

1.7.6- 如何部署 MCP 服务到生产环境?

  1. 使用 Docker 容器化你的 MCP 服务
  2. 配置环境变量而不是硬编码 API 密钥
  3. 使用反向代理如 Nginx 来管理流量
  4. 考虑使用云服务如 AWS Lambda 或 Google Cloud Functions

1.7.7- 如何扩展 MCP 服务的功能?

  1. 添加更多工具:根据需求添加更多功能函数
  2. 添加资源:使用 @mcp.resource() 装饰器定义资源
  3. 添加提示:使用 @mcp.prompt() 装饰器定义提示模板
  4. 集成外部 API:连接到其他服务和数据源

1.7.8- 引用链接

  1. Cursor
  2. Windsurf
  3. Trae
  4. Cline
  5. Warp
  6. MCP Python SDK
  7. Smithery.ai
  8. idoubicc X账号
  9. Composio MCP
  10. MCP 相关知识
  11. MCP官方文档
  12. MCP GitHub仓库