Contents

如何从零开始构建简单的MCP

link_to_page

简介

这是一篇介绍如何从零开始构建 MCP server 的简单说明。本说明由三部分组成:UV 介绍、代码开发和部署。

UV 简介

UV是一个基于 rust 的 Python 软件包和项目管理器。除了 UV 非常快之外,UV 与其他管理器没有什么区别。此外,MCP 使用 UVX(运行 python 包的 UV 工具)来运行服务器。因此,在本说明中,我们将使用 UV 来管理我们的项目。

安装

UV 现在可以使用 PyPi 进行安装:

1
pip install uv

[optional] 更改源代码

由于特殊的网络环境,我们有时需要更改 UV 的源。需要在环境中添加下面的命令。

1
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple

此命令将 UV 的源从官方网站暂时改为 TUNA。可以参考文档来彻底对源的使用路径进行彻底修改。

Python 设置

为方便起见,我们使用 UV 设置 python 解释器。

1
uv python install

然后,我们使用下面的命令在一个目录中设置一个 Python 项目。

1
2
3
4
mkdir note # build a new directory for our code
uv init ./note # setup the direcory as our workspace
cd note # get into the workspace
uv venv # starts a new virtual environment

如果成功,UV 会生成一些新文件,如下图所示:

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/7f0e8a0b-c4e1-4f01-9374-57601ba10ab2/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=60387fd1df2fdfb528be0b1ccc69cfe8e6f171706b05c113131de2ab499482ff&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

总结

我们已经安装了 UV,设置了解释器,并为我们的项目初始化了一个新的工作区。下一步,我们将完成项目,并实现一个非常简单的 MCP 服务器。

代码开发

在本节中,我们将开始实现一个非常简单的 MCP 服务器。首先,我们将浏览 workspace,安装一些项目以来,执行一些代码来验证 pipeline 是否通畅。

浏览工作区

我们可以在这里看到我们的项目结构。工作区中有一些由 UV 生成的文件。不过不用担心。我们只需注意三个文件:main.py、README.md 和 pyproject.toml。

  • main.py文件是执行代码的地方。
  • README.md文件中,你可能想写下一些关于代码的内容。
  • pyproject.toml 是打包时管理项目的文件,稍后会介绍。

安装依赖项

在本项目中,我们主要使用 FastMCP 。有关该 python 软件包的信息,请点击此处。简而言之,FastMCP 是使用 python 实现 MCP 服务器的一个简单但非常有用的工具。这里直接使用 uv 来进行安装。

1
uv pip install fastmcp

执行代码

安装好 FastMCP 后,我们就可以像下面这样执行代码了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from fastmcp import FastMCP  # Import the FastMCP class from the fastmcp module

# Create a FastMCP server instance with the name "note"
server = FastMCP("note")

# Register a tool/endpoint named "hello_world" using the @server.tool() decorator
@server.tool()
def hello_world():
    return "Hello World"  # The function returns "Hello World" when called

def main():
    server.run()

# Standard Python idiom to check if the script is being run directly
if __name__ == "__main__":
    main()  # Start the FastMCP server

如何运行代码

在终端中,我们可以使用 fastmcp 命令运行代码。

1
2
3
# in our project directory
source .venv/bin/activate #activate the virtual environment we built
fastmcp dev main.py # run the code in development code

如果运行顺利,你会在终端中看到一些信息。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/1daf1736-35f7-48c2-9156-c98068ca2637/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=d1a0631a6fad94705a3d205420c8cfd0b940a792f1feb0352a28a1a9b65b4065&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

这些信息告诉你,mcp inspector 正在 6274 端口运行,你可以通过它提供的 URL 链接访问。MCP inspector 是我们验证服务器是否起来的工具。我们不会花太多时间来介绍。

访问检查器服务器后,你会看到如下界面。点击左侧的连接按钮。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/2ace1a7c-a49b-49f6-a297-fa126365c60a/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=110a025bf32d58377274844aab93ca3ab181dcecce7e491d12cf0efef2625606&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

连接建立后,界面会变成这样。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/63247ba5-0aa1-47c6-bb5e-d878adca18c9/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=b8b38182ecb2f8a695de2f56d2386d17a65bbdb5a7354c2196f48daed2fe27e9&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

我们首先点击 “工具 “按钮,然后选择 “列表工具”,检查我们所使用的工具。然后运行。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/dd91f8d0-b87a-419a-aec0-ceb20c207b9a/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=fa014152d5625292d87564cc00e1f15aebfd83ac5a997c5aeaffe787ff50fae3&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

