模型上下文協定(MCP)是一個開放標準,它允許像 Anthropic 這樣的模型使用 克勞德 以及開發者工具,例如 克勞德·科德 以安全、標準的方式呼叫外部工具、資料來源和提示。
本指南將引導您從頭開始建立自己的 MCP 伺服器,使 Claude Code 能夠存取自訂功能,從而極大地擴展其功能,遠遠超出其內建功能。
什麼是模型上下文協定(MCP)?
MCP(模型上下文協定)是一種 開放規範 旨在規範語言模型用戶端(例如 Claude、Claude Code 或其他 LLM 前端)與工具伺服器和資料來源的連接方式。可以將 MCP 視為「LLM 的 USB-C 連接埠」:它定義了傳輸/JSON-RPC 模式以及伺服器發布三種功能的通用方法:
- 資源中心 — 用戶端可以讀取的檔案或文件資料(例如,資料庫行、文字檔案、JSON 有效負載)。
- 工具 — 模型可以請求主機執行的可呼叫函數(需經使用者批准)。
- 提示 — 模型/客戶端可以呼叫的可重複使用提示範本或工作流程。
MCP 支援多種傳輸協定(標準 I/O、HTTP、SSE),並提供規格、SDK 和範例伺服器,因此您無需自行設計傳輸格式。該協定公開維護(規範 + SDK),並提供教程和範例伺服器庫,以加速其普及應用。
MCP的架構是怎麼樣的?
MCP 的架構有意設計得簡潔且模組化:核心元件是 MCP 服務器,MCP 客戶和 傳輸 它們之間可以傳送 JSON-RPC 訊框訊息。以下是建置 Claude Code(或其他 MCP 用戶端)伺服器時將要互動的主要元件。
伺服器、客戶端和協議
- MCP 伺服器 — 一項服務 發布 工具、資源和提示。工具可以執行副作用或取得資料;資源提供唯讀內容;提示是可重複使用的提示模板,客戶端可以請求模型從中取樣。
- MCP客戶端(主機) — 通常是 LLM 主機的一部分(例如,Claude Code、VS Code 外掛程式、瀏覽器用戶端)。它負責發現可用伺服器,向模型提供工具描述,並將模型發起的呼叫路由到伺服器。
- 協議 — 訊息以 JSON-RPC 編碼;此規範定義了生命週期事件、工具發現、呼叫、完成/取樣,以及如何將結構化結果傳回客戶端和模型。
溝通模式(使用工具時發生的情況)
- 客戶端向模型發送用戶訊息。
- 模型分析上下文,並決定呼叫 MCP 公開的工具(或多個工具)。
- 用戶端透過選定的傳輸方式將工具呼叫轉送到 MCP 伺服器。
- 伺服器執行該工具並傳回結果。
- 模型接收工具輸出並產生最終答案發送給使用者。
實現原語
- JSON-RPC 訊息遵循 MCP 模式。
- 工具定義 這些資訊會發佈在伺服器的發現回應中,以便用戶端可以在使用者介面中顯示它們。
- 資源中心 被引用
@source:path客戶端語法(例如,@postgres:...),允許模型引用外部內容,而無需將大量資料內聯到提示中。
為什麼要將 Claude Code 與 MCP 伺服器整合?
Claude Code 是 Anthropic 公司專注於以程式碼和開發者為中心的工作流程(編輯器/IDE 整合、程式碼理解等)的產品。透過 MCP 伺服器公開您的內部工具(原始碼搜尋、CI 運行器、工單系統、私人註冊表),Claude Code 可以呼叫它們。 一流的工具 在編碼對話和代理流程中。
將 Claude Code 與 MCP 伺服器集成,可為編碼代理解鎖實用且與生產相關的功能:
1. 設模型 做 在實際系統中
Claude Code 可以請求 MCP 伺服器查詢問題追蹤器、執行資料庫查詢、讀取大型文件或建立 GitHub PR,從而在編碼會話中實現端對端自動化。 Claude Code 文件明確支援此功能(例如:查詢 Postgres、Sentry 或建立 PR)。
2. 卸載大數據和專用邏輯
與其將每個資料來源嵌入到提示中(這會消耗令牌),不如透過 MCP 發布資料和工具。模型呼叫工具,取得結構化回應,並對其進行推理-這減少了令牌的使用,並使伺服器能夠處理繁重的工作(資料庫查詢、長時間檔案讀取、身份驗證)。
3. 安全與治理
MCP 在伺服器層集中控制存取和審計,使組織能夠將已批准的伺服器列入白名單,控制可用的工具,並限制輸出。 Claude Code 也支援企業級 MCP 配置和按範圍授權。
4. 可重複使用性和生態系統
MCP 伺服器可在多個用戶端和團隊之間重複使用。只需建置一次,多個 Claude/LLM 用戶端即可使用相同的服務(或交換實作方式)。
開始之前你需要準備什麼?
最低要求
- 一台開發機 Python 3.10+ (範例中我們將使用 Python)。此外,MCP SDK 也支援 Node 或其他語言。
uv(Astral 的工具)或等效的運行器,用於運行 MCP 標準 I/O 伺服器(MCP 教程使用uv安裝步驟如下。- 您需要安裝 Claude Code 或擁有 Claude 用戶端(桌面版或命令列版)才能註冊和測試伺服器;或使用任何支援 MCP 的用戶端。 Claude Code 支援 HTTP、SSE 和本機標準 I/O 伺服器。
- 安全說明:僅在團隊或企業環境中將受信任的 MCP 伺服器新增至 Claude Code — MCP 使伺服器能夠存取敏感數據,如果伺服器傳回惡意內容,則存在註入風險。
如何安裝和驗證 Claude Code CLI
1) 簡要概述 — 建議的安裝方法
購買 原生安裝程式 (建議)或在 macOS/Linux 上使用 Homebrew。如果需要基於 Node 的安裝,可以使用 NPM。 Windows 使用者可以使用 PowerShell/CMD 安裝程式。來源:Claude Code 官方文件和 GitHub。
2)先決條件
- macOS 10.15+、Ubuntu 20.04+/Debian 10+ 或 Windows 10+(建議在 Windows 上使用 WSL)。
- Node.js 18+ 僅需 用於 NPM 安裝方法。
3)安裝指令(選擇一項)
原生(推薦-無需Node依賴),macOS/Linux/WSL:
curl -fsSL https://claude.ai/install.sh | bash
# optional: install latest explicitly
curl -fsSL https://claude.ai/install.sh | bash -s latest
# or install a specific version
curl -fsSL https://claude.ai/install.sh | bash -s 1.0.58
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
# or for latest: & (::Create((irm https://claude.ai/install.ps1))) latest
(這些是官方的本地安裝腳本)。
NPM(如果您想要基於Node的全域安裝):
# requires Node.js 18+
npm install -g @anthropic-ai/claude-code
請勿 使用 sudo npm install -g — 警告不要使用 sudo 進行全域安裝(權限/安全性問題)。如果遇到權限錯誤,請使用 nvm 或修復你的 npm 全域前綴,而不是使用 sudo。
4) 驗證二進位檔案是否已安裝(基本檢查)
安裝完成後立即在本機執行以下命令:
# is the command on PATH?
which claude
# version (or -v)
claude --version
# or
claude -v
# help (sanity check)
claude --help
預期: which 顯示路徑(例如) /usr/local/bin/claude or ~/.nvm/.../bin/claude) and claude --version 列印類似語意化版本號的字串。文件和 README 文件都顯示 claude 作為主要的 CLI 入口點。
5) 驗證安裝健康狀況和配置(建議檢查項)
a) claude doctor,跑步:
claude doctor
此內建診斷功能會檢查您的安裝類型、常見問題(例如 npm 權限問題)以及依賴項等。 ripgrep並提出了修復建議。文件明確建議運行 claude doctor 安裝後。
b) 進行冒煙測試(非互動式)
從您的專案目錄:
cd /path/to/your/project
claude -p "Explain this project in 3 sentences"
這使用 打印 模式(-p) 發送單一提示然後退出;適用於 CI 或快速功能檢查。
c) 身份驗證(確保 CLI 可以連接到 Anthropic)
Claude Code 支援多種身份驗證流程(控制台 OAuth、API 金鑰、提供者整合)。常見檢查:
- 如果使用 API 金鑰(CI/無頭/本機環境變數):
export ANTHROPIC_API_KEY="sk-..."
# then
claude auth status
claude auth whoami # or `claude auth whoami` / `claude whoami` depending on version
您可以使用 彗星API使用 Claude Code 的 API 金鑰,透過 CometAPI 使用 Claude 的 API 將獲得 20% 的折扣。
- 如果您透過控制台使用了 OAuth 服務。 - 跑步:
claude auth status
claude auth whoami
您應該會看到帳戶/套餐資訊或身份驗證確認資訊。
逐步進行環境準備
以下是準備兩種常見開發者技術堆疊(TypeScript 和 Python)的具體步驟,以及快速檢查以確保一切正常運作的步驟。
H3 — A. TypeScript / Node 設定(最快路徑)
- 建立專案並安裝SDK:
mkdir mcp-demo && cd mcp-demo
npm init -y
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev typescript tsx @types/node @types/express
- 創建
server.ts(我們在「如何快速建構…」部分提供了一個完整的範例。) - 跑:
npx -y tsx server.ts
- 在本地進行測試 MCP檢查員 或添加到 Claude Code:
npx @modelcontextprotocol/inspector
# or (for Claude Code)
claude mcp add --transport http my-server http://localhost:3000/mcp
(檢查器和 Claude 命令可用於驗證發現結果並呼叫工具。)
如何快速建置一個適用於 Claude Code 的 MCP 伺服器?
快速清單
1.啟動伺服器(建議使用Streamable HTTP): node server.ts or uvicorn server:app.
- 在您的開發機器上,可以執行下列其中一項操作:
- 使用 MCP檢查員 驗證(
npx @modelcontextprotocol/inspector)並確認tools/listresources/list; 或 - 將伺服器新增至 Claude Code:
claude mcp add --transport http <name> http://<host>:<port>/mcp(或者,如果您的用戶端支援遠端 MCP,請按照 Web UI 流程操作)。
如果您打算使用 Anthropic 的訊息 API 連接器進行遠端 MCP(無需單獨的用戶端),請閱讀 Claude 文件—可能需要 beta 標頭(請查看文件以取得確切的標頭和目前支援狀態)。
以下是兩個完整且簡潔的伺服器範例,您可以複製、運行並將其連接到 Claude Code(或 MCP Inspector)。 TypeScript 範例使用 Express 和 TypeScript SDK;Python 範例示範了 FastAPI 的掛載。
注意:以下程式碼遵循公開的 SDK 範例,並刻意簡化以求清晰。在生產環境中,請在 SDK 預設功能之外新增身份驗證、日誌記錄、速率限制和輸入驗證等功能。
範例 1:TypeScript + Express(可串流 HTTP)
創建 server.ts (完全的):
// server.ts
import express from "express";
import * as z from "zod/v4";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const server = new McpServer({ name: "claude-code-demo", version: "0.1.0" });
// Register a simple tool: add two numbers
server.registerTool(
"add",
{
title: "Add",
description: "Add two numbers a and b",
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a + b };
return {
content: ,
structuredContent: output
};
}
);
// Register a resource: greet user (dynamic)
server.registerResource(
"greeting",
new ResourceTemplate("greeting://{name}", { list: undefined }),
{ title: "Greeting", description: "Return a greeting for the name" },
async (uri, params) => {
return {
contents:
};
}
);
// Express + Streamable HTTP transport
const app = express();
app.use(express.json());
app.post("/mcp", async (req, res) => {
const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
// Close transport when connection closes
res.on("close", () => transport.close());
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
const port = parseInt(process.env.PORT || "3000", 10);
app.listen(port, () => console.log(`MCP server listening: http://localhost:${port}/mcp`));
跑:
npm install
npx -y tsx server.ts
然後連接 Claude Code(範例):
# Add the remote server to your Claude Code MCP list (local dev)
claude mcp add --transport http my-demo http://localhost:3000/mcp
本範例改編自官方 TypeScript SDK 快速入門指南,示範如何註冊工具和資源,然後透過 Streamable HTTP 公開它們。
範例 2:Python + FastAPI(FastMCP + Streamable HTTP)
創建 server.py (完全的):
# server.py
from fastapi import FastAPI
from mcp.server.fastmcp import FastMCP
app = FastAPI()
mcp = FastMCP("claude-python-demo", stateless_http=True)
# tool: simple sum
@mcp.tool()
def add(a: int, b: int) -> dict:
"""Add two integers"""
return {"result": a + b}
# resource: simple greeting resource template
@mcp.resource("greeting://{name}")
def greeting(name: str):
return {"contents": }
# mount the streamable-http MCP endpoint (FastMCP exposes an ASGI app)
app.mount("/mcp", mcp.streamable_http_app())
# optional endpoint to demonstrate other API routes
@app.get("/")
async def root():
return {"status": "OK"}
跑:
uvicorn server:app --reload --port 8000
聯絡督察:
npx @modelcontextprotocol/inspector
# In Inspector select Streamable HTTP and enter http://localhost:8000/mcp
Python SDK 範例和 FastMCP 工具讓註冊變得非常簡單。 @mcp.tool() @mcp.resource() LLM 可以發現並呼叫的裝飾函數。
Claude Code 是如何呼叫你的工具的?
當LLM決定使用某個工具時,客戶端會傳送JSON-RPC呼叫到MCP伺服器。伺服器執行請求的工具(例如,查詢資料庫、執行測試或呼叫外部API)並傳回結果。 結構化內容 可呈現的內容客戶端(Claude Code)隨後可以將結構化輸出包含在模型的上下文中,以便模型能夠繼續使用這些可靠資料進行推理,而不僅僅是伺服器的文字輸出。 TypeScript SDK 支援註冊 inputSchema outputSchema (zod)因此參數和輸出都經過驗證並被機器識別。
應該使用哪些測試和調試工具?
MCP檢查員
MCP檢查員 是用於測試 MCP 伺服器的官方視覺化開發工具。它允許您連接到伺服器(stdio、SSE 或 streamable-HTTP),列出工具,手動呼叫它們,並檢查 JSON-RPC 訊息的生命週期——這在開發過程中非常寶貴。透過以下方式啟動它: npx @modelcontextprotocol/inspector.
本地測試與遠端測試
- 本地(標準輸入輸出) — 桌面應用程式的快速迭代周期和離線偵錯。
- 可串流的 HTTP — 使用 Inspector 進行測試或連接到 Claude Code
claude mcp add遠端測試可以使用 CLI 或 Messages API 中的 MCP 連接器。請確保提供伺服器所需的任何身份驗證標頭。
結論
MCP 是連接現代生命週期模型 (LLM) 與實際儲存資料並執行操作的系統之間的實用橋樑。對於程式碼工作流程,將 Claude Code 與 MCP 伺服器集成,可為模型提供程式碼庫、持續整合 (CI)、問題追蹤器和自訂工具的結構化、可審計存取權限,從而實現更精確的自動化和更安全的副作用。借助 TypeScript 和 Python 的官方 SDK、用於遠端託管的 Streamable HTTP 以及 MCP Inspector 等工具,您可以在幾分鐘內建立一個最小化的伺服器,並逐步迭代以部署到生產環境。
開發人員可以訪問 克勞德十四行詩 4.5 API 克勞德作品 4.1 API 等等,透過 CometAPI, 最新型號版本 始終與官方網站同步更新。首先,探索該模型的功能 游乐场 並諮詢 API指南 以獲得詳細說明。造訪前請確保您已經登入CometAPI並取得API金鑰。 彗星API 提供遠低於官方價格的價格,幫助您整合。
準備出發了嗎? → 立即註冊 CometAPI !
