MCP開發入門

MCP開發入門

官方文檔: https://modelcontextprotocol.io/introduction
入門教程: https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide

  • 本文源代碼:https://github.com/youngqqcn/mcp-server-demo

什么是MCP?

模型上下文協議(MCP)是一個創新的開源協議,它重新定義了大語言模型(LLM)與外部世界的互動方式。MCP 提供了一種標準化方法,使任意大語言模型能夠輕松連接各種數據源和工具,實現信息的無縫訪問和處理。MCP 就像是 AI 應用程序的 USB-C 接口,為 AI 模型提供了一種標準化的方式來連接不同的數據源和工具。

MCP 有以下幾個核心功能:

  • Resources 資源
  • Prompts 提示詞(模板), 用于給客戶端提供提示詞模板
  • Tools 工具
  • Sampling 采樣
  • Roots 根目錄
  • Transports 傳輸層
    • stdio 用于本地
      • 通過 uvx 或 npx 跑一個本地服務供mcp客戶端(也是大模型客戶端)調用
    • streamable http 最新的
    • http + sse : 已廢棄,老的mcp依然使用

MCP客戶端:

  • Claude App (要翻墻)
  • Cusor
  • Vscode
  • Cherry Studio

mcp的資源

目前 MCP 非常火爆,很多開發者參與:

  • https://github.com/modelcontextprotocol/servers/tree/main/src

  • https://mcp.so/

  • https://www.modelscope.cn/mcp

  • https://github.com/punkpeye/awesome-mcp-servers/tree/main

MCP的工作原理

關于mcp工作過程 https://zhuanlan.zhihu.com/p/29001189476

  • 1, 用戶使用客戶端(如 Cursor, Cherry Studio), 并指定開啟的mcp工具,并向大模型提出問題
  • 2, 客戶端將問題發大模型,同時附帶上可使用的mcp工具列表
  • 3, 如果大模型需要調用mcp工具獲取外部數據,大模型會中斷并返回需要調用的工具列表, 并包含一個中斷原因: tool_call; 如果不需要調用工具,則直接返回結果
  • 4, 客戶端根據大模型返回的工具列表,調用相應的mcp工具, 獲取外部數據
  • 5, 客戶端將獲取到的數據,傳遞給大模型
  • 6, 大模型根據獲取到的數據,繼續處理問題
  • 7, 大模型返回結果
  • 8, 客戶端將結果返回給用戶

MCP server 開發

官方文檔: https://modelcontextprotocol.io/introduction
Python SDK: https://github.com/modelcontextprotocol/python-sdk

支持 Python, Typescript, Java …

這里以 Python 為例, 用 uv創建一個項目

如果沒有安裝 uv, 請先安裝 uv: https://docs.astral.sh/uv/getting-started/installation/

uv init mcp-server-democd mcp-server-demouv add "mcp[cli]"source .venv/bin/activate

創建一個 add_server.py, 代碼:

# server.py
from mcp.server.fastmcp import FastMCP# Create an MCP server
mcp = FastMCP("Demo")# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:"""Add two numbers"""return a + b# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""Get a personalized greeting"""return f"Hello, {name}!"if __name__ == "__main__":# Start the servermcp.run(transport="streamable-http")

調試 MCP server:

  • 測試/調試MCP程序, 啟動2個終端

  • 在一個終端運行 mcp 服務, streamable-http 默認監聽 8000 端口 和 mcp端點 python add_server.py

  • 在另外一個終端中, 啟動一個測試客戶端 mcp dev add_server.py

  • 瀏覽器打開 http://127.0.0.1:6274

  • Transport 選擇 streamable-http

  • URL 填入 http://localhost:8000/mcp

  • 點擊 Connect, 可以看到連接成功

  • 然后點擊 Tools, 點擊 List Tools 列出所有的工具

  • 點擊 add 進行測試, 輸入 ab 的值, 點擊 Run Tool, 可以看到返回結果

在客戶端使用 MCP server

在 Cherry Studio 中使用上面的 add MCP server

  • 下載 Cherry Studio

