电商数据协议服务

一个基于fastMCP的电商数据协议服务,通过FastAPI和PostgreSQL数据库提供REST API和MCP工具,使对话式AI代理能够探索商店信息如客户、库存和订单。

  • by parishwolfe
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 parishwolfe/mcp

使用说明

MCP模拟商店示例

此存储库包含一个端到端的示例 fastMCP 该服务器公开了一个由FastAPI应用程序和PostgreSQL数据库支持的模拟电子商务商店。它演示了如何在REST API和模型上下文协议(MCP)工具之间共享相同的数据源,以便对话式人工智能代理可以探索商店信息,如客户、库存和订单。

项目布局

.
├── app/                  # FastAPI application (SQLAlchemy models, schemas, CRUD helpers)
├── mcp_server/           # fastMCP server exposing store data as tools
├── sql/                  # SQL scripts for schema and seed data
├── docker-compose.yml    # Local PostgreSQL instance with preloaded data
├── requirements.txt      # Python dependencies for both servers
└── .env.example          # Example environment variables

先决条件

  • Python 3.11+
  • 码头工人 Docker Compose(v2或更新版本)
  • pip 用于安装Python依赖项

1.启动数据库

docker compose up -d

PostgreSQL容器装载 sql/ 目录进入 /docker-entrypoint-initdb.d,所以模式(create_tables.sql)和样本数据(seed_data.sql)在集装箱首次启动时自动装载。

2.配置环境变量

复制示例环境文件,如果更改了任何凭据或主机名,请对其进行调整:

cp .env.example .env

FastAPI服务和fastMCP服务器都读取了 DATABASE_URL 环境变量。默认连接字符串假定您正在本地运行 docker-compose.yml 配置。

3.安装依赖项

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

4.运行FastAPI后端

uvicorn app.main:app --reload

端点示例

  • GET /customers –列出所有客户
  • GET /customers/{id} –检索单个客户
  • GET /products –浏览可用产品
  • GET /inventory –检查库存水平
  • GET /orders –查看包含嵌套行项目的订单
  • GET /orders/{id} –获取特定订单

5.运行fastMCP服务器

python -m mcp_server

服务器注册了以下工具:

工具名称 描述
list_customers 返回所有客户及其元数据。
list_products 列出可用产品。
list_inventory 提供当前库存水平。
list_orders 检索包含客户和行项目数据的订单。
get_order 按ID返回单个订单,如果缺少,则返回错误。
get_store_summary 汇总计数和高级指标。

每个工具都使用从FastAPI后端使用的相同SQLAlchemy模型导出的JSON进行响应,确保HTTP和MCP接口之间的一致表示。

6.从流行的AI聊天机器人连接

以下是常见MCP兼容客户端的快速入门说明。如果不同,请替换虚拟环境Python解释器的路径(例如。, .venv/bin/python).

拟人克劳德桌面

  1. 打开 克劳德桌面 并导航到 设置→ 配置MCP服务器.
  2. 使用以下命令添加新服务器:
    • 命令: python
    • 参数: -m mcp_server
    • 工作目录:此存储库的根。
  3. 确保 DATABASE_URL Claude可以使用环境变量(例如,通过从导出Claude的shell会话启动Claude)。
  4. Claude现在可以调用以下工具 get_store_summary 在交谈中。

光标IDE

  1. 打开游标并运行命令 光标:配置MCP服务器.
  2. 使用命令创建条目 python 和论点 -m mcp_server.
  3. 通过配置面板指定环境变量(可选),以便MCP服务器可以访问PostgreSQL实例。
  4. 使用“连接MCP服务器”命令在聊天侧边栏中提供工具。

VS代码+继续

  1. 安装 继续 扩展(版本0.9.0+)。

  2. 打开“继续”设置(continue.json)并添加:

    {
      "servers": [
        {
          "name": "mock-store",
          "command": "python",
          "args": ["-m", "mcp_server"],
          "cwd": "${workspaceFolder}",
          "env": {
            "DATABASE_URL": "postgresql+psycopg2://mcp_user:mcp_password@localhost:5432/mcp_store"
          }
        }
      ]
    }
    
  3. 重新启动继续;模拟商店工具将出现在MCP工具选项板中。

OpenAI桌面/ChatGPT桌面(测试版MCP支持)

  1. 从激活了虚拟环境的终端启动客户端,以便MCP服务器依赖项可用。
  2. 在MCP配置UI中,添加一个指向的自定义服务器 python -m mcp_server.
  3. 使用UI映射环境变量或依赖于您的shell环境。

提示: 如果客户端需要到解释器的绝对路径,请运行 which python (Linux/macOS)或 where python (Windows)在虚拟环境中,并将该路径粘贴到MCP配置中。

数据库管理

  • 重置数据: 停止集装箱(docker compose down),删除卷(docker volume rm mcp_postgres-data),然后重新开始。

  • 手动迁移: 您可以使用以下命令重新运行SQL脚本 psql:

    psql postgresql://mcp_user:mcp_password@localhost:5432/mcp_store -f sql/create_tables.sql
    psql postgresql://mcp_user:mcp_password@localhost:5432/mcp_store -f sql/seed_data.sql
    

手动测试MCP工具

服务器运行后,您可以向发出直接请求 fastmcp 客户端实用程序:

python -m fastmcp.client --command "get_store_summary"

参见 fastmcp 更高级用法的文档,如流式输出或结构化参数。

许可证

此示例是在MIT许可证下提供的。将其用作您自己的MCP集成服务的起点。