Skip to content

3.4 进阶技巧和最佳实践

🎯 本节目标

学完本节后,你将掌握:

  • ✅ 高级配置技巧(多环境、条件配置、作用域策略)
  • ✅ 性能优化方法(Token 管理、上下文效率)
  • ✅ 团队协作最佳实践(Git 工作流、审批流程)
  • ✅ 三级调试方法论(系统化问题诊断)
  • ✅ 企业级安全加固(权限控制、审计、合规)

🚀 高级配置技巧

技巧 1:多环境配置管理

场景: 你需要在开发、测试、生产环境间切换,每个环境有不同的数据库和 API 端点。

解决方案:环境变量 + 配置模板

项目配置:.mcp.json

json
{
  "mcpServers": {
    "database": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DB_URL": "${DATABASE_URL}"
      }
    },
    "api-backend": {
      "type": "http",
      "url": "${BACKEND_API_URL:-https://api.production.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_TOKEN}",
        "X-Environment": "${APP_ENV:-production}"
      }
    }
  }
}

环境配置文件:

.env.development:

bash
DATABASE_URL=postgresql://localhost:5432/myapp_dev
BACKEND_API_URL=https://api.dev.company.com
API_TOKEN=dev_token_12345
APP_ENV=development

.env.staging:

bash
DATABASE_URL=postgresql://staging-db.company.com:5432/myapp_staging
BACKEND_API_URL=https://api.staging.company.com
API_TOKEN=staging_token_67890
APP_ENV=staging

.env.production:

bash
DATABASE_URL=postgresql://prod-db.company.com:5432/myapp_prod
BACKEND_API_URL=https://api.company.com
API_TOKEN=prod_token_secure_xyz
APP_ENV=production

快速切换:

bash
# 开发环境
cp .env.development .env
source .env
claude

# 测试环境
cp .env.staging .env
source .env
claude

# 或者使用 direnv 自动加载
# .envrc
source_env .env.development

技巧 2:条件配置和特性开关

场景: 某些 MCP 服务器只在特定条件下启用。

方案 A:使用 disabled 字段

json
{
  "mcpServers": {
    "experimental-feature": {
      "disabled": true,  // 快速禁用
      "type": "http",
      "url": "https://experimental.api.com/mcp"
    },
    "legacy-system": {
      "disabled": "${ENABLE_LEGACY:-true}",  // 环境变量控制
      "type": "stdio",
      "command": "legacy-server"
    }
  }
}

方案 B:多个配置文件

bash
# 基础配置
~/.claude.json

# 实验性功能
~/.claude.experimental.json

# 按需合并
cat ~/.claude.json ~/.claude.experimental.json | \
  jq -s '.[0] * .[1]' > ~/.claude.merged.json

技巧 3:分层配置继承

配置优先级: Local > Project > User > Managed

示例场景:

Managed(IT 管理员):

json
// /etc/claude-code/managed-mcp.json
{
  "allowedMcpServers": [
    {"serverName": "github"},
    {"serverName": "sentry"},
    {"serverName": "approved-internal-api"}
  ],
  "deniedMcpServers": [
    {"serverName": "filesystem"}  // 安全策略:禁止文件访问
  ],
  "requiredMcpServers": {
    "security-scanner": {
      "type": "http",
      "url": "https://security.company.com/mcp"
    }
  }
}

User(个人全局设置):

json
// ~/.claude.json
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://mcp.github.com/anthropic"
    },
    "personal-notes": {
      "type": "http",
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Project(团队共享):

json
// /project/.mcp.json
{
  "mcpServers": {
    "project-db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "postgres-server"],
      "env": {"DB_URL": "${PROJECT_DB_URL}"}
    }
  }
}

Local(项目个人覆盖):

json
// /project/.claude/settings.local.json
{
  "mcpServers": {
    "project-db": {
      "env": {
        "DB_URL": "postgresql://localhost:5432/my_local_test_db"
      }
    }
  }
}

