偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

最近爆火的MCP究竟有多大魅力?MCP開發(fā)初體驗(yàn)

人工智能
相信大家通過(guò)上面的實(shí)踐后,對(duì) MCP 有了一個(gè)基本的認(rèn)識(shí),組合多個(gè) MCP Server 的工作流可以自主完成非常復(fù)雜的任務(wù),關(guān)鍵是這協(xié)議統(tǒng)一了連接標(biāo)準(zhǔn),有大量現(xiàn)成的 MCP Server 可以即插即用,大幅降低建設(shè)成本。

一、前言

MCP 全稱 Model Context Protocol,是由 Anthropic 公司在 2024 年 11 月推出一個(gè)開放協(xié)議,主要用于標(biāo)準(zhǔn)化應(yīng)用程序向大語(yǔ)言模型提供上下文的方式??梢詫?MCP 想象成 AI 應(yīng)用程序的 USB-C 接口。就像 USB-C 為設(shè)備連接各種外設(shè)和配件提供了標(biāo)準(zhǔn)化方式一樣,MCP 為 AI 模型連接不同的數(shù)據(jù)源和工具提供了標(biāo)準(zhǔn)化方式。

圖片

近期 MCP 的熱度持續(xù)上升,網(wǎng)上也是噴涌出大量相關(guān)文章,相信在不遠(yuǎn)的將來(lái) MCP 將成為每個(gè)開發(fā)者必備的技能之一,非常值得投入時(shí)間學(xué)習(xí)一下。下面會(huì)通過(guò)簡(jiǎn)單的實(shí)踐來(lái)帶大家理解一下 MCP 的工作原理,以及展望下 MCP 在未來(lái)可能的一些應(yīng)用場(chǎng)景。

二、MCP 基礎(chǔ)架構(gòu)

基礎(chǔ)架構(gòu)

在開始實(shí)踐之前,還是簡(jiǎn)單介紹一下 MCP 的基本架構(gòu)和一些基礎(chǔ)組件:

圖片圖片

  • MCP Host:需要通過(guò)MCP訪問(wèn)數(shù)據(jù)的程序,例如 Claude Desktop、Cursor、Cline等桌面工具。主要職責(zé):接受&返回你的提問(wèn)、跟模型交互、內(nèi)置了 MCP Client,與服務(wù)器保持一對(duì)一連接的協(xié)議客戶端。
  • MCP Server:輕量級(jí)程序,每個(gè)程序都通過(guò)標(biāo)準(zhǔn)化的模型上下文協(xié)議 (MCP) 提供特定功能。主要職責(zé):能力暴露(操作本地文件&瀏覽器,訪問(wèn)數(shù)據(jù)庫(kù),訪問(wèn)遠(yuǎn)程服務(wù))。
  • 本地?cái)?shù)據(jù)源:MCP 服務(wù)器可以安全訪問(wèn)的數(shù)據(jù)庫(kù)、本地文件、瀏覽器等。
  • 遠(yuǎn)程服務(wù):MCP 服務(wù)器可以通過(guò)互聯(lián)網(wǎng)(例如通過(guò) API)連接到的外部系統(tǒng)。

工作流程

從用戶提問(wèn),到最終完成任務(wù)的完整流程可參考下圖:

圖片圖片

百聞不如一見,百見不如一練。下面我們手把手開發(fā)一個(gè) MCP Server,并且通過(guò) Cline 來(lái)使用它,實(shí)踐過(guò)程中會(huì)容易幫助我們?nèi)ダ斫?MCP。

三、MCP Server 開發(fā)&實(shí)踐

準(zhǔn)備MCP Client

這里我用的是 Cline,是 VSCode 中的一個(gè)插件,直接在 VSCode 插件市場(chǎng)中搜索安裝即可,其實(shí)這里的 Cline 在 MCP 的概念中是 MCP Host,只是 Host 里面內(nèi)置了 MCP Client(負(fù)責(zé)跟模型&MCP Server 交互)。

其實(shí)更推薦使用 Claude,但是 Claude注冊(cè)流程相對(duì)復(fù)雜一點(diǎn),對(duì)網(wǎng)絡(luò)環(huán)境要求也更高。

圖片圖片

安裝好后,第一步就是需要配置大模型,這里我選擇的是 DeepSeek。

