超市REST堆栈
PostgreSQL 17 基于的零售/超市数据库PostgREST 即席REST API、然后MCP 支持的 postgres-mcp 的构成。模式、样本数据、应用程序用角色被自动投入,所以分析、原型API 可以作为实验的基础。
构成
|服务|角色|端口| | --------------- | ------------------------------------------------------------ | ------ | | postgres 模式/种子已投入PostgreSQL 17 | 5432 | | postgres-mcp | PostgreSQL 的MCP(Server-Sent Events) 桥接服务\\u0026#8000\\u0026# | postgrest_api | PostgREST(devel) 根据REST API | 3000 |
目录
├── compose.yml # docker compose 定義
├── data/ # 永続化される PGDATA(初回起動時に自動生成)
└── postgres/
├── postgresql.conf # 任意の追加設定(空のままでも可)
└── initdb.d/
├── 1_schema.sql # スキーマ・テーブル定義
├── 2_seed.sql # マスタ / トランザクションのシードデータ
└── 3_roles.sql # アプリケーションロールと権限必要要件
- Docker 24.x 以降
- Docker Compose V2(
docker compose可以使用命令)
快速启动
- 根据需要调整环境变量(如果未更改)
cp .env.example .env中所述修改相应参数的值。
cp .env.example .env- 在存储库正下方启动容器。
docker compose -f compose.yml up -d- 等待直到通过健康检查(
postgres的healthy 到了…的时候postgres-mcp和postgrest_api来定义自定义外观。
docker compose ps- PostgREST 对较大场景进行渲染期间已观察到该故障。
curl "http://localhost:3000/products?select=*"
curl "http://localhost:3000/stock_levels" \
-H "Accept-Profile: inventory"默认连接信息: postgresql://appuser:secret@localhost:5432/supermarket_db
架构概述
master架构:categories,suppliers,products,stores,employees,customerstransactions架构:purchases,sales,sale_itemsinventory架构:stock_levels和销售后减少库存的触发器inventory.update_stock_on_sale
样本数据 2_seed.sql 投入PostgREST 等已弃用的函数的缺少的支持。
环境变数
.env 准备好的话 compose.yml 的,之 ${POSTGRES_*} 自动加载变量(docker compose 啊 .env ),模板名称将采用不同的格式。
|变量|角色|默认| | ------------------- | ------------------------------------------------ | ---------------- | | POSTGRES_USER | DB 管理用户(postgres 服务superuser) | postgres | | POSTGRES_PASSWORD 上述用户的密码 password | | POSTGRES_DB |初始创建DB 名称(架构种子目标)| supermarket_db |
PostgREST / MCP 查看项目中可用的所有族 DATABASE_URI 啊 PGRST_DB_URI 是以这些值为基础组装的。更改值时 data/ 请删除目录,然后重新创建。
PostgREST / MCP 利用期间
PostgREST
- 端点:
http://localhost:3000 - 目标方案:
master,transactions,inventory - 连接角色:
appuser(3_roles.sql的CRUD 已授予权限) - 例:
curl "http://localhost:3000/transactions.sales?select=sale_id,total_amount"获得销售一览表
postgres mcp(mcp詳細)
- SSE 端点:
http://localhost:8000/sse - 内部接続:
DATABASE_URI=postgresql://appuser:secret@postgres:5432/${POSTGRES_DB}(Compose 内部网络解决) - 访问模式:Compose 那么
--access-mode=unrestricted。如果要只读compose.yml命令--access-mode=restricted来删除它。 - 传输:
--transport=sse因此Claude Desktop 啊VS Code MCP 客户端SSE 可以通过设置连接。
MCP 客户端设置示例
Claude Desktop 的,之 claude_desktop_config.json 中添加以下内容:SSE 的 postgres-mcp 中所述修改相应参数的值。
{
"mcpServers": {
"supermarket-db": {
"transport": "sse",
"url": "http://localhost:8000/sse"
}
}
}连接后MCP 客户端发布 list_tables, describe_table, run_sql 等动作(实施为 postgres-mcp 通过形象)PostgreSQL 中所述修改相应参数的值。SSE 经过DB 的规格化距离的幂函数restricted 而需要与环境混合的每条反射光线,进行环境采样。
常用命令
# ログ確認
docker compose logs -f postgres
# サービス停止
docker compose down
# すべてのボリュームも削除
docker compose down -v重置数据
如果要重新初始化数据 data/ 删除目录,然后再次 docker compose up 中所述修改相应参数的值。现有的 data/ 剩下的话 initdb.d 的,之SQL 不会重新运行。
rm -rf data
docker compose -f compose.yml up -d故障排除
postgres无法启动/exit code 1:data/中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。请在备份后删除并重新启动。- PostgREST 返回401:
PGRST_DB_URI资格信息appuser/secret中所述修改相应参数的值。 - 端口冲突:
compose.yml的,之ports您可以在节中将主机端端口更改为任意值。
许可证
本资料档案库MIT 在许可证下公开。
