LLM大模型之MCP·商品服务

目标

探索使用MCP与商品结合的场景,让大模型能回答和理解用户的产品需求并获得需要的产品信息。

  • 用户问答搜索产品场景
    • 根据关键字搜索产品详情。
    • 最热门商品
  • 用户问答根据用户个性化推荐场景
    • 根据用户ID推荐商品。

注意数据为mock,根据需要对接数据库或者其他数据来源即可。

实践

编写MCP服务程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 引入 fastmcp 包
from fastmcp import FastMCP
# 创建一个mcp服务
mcp = FastMCP("ProductServer")

# 定义工具,也就是实际执行的内容,类似于 RestAPI 中的 POST,mcp主要的能力都在这里体现。

# 定义根据关键字keyword搜索产品详情的工具函数
@mcp.tool()
def search_produc_by_keyword(keyword):
"""search product by keyword"""
# mock data
return {"product_name":"小米SU7 Ultra", "price": 529999, "category": "Car"}

# 定义获取热门商品的工具函数
@mcp.tool()
def get_popular_products():
"""List of popular products"""
# mock data
hot_products = ('[{"product_name":"iPhone 14 Pro Max", "price": 5999, "category": "Electronics"},'
'{"product_name":"小米SU7 Ultra", "price": 529999, "category": "Car"},'
'{"product_name":"红米K80", "price": 2399, "category": "Electronics"}]')

return hot_products


# 定义为指定用户获取推荐商品的工具函数
@mcp.tool()
def get_recommended_products(user_id):
"""Products recommended for users"""
# mock data
recommended_products = '{"product_name":"小米SU7 Ultra", "price": 529999, "category": "Car"}'
return recommended_products


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

运行mcp,验证一下是否能正常运行,确认能正常后,我们在Cherry Studio中配置一下mcp

1
fastmcp run main.py

在Cherry Studio中配置MCP

  • 在命令中填写 uv
  • 填写参数

    注意 /{PATH}/fastmcp/为这个mcp的项目路径

    1
    2
    3
    4
    --directory
    /{PATH}/fastmcp/
    run
    main.py
    其实组合起来就是 uv --directory /{PATH}/fastmcp/ run main.py,即跑起来文件项目
    JrtIR3

配置好后,我们可以看到工具中已经 包含了

  • search_produc_by_keyword 根据关键字搜索产品
  • get_popular_products 获取热门商品
  • get_recommended_products 获取推荐商品
    RIkSsQ

通过问答调用产品mcp

我们会发现在如下的问答过程,会根据问题,自动调用mcp服务获得需要的产品信息。

  • “我想了解一下当下的热门产品,帮我获取一下热门产品信息。”
    m7bpbS
  • “我想查询一下关键字:小米SU7 Ultra,了解一下它的价格。”
    4emS9b
  • “请为用户ID为1的用户,推荐商品。”
    jG3pwW

未来验证

模块化产品订单mcp 服务,即可接入大模型,进行问答调用。

相关

结合FastMCP创建自己的MCP服务,实现哔哩视频查询
基于FastMCP 2.0的MCP Server快速搭建指南