自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文帶你入門 MCP(模型上下文協(xié)議)

人工智能
本文帶領(lǐng)讀者快速入門了 MCP(模型上下文協(xié)議),介紹了其架構(gòu)、核心概念以及實(shí)際應(yīng)用場(chǎng)景。通過(guò)演示 Claude Desktop 結(jié)合 PostgreSQL MCP Server 查詢數(shù)據(jù)庫(kù)的場(chǎng)景,展示了 MCP 如何增強(qiáng) LLM 與外部數(shù)據(jù)源的交互能力。

什么是 MCP?

MCP(Model Context Protocol,模型上下文協(xié)議) 是由 Anthropic 推出的一種開(kāi)放標(biāo)準(zhǔn),旨在統(tǒng)一大型語(yǔ)言模型(LLM)與外部數(shù)據(jù)源和工具之間的通信協(xié)議。MCP 的主要目的在于解決當(dāng)前 AI 模型因數(shù)據(jù)孤島限制而無(wú)法充分發(fā)揮潛力的難題,MCP 使得 AI 應(yīng)用能夠安全地訪問(wèn)和操作本地及遠(yuǎn)程數(shù)據(jù),為 AI 應(yīng)用提供了連接萬(wàn)物的接口。

MCP 架構(gòu)

MCP 遵循客戶端-服務(wù)器架構(gòu)(client-server),其中包含以下幾個(gè)核心概念:

  • MCP 主機(jī)(MCP Hosts):發(fā)起請(qǐng)求的 LLM 應(yīng)用程序(例如 Claude Desktop、IDE 或 AI 工具)。
  • MCP 客戶端(MCP Clients):在主機(jī)程序內(nèi)部,與 MCP server 保持 1:1 的連接。
  • MCP 服務(wù)器(MCP Servers):為 MCP client 提供上下文、工具和 prompt 信息。
  • 本地資源(Local Resources):本地計(jì)算機(jī)中可供 MCP server 安全訪問(wèn)的資源(例如文件、數(shù)據(jù)庫(kù))。
  • 遠(yuǎn)程資源(Remote Resources):MCP server 可以連接到的遠(yuǎn)程資源(例如通過(guò) API)。

圖片圖片

MCP Client

MCP client 充當(dāng) LLM 和 MCP server 之間的橋梁,MCP client 的工作流程如下:

  • MCP client 首先從 MCP server 獲取可用的工具列表。
  • 將用戶的查詢連同工具描述通過(guò) function calling 一起發(fā)送給 LLM。
  • LLM 決定是否需要使用工具以及使用哪些工具。
  • 如果需要使用工具,MCP client 會(huì)通過(guò) MCP server 執(zhí)行相應(yīng)的工具調(diào)用。
  • 工具調(diào)用的結(jié)果會(huì)被發(fā)送回 LLM。
  • LLM 基于所有信息生成自然語(yǔ)言響應(yīng)。
  • 最后將響應(yīng)展示給用戶。

你可以在 Example Clients 找到當(dāng)前支持 MCP 協(xié)議的客戶端程序。本文將會(huì)使用 Claude Desktop 作為 MCP client,你可以在此頁(yè)面下載安裝:https://claude.ai/download 。

MCP Server

MCP server 是 MCP 架構(gòu)中的關(guān)鍵組件,它可以提供 3 種主要類型的功能:

資源(Resources):類似文件的數(shù)據(jù),可以被客戶端讀取,如 API 響應(yīng)或文件內(nèi)容。

工具(Tools):可以被 LLM 調(diào)用的函數(shù)(需要用戶批準(zhǔn))。

提示(Prompts):預(yù)先編寫的模板,幫助用戶完成特定任務(wù)。

這些功能使 MCP server 能夠?yàn)?AI 應(yīng)用提供豐富的上下文信息和操作能力,從而增強(qiáng) LLM 的實(shí)用性和靈活性。

你可以在 MCP Servers Repository 和 Awesome MCP Servers 這兩個(gè) repo 中找到許多由社區(qū)實(shí)現(xiàn)的 MCP server。使用 TypeScript 編寫的 MCP server 可以通過(guò) npx 命令來(lái)運(yùn)行,使用 Python 編寫的 MCP server 可以通過(guò) uvx 命令來(lái)運(yùn)行。

使用 Claude Desktop 通過(guò) PostgreSQL MCP Server 查詢數(shù)據(jù)庫(kù)信息

接下來(lái)演示通過(guò) PostgreSQL MCP Server 使 LLM 能夠基于 PostgreSQL 中的數(shù)據(jù)來(lái)回答問(wèn)題。

準(zhǔn)備 PostgreSQL 數(shù)據(jù)

首先使用 Docker 啟動(dòng) PostgreSQL 服務(wù)。

docker run -d --name postgres \
  -e POSTGRES_PASSWORD=postgres -p 5432:5432 \
  postgres

在 PostgreSQL 中創(chuàng)建數(shù)據(jù)庫(kù)和表,并插入數(shù)據(jù)。

-- 登錄 PostgreSQL
docker exec -it postgres psql -U postgres

-- 創(chuàng)建數(shù)據(jù)庫(kù)
CREATEDATABASE shopdb;

-- 連接到新創(chuàng)建的數(shù)據(jù)庫(kù)
\c shopdb;

-- 創(chuàng)建 users 表
CREATETABLEusers (
    user_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOTNULL,
    last_name VARCHAR(50) NOTNULL,
    email VARCHAR(100) UNIQUENOTNULL
);