最终生效配置:

  • security-scanner(Managed 强制)
  • github(User 全局)
  • personal-notes(User 全局)
  • project-db(Project + Local 覆盖数据库 URL)
  • filesystem(Managed 禁止)

技巧 4:动态服务器配置(插件系统)

高级场景: 开发可重用的 MCP 配置包。

插件结构:

my-mcp-plugin/
├── plugin.json
├── servers/
│   ├── custom-db-server.js
│   └── custom-api-server.js
├── config/
│   └── mcp-config.json
└── README.md

plugin.json:

json
{
  "name": "my-company-mcp-plugin",
  "version": "1.0.0",
  "mcpServers": {
    "company-db": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/custom-db-server.js",
      "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config/db-config.json"],
      "env": {
        "DB_URL": "${COMPANY_DB_URL}"
      }
    }
  }
}

使用插件:

json
// ~/.claude.json
{
  "plugins": [
    "/path/to/my-mcp-plugin"
  ]
}

⚡ 性能优化策略

策略 1:Token 预算管理

问题: MCP 服务器输出过大导致 token 消耗爆炸。

解决方案:配置输出限制

bash
# 设置 MCP 输出 token 限制
export MAX_MCP_OUTPUT_TOKENS=50000

# 默认:25,000 tokens
# 警告阈值:10,000 tokens

claude

示例:数据库查询优化

低效查询:

sql
SELECT * FROM users;  -- 返回 100,000 行

优化查询:

sql
SELECT id, email, name FROM users
WHERE status = 'active'
LIMIT 100;  -- 只返回必要的列和行

在 Skill 中指导 Claude:

markdown
---
name: database-query-optimizer
description: 查询数据库时自动优化 SQL
---

# 数据库查询优化规则

当执行数据库查询时,始终遵循:

1. **只选择必要的列**
   -`SELECT *`
   -`SELECT id, name, email`

2. **使用 LIMIT 限制结果**
   - 探索性查询:`LIMIT 10`
   - 生产查询:`LIMIT 100`

3. **过滤不必要的数据**
   - 使用 WHERE 条件
   - 避免全表扫描

4. **聚合优先**
   - 需要统计?使用 `COUNT(*)``SUM()`
   - 不要取回所有数据后再计算

策略 2:渐进式工具加载

原理: MCP 支持按需加载工具定义,而非一次性加载所有工具。

实现: 使用文件系统层次组织工具

服务器端实现示例(Node.js):

javascript
// mcp-server.js
const server = new MCPServer({
  tools: {
    // 懒加载:只有被调用时才加载完整定义
    async listTools() {
      return {
        tools: [
          {name: "github_create_pr", description: "Create a PR"},
          {name: "github_list_issues", description: "List issues"},
          // ... 只返回名称和简短描述,不返回完整 schema
        ]
      };
    },
    async getTool(name) {
      // 按需加载完整定义
      const toolDefs = {
        "github_create_pr": {
          name: "github_create_pr",
          description: "Create a new pull request",
          inputSchema: { /* 完整 JSON Schema */ }
        },
        // ...
      };
      return toolDefs[name];
    }
  }
});

客户端行为:

  1. 启动时:调用 listTools() → 只获取工具名称(< 1KB)
  2. 需要时:调用 getTool(name) → 获取完整定义(按需)
  3. 结果:Token 使用减少 95%+

策略 3:中间结果缓存

场景: 重复查询相同数据(如数据库 schema)。

方案 A:服务器端缓存

javascript
// mcp-server.js
const cache = new Map();

async function getSchema(tableName) {
  const cacheKey = `schema:${tableName}`;

  if (cache.has(cacheKey)) {
    return cache.get(cacheKey);  // 命中缓存
  }

  const schema = await db.query(`
    SELECT column_name, data_type
    FROM information_schema.columns
    WHERE table_name = $1
  `, [tableName]);

  cache.set(cacheKey, schema, {ttl: 3600});  // 缓存 1 小时
  return schema;
}

