13.1 使用 MCP 资源
第 13 章 · MCP 高级应用 · 第4部分:模型上下文协议 MCP
MCP 资源是服务器提供的数据源,包括数据库表、文件系统、API 端点等。
资源类型#
数据库资源#
数据库表和视图:
bash复制# 查看可用的数据库资源/mcp
输出示例:
bash复制MCP 资源: - database://users: 用户表 - database://orders: 订单表 - database://products: 产品表
访问资源#
基本访问#
bash复制# 访问数据库资源查询数据库中的用户表 # 访问文件系统资源读取日志目录中的文件 # 访问 API 资源调用用户 API # 访问配置资源读取应用配置
资源查询#
bash复制# 查询数据库资源查询用户表中所有活跃用户 # 查询文件系统资源查找日志目录中的错误日志 # 查询 API 资源获取用户 ID 为 123 的信息 # 查询配置资源获取数据库配置中的连接字符串
资源过滤#
bash复制# 过滤数据库资源查询用户表中年龄大于 18 的用户 # 过滤文件系统资源查找日志目录中今天的日志文件 # 过滤 API 资源获取用户表中状态为活跃的用户 # 过滤配置资源获取配置中的生产环境设置
资源操作#
读取资源#
bash复制# 读取数据库资源读取用户表的前 10 条记录 # 读取文件系统资源读取日志目录中的最新日志 # 读取 API 资源获取用户 ID 为 123 的详细信息 # 读取配置资源读取应用配置中的数据库设置
写入资源#
bash复制# 写入数据库资源向用户表插入新用户 # 写入文件系统资源将日志写入日志目录 # 写入 API 资源更新用户 ID 为 123 的信息 # 写入配置资源更新应用配置中的数据库设置
更新资源#
bash复制# 更新数据库资源更新用户表中 ID 为 123 的用户信息 # 更新文件系统资源更新日志目录中的日志文件 # 更新 API 资源更新用户 ID 为 123 的状态 # 更新配置资源更新应用配置中的超时设置
删除资源#
bash复制# 删除数据库资源删除用户表中 ID 为 123 的用户 # 删除文件系统资源删除日志目录中的旧日志文件 # 删除 API 资源删除用户 ID 为 123 的记录 # 删除配置资源删除应用配置中的过时设置
资源元数据#
查看资源信息#
bash复制# 查看资源详细信息显示用户表的详细信息
输出示例:
bash复制资源:database://users 类型:数据库表 列: - id: INTEGER, PRIMARY KEY - name: VARCHAR(255) - email: VARCHAR(255) - created_at: TIMESTAMP 索引: - idx_email: email - idx_created_at: created_at
资源统计#
bash复制# 查看资源统计信息显示用户表的统计信息
输出示例:
bash复制资源:database://users 总记录数:10,000 活跃记录数:8,500 最后更新:2024-01-15 10:30:00
资源权限#
检查权限#
bash复制# 检查资源访问权限检查用户表的访问权限
输出示例:
bash复制资源:database://users 权限: - 读取:允许 - 写入:允许 - 更新:允许 - 删除:拒绝
请求权限#
bash复制# 请求资源访问权限请求用户表的删除权限
资源缓存#
缓存策略#
MCP 支持资源缓存以提高性能:
bash复制# 启用资源缓存启用用户表缓存 # 查看缓存状态显示资源缓存状态
输出示例:
bash复制资源缓存状态: - database://users: 已缓存 (1000 条记录) - database://orders: 未缓存 - filesystem://logs: 已缓存 (50 个文件)
清除缓存#
bash复制# 清除特定资源缓存清除用户表缓存 # 清除所有资源缓存清除所有资源缓存
资源监控#
监控资源使用#
bash复制# 查看资源使用统计显示资源使用统计
输出示例:
bash复制资源使用统计: - database://users: - 读取次数:150 - 写入次数:20 - 更新次数:30 - 删除次数:5 - database://orders: - 读取次数:200 - 写入次数:50 - 更新次数:40 - 删除次数:10
监控资源性能#
bash复制# 查看资源性能指标显示资源性能指标
输出示例:
bash复制资源性能指标: - database://users: - 平均响应时间:50ms - 最大响应时间:200ms - 成功率:99.5% - database://orders: - 平均响应时间:80ms - 最大响应时间:300ms - 成功率:98.7%
资源安全#
数据加密#
bash复制# 加密资源数据加密用户表中的敏感数据
访问控制#
bash复制# 设置资源访问控制限制用户表只能被特定用户访问
审计日志#
bash复制# 查看资源访问日志显示用户表的访问日志
输出示例:
bash复制资源访问日志: - 2024-01-15 10:00:00 - 用户 user1 读取用户表 - 2024-01-15 10:05:00 - 用户 user2 写入用户表 - 2024-01-15 10:10:00 - 用户 user1 更新用户表
资源最佳实践#
1. 合理使用资源#
bash复制# 只查询需要的列查询用户表的 ID 和姓名 # 使用过滤条件查询用户表中活跃的用户 # 限制结果数量查询用户表的前 100 条记录
2. 缓存常用资源#
bash复制# 缓存频繁访问的资源启用用户表缓存 # 定期更新缓存更新用户表缓存
3. 监控资源使用#
bash复制# 定期查看资源使用统计显示资源使用统计 # 识别性能瓶颈显示资源性能指标
4. 保护敏感资源#
bash复制# 加密敏感数据加密用户表中的密码字段 # 限制访问权限限制用户表只能被管理员访问 # 记录访问日志显示用户表的访问日志
故障排除#
资源访问失败#
问题: 无法访问资源
解决方案:
bash复制# 1. 检查资源是否存在/mcp # 2. 检查权限检查资源访问权限 # 3. 查看错误日志显示错误日志 # 4. 重新连接服务器重新连接 MCP 服务器
资源性能问题#
问题: 资源响应缓慢
解决方案:
bash复制# 1. 查看性能指标显示资源性能指标 # 2. 启用缓存启用资源缓存 # 3. 优化查询优化资源查询 # 4. 增加超时设置MCP_TIMEOUT=30000 claude
资源权限错误#
问题: 没有资源访问权限
解决方案:
bash复制# 1. 检查权限检查资源访问权限 # 2. 请求权限请求资源访问权限 # 3. 联系管理员联系管理员获取权限