-- 創(chuàng)建 orders 表
CREATETABLE orders (
    order_id SERIAL PRIMARY KEY,
    order_date TIMESTAMPNOTNULL,
    total_amount DECIMAL(10, 2) NOTNULL,
    user_id INTREFERENCESusers(user_id)
);

-- 插入示例數(shù)據(jù)
INSERTINTOusers (first_name, last_name, email) VALUES
('John', 'Doe', 'john.doe@example.com'),
('Jane', 'Smith', 'jane.smith@example.com'),
('Alice', 'Johnson', 'alice.johnson@example.com');

INSERTINTO orders (order_date, total_amount, user_id) VALUES
('2025-01-05 10:30:00', 150.75, 1),
('2025-01-06 11:00:00', 200.50, 2),
('2025-01-07 12:45:00', 120.25, 1);

配置連接 PostgreSQL MCP Server

在 Claude Desktop 中配置 PostgreSQL MCP Server 的連接信息,具體內(nèi)容可以參考:For Claude Desktop Users。最終是在 claude_desktop_config.json 文件中添加如下內(nèi)容:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://postgres:postgres@127.0.0.1/shopdb"
      ]
    }
  }
}

配置完畢后,重啟 Claude Desktop。一切正常的話,你應(yīng)該能在輸入框的右下角看到一個(gè)錘子圖標(biāo)。點(diǎn)擊錘子圖標(biāo),可以看到 PostgreSQL MCP Server 提供的工具信息。

圖片圖片

根據(jù) PostgreSQL 的數(shù)據(jù)進(jìn)行提問(wèn)

首先來(lái)問(wèn)一個(gè)簡(jiǎn)短的問(wèn)題:數(shù)據(jù)庫(kù)中有哪些表? Claude 會(huì)判斷出需要調(diào)用 MCP server 來(lái)查詢 PostgreSQL 中的數(shù)據(jù)。這里會(huì)彈出一個(gè)窗口,需要用戶授權(quán)。

圖片圖片

點(diǎn)擊 Allow 后,Claude 成功返回了結(jié)果。

圖片圖片

接下來(lái)我們可以增加一點(diǎn)難度:查詢金額最高的訂單信息。在數(shù)據(jù)庫(kù)中有兩張表 users 和 orders,要想得到完整的訂單信息,需要先去查詢 orders 表中金額最高的一條記錄,然后根據(jù) user_id 這個(gè)外鍵再去查詢 users 表中對(duì)應(yīng)的用戶信息。

從下面的輸出可以發(fā)現(xiàn) Claude 一開(kāi)始是不知道數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)的,因此先發(fā)送請(qǐng)求分別確定 orders 表和 users 表中相應(yīng)的字段,然后再對(duì)兩張表進(jìn)行 join 查詢。

圖片圖片

點(diǎn)擊 View Result from query from postgres 可以看到 Claude Desktop 向 MCP server 發(fā)送的請(qǐng)求以及得到的響應(yīng),說(shuō)明這個(gè)結(jié)果確實(shí)是從 PostgreSQL 數(shù)據(jù)庫(kù)中查詢得到的。

圖片圖片

你也可以復(fù)制這條 SQL 語(yǔ)句到數(shù)據(jù)庫(kù)中查詢進(jìn)行確認(rèn)。

圖片圖片

總結(jié)

本文帶領(lǐng)讀者快速入門了 MCP(模型上下文協(xié)議),介紹了其架構(gòu)、核心概念以及實(shí)際應(yīng)用場(chǎng)景。通過(guò)演示 Claude Desktop 結(jié)合 PostgreSQL MCP Server 查詢數(shù)據(jù)庫(kù)的場(chǎng)景,展示了 MCP 如何增強(qiáng) LLM 與外部數(shù)據(jù)源的交互能力。后續(xù)文章還會(huì)繼續(xù)分享 MCP server 和 MCP client 開(kāi)發(fā)的相關(guān)內(nèi)容,歡迎持續(xù)關(guān)注。

參考資料

  • Model Context Protocol 官方文檔:https://modelcontextprotocol.io/introduction
  • 深度解析:Anthropic MCP 協(xié)議:https://mp.weixin.qq.com/s/ASmcjW53HKokdYt1m-xyXA
責(zé)任編輯:武曉燕 來(lái)源: Se7en的架構(gòu)筆記
相關(guān)推薦

2025-03-18 09:10:00

MCPAI模型上下文協(xié)議

2025-04-07 05:01:00

MCP上下文協(xié)議LLM?

2025-03-18 08:14:05

2025-03-18 10:34:33

2025-04-01 08:38:25

模型上下文協(xié)議MCPLLM

2025-03-26 03:00:00

MCPAI應(yīng)用

2022-05-16 10:49:28

網(wǎng)絡(luò)協(xié)議數(shù)據(jù)

2021-01-26 05:19:56

語(yǔ)言Go Context

2022-05-11 11:54:55

Http傳送協(xié)議

2024-11-26 11:58:26

模型開(kāi)源

2021-05-29 10:11:00

Kafa數(shù)據(jù)業(yè)務(wù)

2022-02-24 07:34:10

SSL協(xié)議加密

2025-03-04 08:42:19

2025-03-10 18:12:22

ManusMCP沙盒越獄

2017-05-11 14:00:02

Flask請(qǐng)求上下文應(yīng)用上下文

2024-10-08 08:52:59

2024-03-14 08:11:45

模型RoPELlama

2023-05-05 07:41:42

執(zhí)行上下文JavaScript

2023-12-06 16:28:56

2021-07-26 07:47:36

Cpu上下文進(jìn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)