方案 B:Claude 记忆(Skills)

markdown
---
name: remember-schema
description: 记住已查询的数据库 schema
---

# Schema 记忆

已查询的表结构:

## users 表
- id (INTEGER, PRIMARY KEY)
- email (VARCHAR(255), UNIQUE)
- name (VARCHAR(100))
- created_at (TIMESTAMP)

## posts 表
- id (INTEGER, PRIMARY KEY)
- user_id (INTEGER, FOREIGN KEY → users.id)
- title (VARCHAR(200))
- content (TEXT)
- created_at (TIMESTAMP)

**规则:** 如果已经有 schema 信息,不要重新查询。

策略 4:并行工具调用

场景: 需要从多个服务获取数据。

串行调用(慢):

调用 GitHub API → 等待 2 秒
调用 Sentry API → 等待 1.5 秒
调用 PostgreSQL → 等待 0.5 秒
总耗时:4 秒

并行调用(快):

同时调用:
  - GitHub API
  - Sentry API
  - PostgreSQL
等待所有完成
总耗时:2 秒(最慢的那个)

Claude 会自动并行化独立的工具调用。

优化提示:

> 同时获取 GitHub 最新 PR 和 Sentry 最新错误

Claude 会并行执行:
[工具调用 1] github_list_prs()
[工具调用 2] sentry_list_issues()

而不是串行执行。

👥 团队协作最佳实践

实践 1:Git 工作流

推荐文件结构:

project/
├── .mcp.json                    # ✅ 提交(团队共享配置)
├── .env.example                 # ✅ 提交(配置模板)
├── .env                         # ❌ 不提交(个人凭据)
├── .gitignore                   # ✅ 包含 .env
├── .claude/
│   ├── skills/                  # ✅ 提交(团队 Skills)
│   ├── settings.local.json      # ❌ 不提交(个人设置)
│   └── README.md                # ✅ 提交(设置说明)
└── README.md                    # ✅ 包含 MCP 设置指南

.gitignore:

# Environment files
.env
.env.local
.env.*.local

# Claude Code personal settings
.claude/settings.local.json

# Logs
*.log

.mcp.json(团队共享):

json
{
  "mcpServers": {
    "project-db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DB_URL": "${PROJECT_DB_URL}"
      }
    },
    "github": {
      "type": "http",
      "url": "https://mcp.github.com/anthropic"
    }
  }
}

.env.example(模板):

bash
# Database Connection
PROJECT_DB_URL=postgresql://user:password@host:5432/dbname

# GitHub (OAuth will handle authentication)
# No token needed in .env

# Other services
SENTRY_ORG=your-org-name
LINEAR_TEAM_ID=your-team-id

README.md 设置说明:

markdown
## Claude Code Setup

### 1. Install Dependencies
```bash
npm install

2. Configure Environment

bash
# Copy example environment file
cp .env.example .env

# Edit .env with your credentials
nano .env

3. Approve MCP Servers

bash
# Start Claude Code
claude

# Approve project MCP servers when prompted
# - project-db
# - github

4. Authenticate Remote Services

> /mcp
# Click "Login" for each remote service

5. Verify Setup

> /mcp
# All servers should show ✅ Connected

### 实践 2:代码审查工作流

**场景:** 团队成员提交包含 MCP 配置更改的 PR。

**审查清单:**

```markdown
## MCP Configuration Review Checklist

### 安全性
- [ ] 没有硬编码的密码或 API keys
- [ ] 敏感信息使用环境变量引用
- [ ] `.env` 文件不在提交中
- [ ] `.env.example` 已更新

### 配置正确性
- [ ] JSON 语法有效(使用 `jq` 或 linter 验证)
- [ ] 服务器名称清晰明确
- [ ] 传输类型正确(HTTP/Stdio)
- [ ] 命令和参数正确

### 文档
- [ ] README 包含新服务器的设置说明
- [ ] `.env.example` 包含新的环境变量
- [ ] 变更说明了为什么需要新服务器

### 影响评估
- [ ] 新服务器是必需的,还是可选的?
- [ ] 是否影响其他团队成员的工作流?
- [ ] 是否需要额外的权限或访问审批?

### 测试
- [ ] 提交者已验证配置工作正常
- [ ] 至少一个其他团队成员成功复现

PR 模板示例:

markdown
## MCP Configuration Change

**添加的服务器:** `linear`
**类型:** Remote (HTTP)
**用途:** 自动化 issue 创建和项目管理

### Setup Instructions
1. 认证 Linear:

/mcp

Click "Login" for Linear


2. 设置环境变量(可选):
```bash
echo "LINEAR_TEAM_ID=your-team-id" >> .env

Testing

  • [x] 测试 linear_create_issue 工具
  • [x] 测试 linear_list_issues 工具
  • [x] 验证权限范围正确

Security

  • [x] 使用 OAuth(无需 API key)
  • [x] 请求的权限:read, write
  • [x] 审查了 Linear 的数据访问策略

Checklist

  • [x] JSON 语法验证通过
  • [x] .env.example 已更新
  • [x] README 已更新
  • [x] 至少 2 人测试成功

### 实践 3:CI/CD 集成

**场景:** 在 CI 流水线中使用 Claude Code 和 MCP。

**GitHub Actions 示例:**

`.github/workflows/claude-code-checks.yml`:
```yaml
name: Claude Code Quality Checks

on: [push, pull_request]

jobs:
  mcp-config-validation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Validate MCP Configuration
        run: |
          # 验证 JSON 语法
          jq empty .mcp.json

          # 检查敏感信息泄露
          if grep -r "password\|secret\|token" .mcp.json; then
            echo "❌ Error: Potential secret in .mcp.json"
            exit 1
          fi

      - name: Verify .env.example
        run: |
          # 确保所有环境变量都有示例
          required_vars=$(grep -oP '\$\{\K[^}]+' .mcp.json | sort -u)
          example_vars=$(grep -oP '^[A-Z_]+(?==)' .env.example | sort -u)

          missing=$(comm -23 <(echo "$required_vars") <(echo "$example_vars"))
          if [ -n "$missing" ]; then
            echo "❌ Missing in .env.example: $missing"
            exit 1
          fi

  automated-testing:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:14
        env:
          POSTGRES_PASSWORD: test_password
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v3

      - name: Setup Claude Code
        run: |
          npm install -g @anthropic/claude-code
          cp .env.example .env
          # 设置测试环境变量
          echo "PROJECT_DB_URL=postgresql://postgres:test_password@localhost:5432/test" >> .env

      - name: Test MCP Servers
        env:
          CLAUDE_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
        run: |
          # 非交互模式测试
          claude -p "List all configured MCP servers" --output json > mcp_status.json

          # 验证所有服务器连接成功
          jq -e '.servers[] | select(.status != "connected")' mcp_status.json && exit 1 || exit 0

🔍 三级调试方法论

Level 1:连接和配置问题

症状: MCP 服务器无法连接或未显示。

诊断步骤:

1.1 检查服务器列表

> /mcp

预期输出:

MCP Servers Status:
────────────────────────────────────────
📦 github
   Status: ✅ Connected
📦 postgres
   Status: ❌ Failed to connect
   Error: Command not found: npx
────────────────────────────────────────

1.2 验证配置语法

bash
# 验证 JSON
jq empty ~/.claude.json

# 查看具体服务器配置
claude mcp get postgres

1.3 检查环境变量

bash
# 列出所有环境变量
env | grep -i db

# 验证特定变量
echo $DATABASE_URL

1.4 测试命令手动执行

bash
# 测试 MCP 服务器命令是否可执行
npx -y @modelcontextprotocol/server-postgres

# 如果失败,检查 Node.js
node --version  # 应该 >= 18.17

常见问题 & 解决方案:

问题原因解决方案
Command not found: npxNode.js 未安装brew install node (macOS)
ENOENT: no such file路径错误使用绝对路径
Permission denied文件权限chmod +x server.js
JSON parse error语法错误使用 jq 验证

Level 2:认证和权限问题

症状: 服务器连接成功,但工具调用失败。

诊断步骤:

2.1 检查认证状态

> /mcp

📦 github
   Status: ✅ Connected
   Authenticated as: yourusername  ← 检查这里
   Scopes: repo, read:user         ← 检查权限范围

2.2 验证 OAuth Token

# 清除并重新认证
> /mcp
# 选择服务器 → Clear authentication → Login

2.3 检查权限范围

需要的权限:repo (完整仓库访问)
授予的权限:public_repo (只有公开仓库)

解决:重新认证并授予正确的 scope

2.4 测试工具权限

> /permissions

Allowed tools:
- Read
- Write
- Bash
❌ mcp__github__create_pr  ← 工具被阻止

解决:
> /permissions add mcp__github__create_pr

2.5 检查企业策略

bash
# 查看托管配置
cat /etc/claude-code/managed-mcp.json

# 示例输出:
{
  "deniedMcpServers": [
    {"serverName": "github"} IT 阻止了 GitHub
  ]
}

# 解决:联系 IT 管理员请求访问

Level 3:工具执行和数据问题

症状: 工具调用成功,但返回意外结果或错误。

诊断步骤:

3.1 启用调试模式

bash
claude --mcp-debug

输出示例:

[MCP DEBUG] Tool call: github_create_pr
[MCP DEBUG] Parameters: {
  "title": "Add feature",
  "base": "main",
  "head": "feature-branch"
}
[MCP DEBUG] Request sent to server
[MCP DEBUG] Response received: 422 Unprocessable Entity
[MCP DEBUG] Error: {
  "message": "Validation Failed",
  "errors": [
    {
      "field": "head",
      "code": "invalid",
      "message": "Branch 'feature-branch' does not exist"
    }
  ]
}

3.2 检查服务器日志

> /mcp
# 选择服务器
# 查看 "Recent Logs" 部分

Recent Logs (postgres):
────────────────────────────────────────
[INFO] Connected to database
[ERROR] Query failed: syntax error at or near "SELCT"
[ERROR] Did you mean: SELECT?
────────────────────────────────────────

3.3 手动验证数据

sql
-- 直接连接数据库验证数据存在
psql $DATABASE_URL

postgres=# SELECT * FROM users LIMIT 5;
-- 确认数据确实存在

-- 然后再让 Claude 查询

3.4 检查 Token 限制

> /context

MCP Output Token Usage:
- postgres: 45,678 tokens ⚠️ (limit: 25,000)
- Recommendation: Use LIMIT in queries

提示被截断的迹象:
[... 1,234 more rows omitted due to token limit ...]

3.5 验证输入数据

工具调用失败原因:
Parameters: {
  "user_id": "abc123"  ← 应该是数字
}

数据库期望:INTEGER
实际传入:STRING

解决:在 Skill 中添加类型验证规则

🔒 安全加固与合规性

加固 1:最小权限原则

原则: 只授予完成任务所需的最小权限。

OAuth Scope 控制:

过度授权:

GitHub Scopes:
- admin:org           ← 不需要组织管理权限
- delete_repo         ← 不需要删除仓库权限
- admin:gpg_key       ← 不需要 GPG key 管理

最小权限:

GitHub Scopes:
- repo                ← 仓库读写(必需)
- read:user           ← 读取用户信息(必需)

Filesystem Roots 限制:

危险:

json
{
  "filesystem": {
    "command": "filesystem-server",
    "args": ["/"]  // ← 允许访问整个文件系统
  }
}

安全:

json
{
  "filesystem": {
    "command": "filesystem-server",
    "args": [
      "/project/data",      // 只允许项目数据目录
      "/project/documents"  // 和文档目录
    ]
  }
}

加固 2:数据保护

敏感数据脱敏:

方案 A:服务器端自动脱敏

javascript
// mcp-server.js
function sanitizeEmail(email) {
  const [user, domain] = email.split('@');
  return `${user[0]}***@${domain}`;
}

async function getUsers() {
  const users = await db.query("SELECT * FROM users");
  return users.map(user => ({
    ...user,
    email: sanitizeEmail(user.email),  // 自动脱敏
    phone: user.phone.replace(/\d(?=\d{4})/g, '*')
  }));
}

方案 B:Claude 指令(Skill)

markdown
---
name: data-privacy
description: 自动保护敏感数据隐私
---

# 数据隐私保护规则

处理用户数据时,始终遵循:

## 1. 个人身份信息 (PII) 脱敏
- 邮箱:`user@example.com``u***@example.com`
- 电话:`+1-555-1234``+1-***-1234`
- 地址:只显示城市和国家,隐藏街道

## 2. 不在响应中包含
- 密码(即使是哈希值)
- 信用卡号
- 社会安全号 (SSN)
- API 密钥和 tokens

## 3. 日志记录
当记录操作时,使用用户 ID 而非邮箱或姓名。

加固 3:审计日志

记录所有 MCP 操作:

javascript
// mcp-server.js
const fs = require('fs');

function auditLog(action, user, details) {
  const logEntry = {
    timestamp: new Date().toISOString(),
    action,
    user,
    details,
    ip: process.env.CLIENT_IP
  };

  fs.appendFileSync(
    '/var/log/mcp-audit.log',
    JSON.stringify(logEntry) + '\n'
  );
}

// 使用
async function createPR(params) {
  auditLog('github_create_pr', 'claude-user', {
    repo: params.repo,
    title: params.title
  });

  // 执行实际操作
  const result = await github.createPR(params);
  return result;
}

审计日志格式:

json
{"timestamp":"2025-01-15T10:30:45Z","action":"github_create_pr","user":"alice@company.com","details":{"repo":"company/backend","title":"Fix auth bug"},"ip":"10.0.1.42"}
{"timestamp":"2025-01-15T10:31:12Z","action":"postgres_query","user":"alice@company.com","details":{"query":"SELECT * FROM users WHERE id = $1","params":[123]},"ip":"10.0.1.42"}

分析审计日志:

bash
# 查看特定用户的所有操作
cat /var/log/mcp-audit.log | jq 'select(.user == "alice@company.com")'

# 查找数据库查询操作
cat /var/log/mcp-audit.log | jq 'select(.action == "postgres_query")'

# 统计操作频率
cat /var/log/mcp-audit.log | jq -r '.action' | sort | uniq -c

加固 4:合规性检查

GDPR 合规示例:

markdown
## MCP GDPR Compliance Checklist

### 数据最小化
- [ ] 只收集必要的用户数据
- [ ] MCP 查询使用 `SELECT` 指定列,而非 `SELECT *`
- [ ] 定期清理不再需要的数据

### 用户权利
- [ ] 实现"访问权":用户可以查询自己的数据
- [ ] 实现"删除权":用户可以删除自己的数据
- [ ] 实现"导出权":用户可以导出数据

### 同意管理
- [ ] OAuth 流程明确说明数据使用方式
- [ ] 用户可以撤销授权

### 安全措施
- [ ] 传输加密(TLS)
- [ ] 存储加密(数据库级别)
- [ ] 访问控制(最小权限)

### 审计与透明度
- [ ] 记录所有数据访问操作
- [ ] 保留审计日志至少 1 年
- [ ] 数据泄露响应计划

SOC 2 合规示例:

