加载中...
返回AI 编程实战
AI 编程知识库 · AI 编程实战 · MCP 系统性进阶

典型应用场景分析

MCP 应用场景图


场景 1:数据库操作

postgres-mcp-server 架构分析

postgres-mcp-server 是官方维护的 PostgreSQL 数据库 MCP Server,提供了完整的数据库操作能力[1]。

核心功能:

功能 说明 原语类型
query 执行 SQL 查询 Tool
schema 获取数据库结构 Resource
tables 列出所有表 Resource
explain 分析查询计划 Tool

架构设计:

postgres-mcp-server 架构

查询、插入、更新、删除的实现

查询(SELECT):

工具:query

输入参数:
{
  "sql": "SELECT * FROM users WHERE age > $1",
  "params": [18]
}

执行流程:
  1. 参数化查询,防止 SQL 注入
  2. 执行查询
  3. 返回结果

输出:
{
  "columns": ["id", "name", "age"],
  "rows": [
    [1, "Alice", 25],
    [2, "Bob", 30]
  ]
}

插入(INSERT):

工具:insert

输入参数:
{
  "table": "users",
  "data": {
    "name": "Charlie",
    "age": 35
  }
}

执行流程:
  1. 验证表名和数据
  2. 构建参数化 INSERT 语句
  3. 执行插入
  4. 返回插入的行 ID

输出:
{
  "insertedId": 3,
  "rowsAffected": 1
}

更新(UPDATE):

工具:update

输入参数:
{
  "table": "users",
  "where": "id = $1",
  "whereParams": [1],
  "data": {
    "age": 26
  }
}

执行流程:
  1. 验证表名和数据
  2. 构建参数化 UPDATE 语句
  3. 执行更新
  4. 返回影响的行数

输出:
{
  "rowsAffected": 1
}

删除(DELETE):

工具:delete

输入参数:
{
  "table": "users",
  "where": "id = $1",
  "whereParams": [3]
}

执行流程:
  1. 验证表名
  2. 构建参数化 DELETE 语句
  3. 执行删除
  4. 返回影响的行数

输出:
{
  "rowsAffected": 1
}

安全的 SQL 构建

SQL 注入防护是数据库操作的核心安全问题。

防护措施:

1. 参数化查询

// ✅ 正确:参数化查询
const result = await db.query(
  'SELECT * FROM users WHERE name = $1',
  [userName]
);

// ❌ 错误:字符串拼接(易受 SQL 注入攻击)
const result = await db.query(
  `SELECT * FROM users WHERE name = '${userName}'`
);

2. 输入验证

AI 编程知识库会员专享内容
开通后解锁「典型应用场景分析」全文,AI 编程知识库全年访问

扫码添加企业微信,找大熊掌门开通会员

企业微信二维码

添加后说明想开通的会员类型即可

加载中...