MCP入門

什么是mcp

mcp(model context protocol,模型上下文協議)
標準化協議:讓大模型用統一的方式來調用工具,是llm和工具之間的橋梁

A2A:Agent-to-Agent協議
在這里插入圖片描述

mcp通信機制

在這里插入圖片描述

提供mcp服務查詢的平臺

具有工具合集的平臺稱為mcp server
在這里插入圖片描述

熱門mcp服務

  • filesystem:允許訪問本地文件系統
  • mysqldb-mcp-server:與數據庫進行交互
  • amap-maps:高德地圖(api key免費額度很少)
  • firecrawl:爬蟲
  • github:和github交互(先去github設置里申請自己的token)
  • git:git操作
  • memory:記憶圖譜,長期歷史記憶
  • desktop-commander:終端命令
  • Slack:社交軟件(去https://app.slack.com/intl/zh-cn注冊并獲取自己的 team id)

注意有些配置需要先去對應平臺獲取api key

mcp兩種指令對應環境的安裝

在安裝 stdio 的本地環境時,有兩種不同的方式 。一種是基于Python語言編寫的服務,安裝它要用到 uvx 指令;另一種是基于TypeScript語言編寫的服務,安裝時得用 npx 指令 。就好比你要安裝兩個不同類型的小工具,一個工具得用A方法安裝,另一個得用B方法安裝。

基于Python——
pip install uv
uvx --version

基于TypeScript——
安裝node.js,把文件夾的路徑添加到path里
在cmd終端輸入:node -v和npm -v

cursor配置mcp服務

1、查看——外觀——輔助側邊欄,有自然語言的交互
2、案例需求(需要用到mysql,高德地圖和filesystem服務):

  1. 現在交給你一個任務,編寫一個北京一日游的出行攻略
  2. 從高德地圖的MCP服務中獲取北京站到天安門、天安門到頤和園、頤和園到南鑼鼓巷的地鐵路線,并保存在數據庫beijing_transit的表subway_trips中
  3. 從高德地圖的MCP中獲取頤和園、南鑼鼓巷附近的美食信息,每處獲取三家美食店鋪信息,并將相應的信息存入表location_foods中
  4. 在工作日錄D:\MyWorkSpace下創建一個新的文件夾,命名為“北京旅行”在其中創建兩個txt,分別從數據庫中得到兩個表的內容提取出存放進去。
  5. 從最后在兩個表的內容生成一個精美的html前端展示頁面,并存放在該目錄下

3、cursor中添加server
項目級別:在項目的.cursor目錄中新建mcp.json文件進行配置,僅對特定項目生效。(推薦)
全局設置:Settings——MCP——add new global MCP server

alt+shift+F 調整格式

cline配置mcp服務

cline可以分為plan和act兩種模式,先plan再act更精準

配置:installed-config mcp servers

mcp服務使用的注意事項:

  1. 需要自己創建好大的目錄,agent才能訪問
    比如:你要求agent“在工作目錄E:\ClineWorkSpace\test_cline下創建一個新的文件夾,命名為“北京旅行”。那你就要先自己創建好E:\ClineWorkSpace\test_cline這個目錄,否則會有系統找不到指定的路徑的問題。
  2. 連接數據庫時,要確保數據庫已經自己手動創建,mcp才能連接上,否則會出現client_close的問題。
  3. 在cline連接基于npx的mcp服務時,即使已經安裝好了nodejs,也可能出現spawn npx ENOENT的問題,這可能是因為對windows支持不太友好。
    解決辦法:
    將使用npx的命令替換為cmd(適用于 Windows 系統):如果是在 Windows 系統下,將command字段的值從npx改為cmd,并在args數組開頭添加/c,后續再跟上原來的npx命令及參數。
    "amap-maps": {"command": "npx","args": ["-y","@amap/amap-maps-mcp-server"],"env": {"AMAP_MAPS_API_KEY": "***"}}//變成下面這樣"amap-maps": {"command": "cmd","args": ["/c","npx","-y","@amap/amap-maps-mcp-server"],"env": {"AMAP_MAPS_API_KEY": "***"}}

在這里插入圖片描述

cherry studio的使用

  1. 配置模型(去硅基流動或者阿里云百煉平臺獲取api key,然后測試連接,開啟模型服務)
  2. 配置mcp服務(編輯mcp服務,把.json內容粘貼進去)
  3. 選擇回答的模型,多選mcp服務

手動開發mcp服務

在這里插入圖片描述
在這里插入圖片描述

  1. 新建項目
    在E盤終端:uv init mcp-project
    打開創建client.py和server.py,以及.env

  2. 配置.env:

BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MODEL=qwen2.5-vl-32b-instruct
DASHSCOPE_API_KEY="sk-f2466b8bdfa848c69051054f184939f6"SERPER_API_KEY="8d98f7e8a23442f6c83c3398d6283c956b727a74"SMTP_SERVER=smtp.163.com
SMTP_PORT=465
EMAIL_USER=16620017551@163.com
EMAIL_PASS=XKXbB4gT4trhqbGa

獲取幾個權限:

  • 阿里云百煉控制臺api key——大模型
  • Serper平臺api key——提供谷歌搜索(注意要谷歌郵箱注冊)
  • 163網易郵箱(開啟POP3/SMTP服務,獲得授權密碼)
    在這里插入圖片描述
  1. 運行client.py
    終端環境與 VS Code 選擇的解釋器不一致。雖然你在 VS Code 中選擇了 Python 3.12 解釋器,但終端可能仍在使用 Anaconda 的默認環境(Python 版本低于 3.10)
    python --version
    conda activate mcp_env
代碼思路
client.py:
class MCPClient:def __init__(self): # 初始化:加載環境變量,配置OpenAI(創建客戶端和會話)...async def connect_to_server(self, server_script_path: str):# 啟動服務器(判斷服務器腳本是.py還是.js的,啟動方式;構造參數;啟動服務得通道;從通道中提取讀寫對象) # 連接服務器(和服務端通道相連,創建會話)...async def process_query(self, query: str) -> str:# 從查詢中提取關鍵詞,生成要填寫的報告文件名,加入查詢中使其更新,包裝用戶消息# 請求可用的工具列表 self.session.list_tools()# 分析要用哪些工具self.plan_tool_usage(query, available_tools)# 依次調用工具self.session.call_tool(tool_name, tool_args),收集結果,將其加到messages后面messages[{"role": "user","content": "分析蘋果公司的市場表現 [md_filename=sentiment_蘋果公司_20230515_143022.md] [md_path=./sentiment_reports/sentiment_蘋果公司_20230515_143022.md]"},{"role": "tool","tool_call_id": "fetch_data","content": "已獲取蘋果公司近30天的市場數據(2023-04-15至2023-05-15)"},{"role": "tool","tool_call_id": "analyze_sentiment","content": "蘋果公司市場情緒分析結果:積極(85%),中性(10%),消極(5%)\n詳細報告已保存至 sentiment_蘋果公司_20230515_143022.md"}
]final_output='根據最近30天的市場數據(2023-04-152023-05-15),蘋果公司的市場情緒分析如下:- 積極情緒占比:85%
- 中性情緒占比:10%
- 消極情緒占比:5%整體來看,市場對蘋果公司的評價非常積極,可能反映了其產品表現、財務狀況或行業地位的優勢。詳細分析已生成報告,可查看:
[sentiment_蘋果公司_20230515_143022.md](file:///./sentiment_reports/sentiment_蘋果公司_20230515_143022.md)如需進一步分析或其他幫助,請隨時告知。'...async def plan_tool_usage(self, query: str, tools: List[dict]) -> List[dict]:# 定義llm的system_prompt為“智能任務規劃助手”# 將system_prompt和用戶消息一起包裝成新消息# 通過llm分析 query,規劃應該調用哪些工具和參數(返回 JSON 數組)response = self.client.chat.completions.create(model,messages,tools)...async def chat_loop(self):# 交互的入口,可以循環提問,process_query處理問題生成回答...async def cleanup(self):# 優雅退出 MCP 會話...async def main():client = MCPClient()await client.connect_to_server(...)await client.chat_loop()
server.py:
# 加載環境變量
load_dotenv()# 初始化 MCP 服務器
mcp = FastMCP("NewsServer")# 注冊工具:@mcp.tool() 是 MCP 框架的裝飾器,表明這是一個 MCP 工具。
# 服務端:通過裝飾器注冊工具,MCP 框架收集元數據。
# 客戶端:調用 list_tools 向服務端請求工具列表,構造為 LLM 可用的格式。@mcp.tool()
async def search_google_news(keyword: str) -> str:@mcp.tool()
async def analyze_sentiment(text: str, filename: str) -> str:@mcp.tool()
async def send_email_with_attachment(to: str, subject: str, body: str, filename: str) -> str:

分析工具使用、對新聞進行情感分析、總結都需要llm

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

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

相關文章

服務容錯治理框架resilience4jsentinel基礎應用---微服務的限流/熔斷/降級解決方案

繼續上一章未完成的sentinel; 直接實操; 關于測試:本文使用線程池線程異步執行模擬并發結合Mock框架測試 其他文章 服務容錯治理框架resilience4j&sentinel基礎應用---微服務的限流/熔斷/降級解決方案-CSDN博客 conda管理python環境-…

深入理解 C 語言中的變量作用域與鏈接性:`extern`、`static` 與全局變量

深入理解 C 語言中的變量作用域與鏈接性:extern、static 與全局變量 在 C 語言中,變量的作用域(Scope)和鏈接性(Linkage)是理解程序結構和模塊化的關鍵概念。本文將詳細探討在函數外定義的變量是否為全局變…

實驗三 軟件黑盒測試

實驗三 軟件黑盒測試使用測試界的一個古老例子---三角形問題來進行等價類劃分。輸入三個整數a、b和c分別作為三角形的三條邊,通過程序判斷由這三條邊構成的三角形類型是等邊三角形、等腰三角形、一般三角形或非三角形(不能構成一個三角形)。其中要求輸入變量&#x…

小米首個推理大模型開源——Xiaomi MiMo,為推理而戰!

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 目錄 一、MiMo的驚人表現:小參數量,大能力二、雙輪驅動&#…

《2025全球機器學習技術大會:阿里云講師張玉明深度剖析通義靈碼AI程序員》

4 月 18 日 - 19 日,由 CSDN & Boolan 聯合舉辦的 2025 全球機器學習技術大會(ML-Summit)于上海順利舉行。大會聚焦人工智能與機器學習前沿技術,匯聚了來自科技與人工智能領域的數位頂尖專家以及數千名開發者和研究者&#xf…

MySQL事務隔離級別詳解

MySQL事務隔離級別詳解 事務隔離級別概述 MySQL支持四種標準的事務隔離級別,它們定義了事務在并發環境下的可見性規則和可能出現的并發問題: READ UNCOMMITTED(讀未提交) ? 最低隔離級別 ? 事務可以讀取其他事務未提交的數據&…

計算機視覺(CV)技術的優勢和挑戰(本片為InsCode)

計算機視覺(CV)技術是一種利用計算機和算法來模擬人類視覺實現圖像和視頻處理的技術。它在各個領域都有著廣泛的應用,具有許多優勢和挑戰。 優勢: 自動化:CV 技術可以自動識別、分類、跟蹤和分析圖像和視頻數據&…

Android JIT編譯:adb shell cmd package compile選項

Android JIT編譯:adb shell cmd package compile選項 例如: adb shell cmd package compile -m speed -f --full 包名 配置參數指令說明: compile [-r COMPILATION_REASON] [-m COMPILER_FILTER] [-p PRIORITY] [-f] [--primary-dex] …

Android Kotlin 項目集成 Firebase Cloud Messaging (FCM) 全攻略

Firebase Cloud Messaging (FCM) 是 Google 提供的跨平臺消息推送解決方案。以下是在 Android Kotlin 項目中集成 FCM 的詳細步驟。 一、前期準備 1. 創建 Firebase 項目 訪問 Firebase 控制臺點擊"添加項目",按照向導創建新項目項目創建完成后&#x…

搭建PCDN大節點,服務器該怎么配

搭建P2P大節點時,服務器要怎么配呢?需要綜合考慮硬件性能、網絡帶寬、存儲能力、系統架構以及安全性等多個方面,以確保節點能夠高效、穩定地運行。 一、硬件配置 CPU:選擇高性能的多核處理器,以滿足高并發處理需求。核…

(done) 吳恩達版提示詞工程 8. 聊天機器人 (聊天格式設計,上下文內容,點餐機器人)

視頻:https://www.bilibili.com/video/BV1Z14y1Z7LJ/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 別人的筆記:https://zhuanlan.zhihu.com/p/626966526 8. 聊天機器人(Chatbot) …

AtCoder Beginner Contest 403(題解ABCDEF)

A - Odd Position Sum #1.奇數數位和 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #include<queue> #include<cstring> #include<stack> #include&l…

【Game】Powerful——Abandoned Ruins(9)

文章目錄 1、新增古玩2、機關機制3、探索法寶4、智斗強敵5、地圖6、參考 2025 年 1 月迎來的新玩法——荒廢遺跡 每周四個寶藏鏟&#xff08;老玩法&#xff09;或者兩個遺跡線索&#xff08;新玩法&#xff09;&#xff0c;3 個寶藏鏟也可以換一個遺跡線索&#xff0c;之前沒時…

構建網頁版IPFS去中心化網盤

前言&#xff1a;我把它命名為無限網盤 Unlimited network disks&#xff08;ULND&#xff09;&#xff0c;可以實現簡單的去中心化存儲&#xff0c;其實實現起來并不難&#xff0c;還是依靠強大的IPFS&#xff0c;跟著我一步一步做就可以了。 第一步&#xff1a;準備開發環境…

國標GB28181視頻平臺EasyGBS在物業視頻安防管理服務中的應用方案?

一、方案背景? 在現代物業服務中&#xff0c;高效的安全管理與便捷的服務運營至關重要。隨著科技的不斷發展&#xff0c;物業行業對智能化、集成化管理系統的需求日益增長。EasyGBS作為一款基于國標GB28181協議的視頻監控平臺&#xff0c;具備強大的視頻管理與集成能力&#…

[Unity]設置自動打包腳本

背景 我們經常會使用自動打包功能 文件名稱: AutoBuild.csusing System.IO; using System.Linq; using UnityEditor; using UnityEngine;public class AutoBuilder {[MenuItem("Build/GetCurrentBuildTarget")]public static void GetCurrentBuildTarget(){Debug.L…

正點原子STM32H743單片機實現ADC多通道檢測

目標 使用STM32CubeMX工具&#xff0c;配置ADC相關參數&#xff0c;實現在STM32H743單片機上獲取ADC多通道電壓值。共14個ADC引腳&#xff0c;ADC2有5個&#xff0c;ADC3有9個&#xff0c;全部設置單通道 ADC引腳 PF3PF4PF5PF10PC0PC2PC3PH2PH3PA3PB0PB1PA4PA5PA6 STM32cube…

深度學習基礎(四)——計算量(FLOPs)、參數量(Params)、計算速度(FLOPS/TOPS))

一、計算量FLOPs FLOPs&#xff0c;全稱為Floating Point Operations, (s為復數縮寫&#xff09;&#xff0c;浮點運算數&#xff0c;指模型完成一次前向傳播所需的浮點運算次數&#xff0c;可以理解為計算量&#xff08;模型的時間復雜度&#xff09;&#xff0c;用來衡量算法…

電子秤檢測管理系統開發實戰:從數據采集到可視化大屏

簡介 電子秤作為現代工業生產和商業流通中的核心計量設備,其準確性直接關系到產品質量和交易公平。針對仙貝生產企業的電子秤管理需求,我們開發了一套集電子秤檢測信息錄入、產品信息管理、實時稱重數據采集和后臺可視化大屏于一體的綜合管理系統。該系統基于Django框架構建…

Cesium添加WMS,WMTS,地形圖圖,3D Tiles數據

在 Cesium 中&#xff0c;你可以添加 WMS、WMTS、地形圖 和 3D Tiles 數據源。以下是詳細的實現方法&#xff1a; 1. 添加 WMS 服務 WMS&#xff08;Web Map Service&#xff09;是一種動態地圖服務&#xff0c;適用于加載柵格地圖圖層。 代碼示例 const viewer new Cesium…