数据库操作演示

一个展示AI客户端如何通过FastAPI和SQLite安全查询和更新数据库的最小化演示,包含RBAC、参数绑定和审计日志功能。

  • by adlanier
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 adlanier/mcp_demo

使用说明

MCP数据库演示(FastAPI+SQLite)

一个演示AI客户端如何发送结构化数据的最小演示 行动 到a 类似MCP的服务器 它使用护栏(RBAC、参数绑定和审计日志)安全地查询/更新数据库。

文件

  • requirements.txt –Python deps
  • db_init.py –创造和播种 demo.db
  • app.py –FastAPI服务器暴露3个操作
  • client.py –调用动作的简单脚本
  • demo.db –由创建 db_init.py

快速开始

# 1) Create a virtual environment (optional but recommended)
python3 -m venv .venv && source .venv/bin/activate

# 2) Install dependencies
pip install -r requirements.txt

# 3) Initialize the database
python db_init.py

# 4) Start the server
uvicorn app:app --reload --port 8000

在另一个终端中,使用客户端进行测试:

python client.py

或使用 curl:

# Health
curl -s http://127.0.0.1:8000/healthz | jq

# Read (top customers)
curl -s -X POST http://127.0.0.1:8000/actions/get_top_customers  -H "X-API-Key: reader-key-123"  -H "Content-Type: application/json"  -d '{"limit":5}' | jq

# Paginated read
curl -s -X POST http://127.0.0.1:8000/actions/find_orders  -H "X-API-Key: reader-key-123"  -H "Content-Type: application/json"  -d '{"customer_id":3,"limit":3}' | jq

# Next page (cursor=3)
curl -s -X POST http://127.0.0.1:8000/actions/find_orders  -H "X-API-Key: reader-key-123"  -H "Content-Type: application/json"  -d '{"customer_id":3,"limit":3,"cursor":3}' | jq

# Dry-run write
curl -s -X POST http://127.0.0.1:8000/actions/update_customer_tier  -H "X-API-Key: writer-key-456"  -H "Content-Type: application/json"  -d '{"customer_id":3,"tier":"gold","dry_run":true}' | jq

# Commit write
curl -s -X POST http://127.0.0.1:8000/actions/update_customer_tier  -H "X-API-Key: writer-key-456"  -H "Content-Type: application/json"  -d '{"customer_id":3,"tier":"gold","dry_run":false}' | jq

RBAC密钥

  • 读者: X-API-Key: reader-key-123
  • 作者: X-API-Key: writer-key-456

备注

  • 所有SQL用法 参数绑定 (无字符串连接)。
  • 服务器写入 审计日志 进入 audit_log 每个动作的桌子。
  • find_orders 显示 基于光标的分页 通过偏移令牌。
  • 这是一个用于演示目的的最小MCP类模式;在真实的MCP服务器中,您还可以发布 能力 并遵循正式的协议框架。

mcp_demo#在README中添加一个简单的标题

mcp_demo