需要自行購(gòu)買 API Key(https://platform.deepseek.com/api_keys)

圖片圖片

然后就可以開始配置 MCP server 了,點(diǎn)擊右上角的第二個(gè)圖標(biāo)。

圖片圖片

這里可以使用開源的 MCP Server,也可以使用自己開發(fā)的 MCP Server,下面我們嘗試自己動(dòng)手開發(fā)一個(gè)簡(jiǎn)單的 MCP Server。

開發(fā)MCP Server

想要開發(fā)一個(gè) MCP Server,并不需要關(guān)心協(xié)議本身的一些細(xì)節(jié),因?yàn)楣俜酵瞥隽烁鞣N語(yǔ)言的 SDK(https://modelcontextprotocol.io/sdk/java/mcp-server),通過(guò) SDK 可以快速搭建一個(gè) MCP Server,并且主流語(yǔ)言都針對(duì) MCP 推出了自己的框架,Java 也不例外,這里我們選擇使用 Spring 框架來(lái)搭建一個(gè) MCP Server(https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html)。

引入依賴

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>

定義 Tools

這里我們定義一個(gè)發(fā)送飛書消息的工具類:

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
import com.lark.oapi.Client;
import com.lark.oapi.core.cache.LocalCache;
import com.lark.oapi.core.enums.AppType;
import com.lark.oapi.service.im.v1.enums.MsgTypeEnum;
import com.lark.oapi.service.im.v1.enums.ReceiveIdTypeEnum;
import com.lark.oapi.service.im.v1.model.CreateMessageReq;
import com.lark.oapi.service.im.v1.model.CreateMessageReqBody;
import com.lark.oapi.service.im.v1.model.CreateMessageResp;
import java.util.concurrent.TimeUnit;
/**
 * @author xinyi
 */
@Service
public class LarkService {
    private final Client larkClient = feishuClient();
    public Client feishuClient() {
        return Client.newBuilder(System.getenv("larkAppId"), 
                  System.getenv("larkAppSecret")).appType(AppType.SELF_BUILT) // 設(shè)置app類型,默認(rèn)為自建
                .tokenCache(LocalCache.getInstance()) // 設(shè)置token緩存,默認(rèn)為內(nèi)存緩存
                .requestTimeout(10, TimeUnit.SECONDS) // 設(shè)置httpclient 超時(shí)時(shí)間,默認(rèn)永不超時(shí)
                .logReqAtDebug(false)
                .build();
    }
    @Tool(description = "用飛書給用戶發(fā)消息")
    public String sendLarkCardMessage(@ToolParam(description = "接收人郵箱") String receiveEmail,
                                      @ToolParam(description = "飛書卡片內(nèi)容(參考飛書文檔要求的結(jié)構(gòu)體)") String cardContent) throws Exception {
        CreateMessageReq req = CreateMessageReq.newBuilder().receiveIdType(ReceiveIdTypeEnum.EMAIL.getValue())
                .createMessageReqBody(CreateMessageReqBody.newBuilder()
                        .receiveId(receiveEmail)
                        .msgType(MsgTypeEnum.MSG_TYPE_INTERACTIVE.getValue())
                        .content(cardContent)
                        .build())
                .build();
        CreateMessageResp resp = larkClient.im().message().create(req);
        return resp.getMsg();
    }
}

這里 Spring 會(huì)自動(dòng)把@Tools 注解的方法按照 MCP 標(biāo)準(zhǔn)暴露出來(lái),大模型會(huì)根據(jù)其中的描述來(lái)決策是否可以調(diào)用此方法。

啟動(dòng)類

import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class McpServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(McpServerApplication.class, args);
    }
    @Bean
    public ToolCallbackProvider weatherTools(LarkService larkService) {
        return MethodToolCallbackProvider.builder().toolObjects(larkService).build();
    }
}

打包

到這里一個(gè)簡(jiǎn)單的 MCP Server 就已經(jīng)開發(fā)完成了,下面只需要執(zhí)行 mvn clean package 打成可執(zhí)行 jar 包就能配置到 Cline 中了。

圖片圖片

配置MCP Server

回到 VSCode 的 Cline 插件,點(diǎn)擊第二個(gè)圖標(biāo),然后點(diǎn)擊下面的 Configure MCP Servers,然后開始編輯右側(cè)的配置文件:

圖片圖片

這里的配置文件是 MCP 標(biāo)準(zhǔn)化的,下面基于我們這個(gè) MCP Server 介紹下幾個(gè)核心配置的含義:

"mcpServers": {
      "lark": {
        "disabled": false,
        "timeout": 60,
        "command": "/Users/admin/Documents/jdk-17.jdk/Contents/Home/bin/java",
        "args": [
          "-Dspring.ai.mcp.server.stdio=true",
          "-Dspring.main.web-application-type=none",
          "-Dlogging.pattern.cnotallow=",
          "-jar",
          "/Users/admin/Documents/git/open-source/spring-ai-mcp-server-demo/target/spring-ai-mcp-server-demo-1.0-SNAPSHOT.jar"
        ],
        "env": {
          "larkAppId": "xxx",
          "larkAppSecret": "xxx"
        },
        "autoApprove": [
          "sendLarkCardMessage"
        ],
        "transportType": "stdio"
      },
  • mcpServers:JSON 配置跟 Key
  • lark:MCP Server 唯一標(biāo)識(shí)&名稱
  • command:?jiǎn)?dòng) MCP Server 的命令(如 Java 就是 java -jar,Node 一般是 npx,Python 一般是 uvx)
  • args:執(zhí)行命令后面的自定義參數(shù)
  • env:環(huán)境變量,用于配置一些可配置參數(shù),比如密鑰、外部 URL 等

