MCP开发入门

环境配置

这里采用 python-sdk:mcp/python-sdk

我们根据 readme.md 文档来操作就行

安装 uv

Installation | uv选择自己对应的操作系统,复制代码运行即可

安装完后,在命令行输入

uv python list

可以看到自己电脑的 python 版本和安装路径

如果你想安装某个版本的 python,例如我要下载 3.13 版本的 python,输入

uv python install 3.13

初始化

cd 到我们的项目文件夹,初始化当前文件夹为一个 python 工程

uv init . -p 3.13

添加 MCP 到你的项目依赖中

uv add "mcp[cli]"

上面添加 MCP 依赖的 uv 代码也可替换为下面

pip install "mcp[cli]"

编写代码

此时就已经初始化好了项目,会发现自动生成了一些文件

main 文件系统给我们自动生成了 demo 代码

"""
FastMCP quickstart example.

cd to the `examples/snippets/clients` directory and run:
    uv run server fastmcp_quickstart stdio
"""

from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"


# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """Generate a greeting prompt"""
    styles = {
        "friendly": "Please write a warm, friendly greeting",
        "formal": "Please write a formal, professional greeting",
        "casual": "Please write a casual, relaxed greeting",
    }

    return f"{styles.get(style, styles['friendly'])} for someone named {name}."

@mcp.tool()分析

# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b
  • @mcp.tool()声明了下面函数是一个 MCP 工具,使该函数能够被MCP框架识别和调用

  • 该函数的注释是必须要写上的,这段注释用于告诉大模型它的功能是什么

  • 类型修饰符必须要加上,用于帮助大模型理解该工具的传参类型

@mcp.resource()分析

# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"
  • @mcp.resource()将函数声明为 MCP 资源处理器
  • greeting 是资源协议/类型标识符
  • {name} 是路径参数占位符,支持动态值替换

@mcp.prompt()分析

# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """Generate a greeting prompt"""
    styles = {
        "friendly": "Please write a warm, friendly greeting",
        "formal": "Please write a formal, professional greeting",
        "casual": "Please write a casual, relaxed greeting",
    }
  • @mcp.prompt()将函数标记为提示词生成器
  • 根据输入返回字符串类型的提示词

现在我们来运行部署这一个程序

运行与测试

SSE

在 main 文件下面添加如下代码,然后运行

if __name__ == "__main__":
    mcp.run(transport="sse")

在这里插入图片描述

记录这个地址,并加上sse

http://127.0.0.1:8000/sse

现在我用通义灵码测试一下,点击个人设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

命令输入下面代码即可

http://127.0.0.1:8000/sse
  • 中间的路径为你项目文件夹的绝对路径
  • 最后的 py 文件名替换为你项目中的文件名,这里我用的是项目默认生成的 main.py

在这里插入图片描述

这里显示为绿色即连接成功

测试

在这里插入图片描述

这里就简单搭建了一个demo

部署

我们可以部署在一个云服务器上或者任何可以通过公网访问的服务器

放在服务器上部署需要在main.py添加一行代码

if __name__ == "__main__":
    mcp.settings.host = "0.0.0.0"
    mcp.run(transport="sse")
  1. 将代码文件上传到服务器

  2. 在终端进入对应目录,输入一下代码配置虚拟环境

    uv venv
    
  3. 输入命令安装依赖

    uv pip install .
    
  4. 启动服务

    uv run main.py
    

剩下的操作就很简单了,跟上面测试 MCP 一样,只不过把地址换成自己的公网地址即可

http://<server-ip>:8000/sse
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