使用说明
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).
拟人克劳德桌面
- 打开 克劳德桌面 并导航到 设置→ 配置MCP服务器.
- 使用以下命令添加新服务器:
- 命令:
python - 参数:
-m mcp_server - 工作目录:此存储库的根。
- 命令:
- 确保
DATABASE_URLClaude可以使用环境变量(例如,通过从导出Claude的shell会话启动Claude)。 - Claude现在可以调用以下工具
get_store_summary在交谈中。
光标IDE
- 打开游标并运行命令 光标:配置MCP服务器.
- 使用命令创建条目
python和论点-m mcp_server. - 通过配置面板指定环境变量(可选),以便MCP服务器可以访问PostgreSQL实例。
- 使用“连接MCP服务器”命令在聊天侧边栏中提供工具。
VS代码+继续
-
安装 继续 扩展(版本0.9.0+)。
-
打开“继续”设置(
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" } } ] } -
重新启动继续;模拟商店工具将出现在MCP工具选项板中。
OpenAI桌面/ChatGPT桌面(测试版MCP支持)
- 从激活了虚拟环境的终端启动客户端,以便MCP服务器依赖项可用。
- 在MCP配置UI中,添加一个指向的自定义服务器
python -m mcp_server. - 使用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集成服务的起点。