這里配置好了后,如果右上角的點(diǎn)變成了綠色說(shuō)明 MCP Server 加載成功,而且在下面還可以看到 MCP Server 提供的所有 Tools,以及每個(gè) Tool 的參數(shù)跟描述。

圖片圖片

開始體驗(yàn)

點(diǎn)擊右上角的+號(hào)開始聊天:給我發(fā)一條下午好的飛書卡片消息,附帶一下今日的熱點(diǎn)新聞。

圖片圖片

可以看到 Cline 調(diào)用了大模型開始思考,并且根據(jù) MCP Server 提供的 Tools 開始選擇發(fā)送消息接口并執(zhí)行。

圖片圖片

而且如果第一次嘗試失敗,還會(huì)自動(dòng)糾錯(cuò),最后成功調(diào)用了我們 MCP Server 提供的 Tools,發(fā)送了一條消息給我。

圖片圖片

圖片圖片

進(jìn)階體驗(yàn)

上面的例子我們只用到了一個(gè) Tools,我們可以嘗試組合多個(gè) Tools&多個(gè) MCP Server 來(lái)實(shí)現(xiàn)更復(fù)雜的任務(wù),比如我們現(xiàn)在再開發(fā)一個(gè)可以操作 ES 的 MCP Server,然后打包后配置到 Cline 中。

@Tool(description = """
        通用ES查詢工具,參數(shù)示例:
        path: 請(qǐng)求路徑
        method: HTTP請(qǐng)求方法 GET 或 POST
        queryJson: 具體請(qǐng)求體
        """)
public String searchByQuery(
        String path,
        String method,
        String queryJson) {
    String url = String.format("%s/%s", System.getEnv("esBaseUrl"), path);
    HttpEntity<String> request = buildEsRequest(queryJson);
    ResponseEntity<String> response = restTemplate.exchange(
            url, HttpMethod.valueOf(method), request, String.class);
    return response.getBody();
}

配置好后,在對(duì)話中發(fā)送:分析一下 es 集群目前的索引分布,重點(diǎn)分析一下哪些索引的分片設(shè)置不合理,最終整理后飛書發(fā)給我。

圖片圖片

然后會(huì)根據(jù)請(qǐng)求 ES 返回的結(jié)果,再次吐給模型進(jìn)行分析。

圖片圖片

最終整理后通過(guò)飛書發(fā)送一份簡(jiǎn)單報(bào)告。

圖片圖片

聯(lián)想一下

想象一下,如果組合一下飛書文檔、瀏覽器操作、文件系統(tǒng)、發(fā)布系統(tǒng)對(duì)接等 MCP Server,一句話就可以讓大模型從自動(dòng)連接瀏覽器,打開飛書文檔,分析需求,分析視覺(jué)稿,然后自己寫代碼,對(duì)比視覺(jué)稿,你就喝杯咖啡,靜靜的看著它工作。

順帶推薦一下常用的 MCP Client 以及一些現(xiàn)成的 MCP Server。

  • MCP Client List:

https://modelcontextprotocol.io/clients

  • MCP Server List:

https://github.com/modelcontextprotocol/servers

https://github.com/punkpeye/awesome-mcp-servers/blob/main/README-zh.md

四、總結(jié)

相信大家通過(guò)上面的實(shí)踐后,對(duì) MCP 有了一個(gè)基本的認(rèn)識(shí),組合多個(gè) MCP Server 的工作流可以自主完成非常復(fù)雜的任務(wù),關(guān)鍵是這協(xié)議統(tǒng)一了連接標(biāo)準(zhǔn),有大量現(xiàn)成的 MCP Server 可以即插即用,大幅降低建設(shè)成本??傊?MCP 協(xié)議的持續(xù)落地,讓 AI 不再只是聊天工具,而是工業(yè)智能革命的萬(wàn)能操作平臺(tái),在未來(lái)潛力無(wú)限,想象無(wú)限,值得每一位開發(fā)者去學(xué)習(xí)并掌握它!

責(zé)任編輯:武曉燕 來(lái)源: 得物技術(shù)
相關(guān)推薦

2025-07-28 04:00:00

2012-07-23 10:19:08

微軟Azure云計(jì)算

2012-01-11 10:14:58

HTML 5

2021-03-16 15:52:06

大數(shù)據(jù)云計(jì)算物聯(lián)網(wǎng)

2025-04-02 10:06:00

2013-09-02 10:02:01

大數(shù)據(jù)

2018-03-29 10:19:45

2025-04-15 08:54:22

2025-05-09 06:30:52

2020-04-08 16:03:12

OpenRAN5G運(yùn)營(yíng)商

2018-09-28 18:12:49

Apple Watch心電圖測(cè)量

2018-03-27 09:04:58

數(shù)據(jù)安全Facebook

2025-09-24 10:21:11

2025-08-27 01:33:00

2023-04-21 10:33:42

2025-06-25 13:13:52

2021-12-06 20:29:08

AI

2025-07-31 09:02:21

2025-03-13 03:00:00

DockerAgentic工具

2025-03-07 09:59:44

ManusAI科技圈
點(diǎn)贊
收藏

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