持续交付2.0

手搓 一个 MCP Server, 让 Cursor 准确地更新项目工作进展。

Image

关注我,每天收获一个新技能!

1

引子:我遇到了一个“大问题”

在上周直播“如何在一个大项目中使用 Cursor 高效跟踪并完成工作任务”的时候,我“翻车了”。 直播视频可以看我的同名视频号。

我在使用Cursor 做软件开发的工作过程中,会让它帮我做任务分解,并将任务列表放在了一个名为 progress.md 的文档中。

然而,每当我开始一个新的工作任务,或者完成一个工作任务时,都使用提示词让 Cursor 自动帮我记录到 progress.md 对应的工作任务上。

然而,LLM 的时间概念很差,经常把当天的日期和时间写错,比如写成去年的 4 月份。

我就想到,应该使用一个 MCP Server 来搞定这个事情。于是,我就上网找了一个 MCP Time Server,配置到了 Cursor 中,解决了这个问题。按下面这样配置[1]一下就行了。

使用 pip install mcp-server-time 安装一下

Image

具体内容如下:

    "mcp-server-time": {

      "command": "python",

      "args": [

        "-m",

        "mcp_server_time",

        "--local-timezone Asia/Shanghai"

      ]

    },

]    }    
2
亲自动手搓个最简单的 time server

今天想起来,不如自己写一个 MCP Server,做为一次练手,也正好学习一下 MCP Server 的开发。

于是,问 Cursor 有什么框架可以快速实现一个 MCP Server。Cursor 回答是 fastMCP 。

FastMCP是一款专为构建MCP服务器而设计的框架。它提供了丰富的功能,包括工具、资源和提示的定义,支持客户端会话处理,让开发者能够快速搭建高效的服务器,并与客户端进行无缝交互。

它的主要功能如下:

• 简单易用的工具:通过addTool方法,快速定义服务器工具,执行客户端请求。 • 资源管理:支持文件、日志等资源的加载与共享,方便客户端访问。 • 提示定义:通过addPrompt方法,定义可重用的提示模板,优化LLM交互。 • 客户端会话处理:支持会话管理,实现1:1的客户端与服务器通信。 • SSE支持:通过SSE(Server-Sent Events)实现实时通信。

> mkdir mix-server

> cd mix-server

> uv venv venv

> source .venv/bin/activate

> uv pip install fastmcp


以下是 mix-server目录下的main.py内容:

import datetime

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("mix_server")  # 这句重要

@mcp.tool()

def get_local_current_time():  # 这个命名现在很重要,比如对 Cursor 说“得到本地当前时间”就靠它

    now = datetime.datetime.now()

    return now.strftime("%Y-%m-%d@%H:%M:%S")

# Entry point to run the server

if __name__ == "__main__":

    mcp.run()

)

使用命令fastmcp dev main.py 在当前的代码目录运行一下,可以看到下面的输出,就没有问题。


编辑你的 ~/.cursor/mcp.json 文件,如下所示:


{

  "mcpServers": {

    "mix_server": {

      "command": "uv",

      "args": [

        "--directory",

        "/path/to/your/local/main_py_dir",  #  这里写你的 main.py 所在的文件目录

        "run",

        "main.py"

      ]

    }

  }

}


在 Cursor 的 Agent auto-run模式下,输入提示词:“显示一下本地当前时间”。你就会看到下面的结果。

Image

我常用的提示词是:

在继续之前,请将我们的工作计划更新到instructions/process.md 文件中。通过 MCP server 得到当前系统时间。如果我们刚完成一项工作,就用这个时间为这项工作的完成时间。如果是刚开始一项工作,就用它作为这项工作的开始时间。要做对应的时间标记。

结果如下所示,已经修改了:


Image
Image
Image
 
3
结语

通过这次实践,我们不仅解决了一个实际工作中的痛点,还学习到了如何开发一个简单的 MCP Server。

有时候看似复杂的问题,其实可以通过一个简单的工具来解决。

更重要的是,这个过程让我们对 Cursor 的扩展能力有了更深的理解,也展示了 AI 编程助手如何通过自定义工具来提升工作效率。 

未来,我们还可以基于这个基础,开发更多实用的 MCP Server. 这些工具将帮助我们更好地利用 AI 编程助手,让开发工作变得更加高效和智能。

希望这篇文章能给你带来启发,也欢迎你在评论区留言,分享你的 MCP Server 开发经验!

4
项目资源

• GitHub地址:FastMCP: https://github.com/punkpeye/fastmcp • 使用文档:Model Context Protocol Docs: https://modelcontextprotocol.io/docs

FastMCP让MCP服务器的开发变得前所未有的简单,快来体验吧!