在 Cherry Studio 中選擇支持工具調用的大模型(帶工具icon的模型)

在對話中,開啟我們剛才添加的 my_test_add工具:

因為我們這個add工具過于簡單,如果直接問大模型 100 + 3 等于多少,模型會直接返回結果,而不會調用我們添加的 add 工具 , 因此,我們這里需要換種方式提問,以便大模型能夠調用我們添加的 add 工具

可見, 大模型調用了我們添加的 add 工具,并返回了正確結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82343.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PX4開始之旅(二)通過自定義 MAVLink 消息與 QGroundControl (QGC) 通信

核心知識點:通過自定義 MAVLink 消息與 QGroundControl (QGC) 通信 1. 通俗易懂的解釋 想象一下,MAVLink 就像是無人機(飛控)和地面站(QGroundControl)之間約定好的一種“語言”。這種語言有很多標準的“…

AI視頻智能分析網關打造社區/工廠/校園/倉庫智慧消防實現精準化安全管控

一、背景 隨著社區、商業場所對消防安全要求日益提升,傳統消防系統已難以滿足智能化、精細化管理需求。智能分析網關融合物聯網與人工智能技術,具備強大的數據處理與分析能力,可全面升級消防系統。將其融入消防系統各層級,搭建智…

深度學習基礎--目標檢測常見算法簡介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)

博主簡介:努力學習的22級本科生一枚 🌟?;探索AI算法,C,go語言的世界;在迷茫中尋找光芒?🌸? 博客主頁:羊小豬~~-CSDN博客 內容簡介:常見目標檢測算法簡介?&#x1f…

傳輸層協議UDP和TCP

傳輸層協議UDP和TCP 1、UDP2、TCP2.1、TCP協議段格式2.2、確認應答(ACK)機制2.3、超時重傳機制2.4、連接管理機制2.5、理解CLOSE_WAIT狀態2.6、理解TIME_WAIT狀態2.7、流量控制2.8、滑動窗口2.9、擁塞控制2.10、延遲應答2.11、捎帶應答2.12、面向字節流2.13、粘包問題2.14、TCP…

PMIC電源管理模塊的PCB設計

目錄 PMU模塊簡介 PMU的PCB設計 PMU模塊簡介 PMIC(電源管理集成電路)是現代電子設備的核心模塊,負責高效協調多路電源的轉換、分配與監控。它通過集成DC-DC降壓/升壓、LDO線性穩壓、電池充電管理、功耗狀態切換等功能,替代傳統分…

Ubuntu 配置網絡接口端點(靜態 IP 地址)詳細教程

在 Ubuntu 系統中,配置網絡接口端點通常指的是為您的有線或無線網卡設置一個固定的 IP 地址、子網掩碼、網關以及 DNS 服務器。這對于服務器或者需要穩定網絡標識的設備來說非常重要。 使用 Netplan (Ubuntu 17.10 及更高版本的默認方式)使用 ifupdown (通過 /etc/…

淺聊大模型-有條件的文本生成

大家好我是木木,自從2022年11月30日OpenAI發布ChatGPT后,大模型迅速火熱起來,人工智能作為當下最火的行業之一,2025年春節期間DeepSeek R1模型大火。LLM中有很多的技術,今天我們聊聊大模型-有條件的文本生成。 什么是…

華為銀河麒麟 V10(ARM)系統軟件部署全攻略:Redis、RabbitMQ、MySQL 等集群搭建指南

一、Redis 集群部署(主從 哨兵模式) 1. 環境準備 系統:華為銀河麒麟 V10(ARM64)節點:3 臺服務器(1 主 2 從 3 哨兵) 2. 安裝包下載 bash # 華為鏡像站 wget https://update.c…

Mysql數據庫進階

一、Mysql組織架構 連接層 1.驗證用戶的身份,用戶名密碼是否匹配 2.提供兩種連接方式(TCP/IP連接、socket連接) 3.連接層提供了一個與sql層交互的線程 SQL層 1.接收連接層傳過來的SQL語句 2.驗證執行的SQL語法 3.驗證SQL的語義(DDL,DML,DQL,DCL) 4.解析器:解析SQL語句,生…

系統思考:短期困境與長期收益

最近在項目中,一直有學員會提到一個議題,如何平衡當前困境和長期收益? 我的思考是在商業和人生的路上,我們常常聽到“魚和熊掌不可兼得”的說法,似乎短期利益和長期目標注定是對立的。但事實上,魚與熊掌是…

Spring Web MVC快速入門

什么是Spring Web MVC Spring Web MVC 是基于 Servlet API 構建的原始 Web 框架,從?開始就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc),但它通常被稱為"Spring MVC". View(視圖) 指在應?程序…