如果工具执行成功,就会看到如下界面的结果。那么你就成功运行了一个 mcp 工具。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/70e0fd59-96fd-4056-9142-dc77071a18bf/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=3f9a453ef49f5f9d90f05ab3dd98a193758f915de6f1bd411f32560aff9e121c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject

调试代码

我个人建议使用 UT、AT 或回归测试等各种测试在本地测试代码。因为这样更方便我们使用。MCP inspector 提供的工具不太好用。

一些建议

  1. 给函数写一些详细的注释,这样 llm 方便理解这个函数是什么「可以用 LLM 来生成」。
  2. 在输入跟输出中添加所期望的类型信息,可以避免一些因为输入类型带来的错误。

软件包部署

在本节中,我们可以部署 mcp 服务器供 LLM 使用。我们需要更新之前提到的 pyproject.toml 以打包我们的代码。

更新可执行信息

在我们的项目中,在 pyproject.toml 中添加以下几行:

1
2
[project.scripts]
note = "main:main"  # Executes the `main()` function in `main.py`

添加依赖项信息

我们还需要为软件包添加依赖项,可以使用以下命令将我们使用的软件包添加到 pyproject.toml 中

1
uv add fastmcp

当然,如果我们有很多软件包需要依赖,这看起来会很不舒服。我们也可以使用其他工具来实现这一点。

部署代码

我们使用以下命令打包代码并运行。

1
2
3
uv build --wheel # packaging your code into wheel
uv install ${PATHTOYOURPACKAGE} # install the packaged code
uvx --python=$(which python) ${PACKAGE} # run the package using specific python interpreter

如果一切顺利,你会在 CLI 中看到以下信息。它会告诉你 MCP 服务器正在运行。

https://prod-files-secure.s3.us-west-2.amazonaws.com/9ae3228c-6982-46ec-8946-abb7d53f72af/129cc91e-3fce-4702-9189-a7d04991a5d4/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4663EHUX5BN%2F20260516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260516T144738Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJHMEUCIDwWh4qmHelwOp8nzn5HYMFmu3kwyUqgXUc7HGBhqDrqAiEA1r2k2SIVdjqLWfWaNmXHYhWebjzYAb%2F60KVI1HJONe0qiAQIiv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLI1Ii4nGA0ygWErVCrcA9bL5nBHOuorlKBAc%2FRy3LQZ%2Fm%2BOyN3zKVc48BUgpY1W%2FWUd1LPc%2F6I1lh0W8R5KBmMzUIyzIwdVElbqU4hE%2FynGupvtbPrusy0L7RZmfrEpvRmLR0mrg3XdiFZJ9H4nJsQGf0alC1frg5dorweM7iBXpVrivuC71nK1eTZ%2BNqbN599yDhYmfuAhWyB%2FcnCioPqzdMut9F3rquf08MsJqSvoHDP6tffuaCwXBjhpAvNX3uX7YAmz4khn%2BhLT08YAFArsllUnuRQ55CTZ9VTNgmaQDfXE2hxoXu8Usf2T%2Bra1%2FBZRsADBd2qVijL8II62vohztm%2B%2Bqo5TnsapOwY5wMONsrz4dlitmOpCZ9EzZmvSjpqPvMOhyM0qJDKT7Qa17e3bZUIdVu7rq5TjGvuMWk%2FldMLmRDPBF0FSF7TN800R7ZlMAMsioPFitSVRWRDbyfeHK3XcV5F6%2FwWx6PSRIu57xm9kB1kpCjylfCi7GNc5M5ek%2Fv9M8AV4MfSPa4XB%2BMRazyw2ptXWJHYKk6aO%2F2mGwMfHutG58COrf%2FMt8Jf0YAZ6OjF%2FLXxDRo6KnSyT%2BQ9sFoMEelJix4mvErzhPF4GE6F%2By%2ByobdpDom6OJkPNU%2BWfwtRmdhTfwleTMI%2FroNAGOqUBFFneaTuvj1UQe%2BSEMCcW60CyrO%2B7THlWfdLT7BUd43ZE2BE9kVophanqYHxXMeXyol4Bbqhc%2FGhaRuqJ5cOWXFBlLjtwUDx7xA0t4DXKecjv9wdc8lf79S5ZZgcFtnFFvjU65b6EriVxXds6FbNofj%2BBL5Q6Oiz1xz3WMwXzDIbdXJsNu24iMLZ6JrzlAoFTXAspP3ye0jwqbP6v%2BGiVq1444bP8&X-Amz-Signature=90b4932a2c76459a041800c023dcc926ed20941bdbfef1f269f866f1a173a25f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject