工具大全
Claude 指南作者:Coocon2026年4月13日706 次阅读约 2 分钟阅读

Claude Code MCP:连接外部工具和数据源

什么是 MCP

Model Context Protocol (MCP) 是 Anthropic 推出的开放协议,定义了 AI 模型与外部工具之间的标准通信方式。通过 MCP,Claude Code 可以连接数据库、调用 API、操作第三方服务,将 AI 编程助手的能力从代码编辑扩展到整个开发工作流。

MCP 采用客户端-服务器架构:Claude Code 作为 MCP 客户端,通过标准协议与 MCP 服务器通信。每个 MCP 服务器暴露一组工具(tools),Claude 可以根据需要主动调用这些工具。

配置 MCP 服务器

在 .claude/settings.json 中添加 MCP 服务器配置:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    },
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data.db"]
    }
  }
}

配置完成后重启 Claude Code,即可在对话中使用这些外部工具。

常用 MCP 服务器

服务器 功能 包名
GitHub 管理 Issue、PR、仓库 @modelcontextprotocol/server-github
Filesystem 安全的文件系统访问 @modelcontextprotocol/server-filesystem
SQLite 查询 SQLite 数据库 @modelcontextprotocol/server-sqlite
PostgreSQL 查询 PostgreSQL 数据库 @modelcontextprotocol/server-postgres
Slack 发送消息、管理频道 @modelcontextprotocol/server-slack
Memory 跨会话持久化记忆 @modelcontextprotocol/server-memory

更多社区开发的 MCP 服务器可以在 MCP Servers 仓库 中找到。

编写简单的 MCP 服务器

你可以用 TypeScript 快速编写自定义 MCP 服务器:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-server", version: "1.0.0" });

server.tool(
  "get_weather",
  "获取指定城市的天气信息",
  { city: z.string().describe("城市名称") },
  async ({ city }) => {
    // 调用天气 API
    const data = await fetch(`https://api.weather.com/${city}`);
    return { content: [{ type: "text", text: JSON.stringify(await data.json()) }] };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

安全注意事项

  • 最小权限原则:只授予 MCP 服务器必要的权限和访问范围
  • 敏感信息保护:API 密钥通过 env 字段传递,不要硬编码在配置中
  • 网络隔离:对于访问内部服务的 MCP 服务器,确保网络访问控制得当
  • 审查第三方服务器:使用社区 MCP 服务器前,务必审查其源代码

常见问题

MCP 服务器需要一直运行吗?

不需要。Claude Code 会在启动时自动拉起配置的 MCP 服务器进程,会话结束时自动关闭。你不需要手动管理服务器的生命周期。

一个项目可以同时使用多个 MCP 服务器吗?

可以。你可以在 mcpServers 中配置任意数量的服务器,Claude 会根据任务需要自动选择合适的工具调用。不同服务器的工具会合并到 Claude 的可用工具列表中。

自定义 MCP 服务器支持哪些编程语言?

MCP SDK 官方提供了 TypeScript 和 Python 版本。社区也有 Rust、Go、Java 等语言的实现。只要遵循 MCP 协议规范,任何语言都可以编写 MCP 服务器。

相关文章

Claude Code 禁止 rm -rf 怎么配:deny 规则两周拦下 14 次,实测还有 7 种写法照样能删,一个 hook 补齐

为了防 Claude Code 误删文件,我在全局 settings 里加了一条 deny 规则 Bash(rm -rf *)。翻本机 10 月 7 日到 21 日的会话记录:这条规则拦下 14 次删除,模型被拒后 8 次换新目录名、6 次直接放弃删除,一次都没换写法绕过。但在 Claude Code 2.1.285 上用 stub 逐字回放 22 种删除写法后发现:rm -fr、rm -r -f、rm -Rf、rm -r 在手动、auto、bypass 三种模式下都照删不误,/bin/rm、find -delete、bash -c 在手动和 bypass 模式下也能删。auto 模式下,工作目录内的 rm -fr 会被当成「acceptEdits 也会放行」的操作,连分类器都不过。另一道闸是内置的 dangerous-rm 检查,目标是 $D/* 这类变量展开时触发,bypass 模式也拦;多行命令里前面有 heredoc,它就跟不上同一条命令里的变量赋值。文末给出一个 PreToolUse hook,三种模式下补齐全部递归删除写法,并告诉模型被拒后该怎么做。

claude-codehooks+5
pitfalls2026年10月21日7 min
208

Claude Code 接 DeepSeek / GLM / Kimi 开 auto 模式:temporarily unavailable 括号里的原因怎么看,哪些重试没用(故障注入实测)

用第三方模型跑 Claude Code auto 模式,每个有副作用的动作都会用你的会话模型向同一个后端多发一次判定请求:系统提示词 132,470 字符,单次约 2.97 万输入 token,比主循环那一步还多。判定请求一失败,就出现「xxx is temporarily unavailable, so auto mode cannot determine the safety of Bash」。本文用故障注入代理把每种失败对应的报错原文测了一遍:500 → (server error)、429 → (rate-limited)、529 → (overloaded)、断连 → (connection failed),这几种会自动重试 5 次;超过 60 秒没回 → (timed out);**没有括号 = 后端拒收(4xx),只试 1 次,重试多少遍都一样**;后端回了但模型没给判定 → could not evaluate,连续 3 次就退回人工确认。另外实测 CLAUDE_CODE_AUTO_MODE_MODEL 不生效,判定器只能跟着会话模型换。Claude Code 2.1.285,真实后端 DeepSeek v4-pro 与小米 MiMo v2.5。

claude-codedeepseek+7
pitfalls2026年10月11日11 min
643

Claude Code 上下文太长怎么办:Prompt is too long 会自动压缩,中转站 / DeepSeek 的 maximum context length 却不会(实测)

Claude Code 靠报错文案判断「上下文太长」:后端说 prompt is too long 或 input is too long for requested model,它会自动压缩对话后重发,用户无感;DeepSeek 和 OpenAI 风格中转返回的 This model's maximum context length is …,它不认识,直接报 API Error: 400,每轮都失败。手动 /compact 有效;更好的办法是用 CLAUDE_CODE_MAX_CONTEXT_TOKENS(非 claude- 模型 ID)或 CLAUDE_CODE_AUTO_COMPACT_WINDOW(claude- 模型 ID)告诉它真实上限,让它提前压缩。Claude Code 2.1.285 + 本地 stub 实测。

claude-codedeepseek+6
pitfalls2026年10月5日8 min
726

Claude Code 一直卡住、转圈没反应怎么办:后端不回时它要等 6 分钟,重试满 10 次可能卡一个多小时(实测)

Claude Code 转圈不动、或者停在 Retrying in 0s,多半是后端没有回数据。实测 2.1.285(API key + ANTHROPIC_BASE_URL):后端不回响应头时每次等 6 分钟(360 秒)才判超时,把 API_TIMEOUT_MS 调到 60 万、90 万也不变,只能调小;默认重试 10 次,总共可能卡一个多小时。中转站如果把回复缓冲到生成完才返回,超过 6 分钟的回复永远拿不到。按 Esc 可以随时中断。全部在本地 stub 上实测。

claude-code中转站+6
pitfalls2026年10月5日10 min
649