json
// managed-mcp.json(IT 管理员)
{
  "securityPolicies": {
    "requireMFA": true,
    "allowedIPs": ["10.0.0.0/8", "192.168.1.0/24"],
    "sessionTimeout": 3600,
    "requireApprovalForTools": [
      "mcp__*__delete*",
      "mcp__*__destroy*",
      "mcp__postgres__execute"
    ]
  },
  "auditLog": {
    "enabled": true,
    "destination": "syslog://audit.company.com:514",
    "retentionDays": 365
  }
}

📊 质量指标

指标 1:MCP 集成健康度

检查清单:

指标目标测量方法
连接成功率> 99%每小时 ping 测试
工具调用成功率> 95%成功调用 / 总调用
平均响应时间< 2 秒监控工具调用延迟
Token 效率< 5K tokens/query/context 命令监控
错误率< 5%失败调用 / 总调用

监控脚本:

bash
#!/bin/bash
# mcp-health-check.sh

echo "MCP Health Check - $(date)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

# 测试所有服务器连接
claude -p "List all MCP servers and their status" --output json > /tmp/mcp_status.json

# 解析结果
connected=$(jq '[.servers[] | select(.status == "connected")] | length' /tmp/mcp_status.json)
total=$(jq '.servers | length' /tmp/mcp_status.json)
success_rate=$(echo "scale=2; $connected / $total * 100" | bc)

echo "Connected: $connected / $total ($success_rate%)"

# 警报
if (( $(echo "$success_rate < 95" | bc -l) )); then
  echo "⚠️  WARNING: Connection rate below 95%"
  # 发送告警到 Slack/PagerDuty
fi

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

指标 2:团队采用率

跟踪指标:

sql
-- 查询团队成员的 MCP 使用情况
SELECT
  user_email,
  COUNT(DISTINCT server_name) as servers_used,
  COUNT(*) as total_tool_calls,
  AVG(execution_time_ms) as avg_response_time
FROM mcp_audit_log
WHERE timestamp > NOW() - INTERVAL '30 days'
GROUP BY user_email
ORDER BY total_tool_calls DESC;

目标:

  • 80% 团队成员使用至少 1 个 MCP 服务器
  • 平均每人使用 3+ 个服务器
  • 每周至少 10 次工具调用

🎯 本节核心要点

1. 配置技巧总结

技巧适用场景复杂度
多环境管理开发/测试/生产🟡 中
条件配置特性开关🟢 低
分层继承企业 + 团队 + 个人🔴 高
插件系统可重用配置包🔴 高

2. 性能优化 Checklist

  • [ ] Token 限制:MAX_MCP_OUTPUT_TOKENS=50000
  • [ ] 查询优化:使用 LIMITWHERE
  • [ ] 渐进式加载:只加载需要的工具
  • [ ] 结果缓存:避免重复查询
  • [ ] 并行调用:独立操作同时执行

3. 团队协作要点

.mcp.json (提交) + .env.example (提交) + .env (不提交)

4. 调试三级方法

Level 1: 连接和配置 → /mcp, jq, 环境变量
Level 2: 认证和权限 → OAuth, /permissions, 企业策略
Level 3: 工具执行 → --mcp-debug, 日志, 数据验证

5. 安全原则

  • ✅ 最小权限
  • ✅ 数据脱敏
  • ✅ 审计日志
  • ✅ 合规检查

🚀 下一步

恭喜!你已经掌握了 MCP 的高级技巧和企业级最佳实践。

3.5 本章小结 中,我们将:

  • 回顾 MCP 的核心知识点
  • 解答常见疑问(FAQ)
  • 提供快速参考指南
  • 规划你的 MCP 学习路径
  • 指向下一步的学习资源

准备好总结了吗? 让我们巩固所学知识!


💡 实践建议: 选择一个你最需要的高级技巧(如多环境管理或性能优化),在你的项目中实施它。真正的掌握来自于应用,而不仅仅是理解。

基于 MIT 许可证发布。内容版权归作者所有。