13.1 使用 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. 联系管理员
联系管理员获取权限