DeepSeek基于注意力模型的可控圖像生成

DeepSeek大模型高性能核心技術與多模態融合開發 - 商品搜索 - 京東 圖像的加噪與模型訓練 在擴散模型的訓練過程中,首先需要對輸入的信號進行加噪處理,經典的加噪過程是在圖像進行向量化處理后在其中添加正態分布,而正態分布的值也是與時間…

第十六屆藍橋杯B組第二題

當時在考場的時候這一道題目 無論我是使用JAVA的大數(BIGTHGER)還是賽后 使用PY 都是沒有運行出來 今天也是突發奇想在B站上面搜一搜 看了才知道這也是需要一定的數學思維 通過轉換 設X來把運算式精簡化 避免運行超時 下面則是代碼 public class lanba…

HT71663同步升壓2.7V-13V輸入10A聚能芯半導體禾潤一級代理

在便攜式設備飛速發展的今天,電源轉換效率與產品尺寸始終是行業難以平衡的難題。但現在,HT71663 高功率全集成升壓轉換器強勢登場,一舉打破僵局,為便攜式系統帶來顛覆性的高效小尺寸解決方案!? HT71663 的卓越性能&am…

Unity:輸入系統(Input System)與持續檢測鍵盤按鍵(Input.GetKey)

目錄 Unity 的兩套輸入系統: 🔍 Input.GetKey 詳解 🎯 對比:常用的輸入檢測方法 技術底層原理(簡化版) 示例:角色移動 為什么會被“新輸入系統”替代? Unity 的兩套輸入系統&…

港大今年開源了哪些SLAM算法?

過去的5個月,香港大學 MaRS 實驗室陸續開源了四套面向無人機的在線 SLAM 框架:**FAST-LIVO2 、Point-LIO(grid-map 分支) 、Voxel-SLAM 、Swarm-LIO2 **。這四套框架覆蓋了單機三傳感器融合、高帶寬高速機動、長時間多級地圖優化以…

【質量管理】TRIZ因果鏈分析:解碼質量問題的“多米諾效應“

為什么要使用因果鏈分析 沒有發現問題并不等于沒有問題。愛因斯坦曾說,如果我只有一個小時的時間來拯救世界,我將花45分鐘時間分析問題,10分鐘的時間來檢查問題,最后5分鐘的時間來解決問題。可見問題分析的重要性。 在質量管理實踐…

線程中常用的方法

知識點詳細說明 Java線程的核心方法集中在Thread類和Object類中,以下是新增整合后的常用方法分類解析: 1. 線程生命周期控制 方法作用注意事項start()啟動新線程,JVM調用run()方法多次調用會拋出IllegalThreadStateException(線程狀態不可逆)。run()線程的任務邏輯直接調…

c++:迭代器(Iterator)

目錄 🚪什么是迭代器? 🔧 迭代器的本質 為什么不用普通數組或下標? STL容器的迭代器并不是共用一個類型! 迭代器的類型(Iterator Categories) 📦 常見容器的迭代器類型 ? 迭…

【文件系統—散列結構文件】

文章目錄 一、實驗目的實驗內容設計思路 三、實驗代碼實現四、總結 一、實驗目的 理解linux文件系統的內部技術,掌握linux與文件有關的系統調用命令,并在此基礎上建立面向隨機檢索的散列結構文件;## 二、實驗內容與設計思想 實驗內容 1.設…