簡單的mcp 服務示例

參考:https://www.bilibili.com/video/BV1nyVDzaE1x

編寫自己的tools.py

#### tools.py
from pathlib import Path
import osbase_dir = Path("./test")def read_file(name: str) -> str:"""Return file content. If not exist, return error message."""print(f"(read_file {name})")try:with open(base_dir / name, "r") as f:content = f.read()return contentexcept Exception as e:return f"An error occurred: {e}"def list_files() -> list[str]:print("(list_file)")file_list = []for item in base_dir.rglob("*"):if item.is_file():file_list.append(str(item.relative_to(base_dir)))return file_listdef rename_file(name: str, new_name: str) -> str:print(f"(rename_file {name} -> {new_name})")try:new_path = base_dir / new_nameif not str(new_path).startswith(str(base_dir)):return "Error: new_name is outside base_dir."os.makedirs(new_path.parent, exist_ok=True)os.rename(base_dir / name, new_path)return f"File '{name}' successfully renamed to '{new_name}'."except Exception as e:return f"An error occurred: {e}"def sing_a_song(name: str) -> str:print(f"Sing a song, {name}")if name:return f"Sing a song, {name}"else:return "Sing a song: love"import platform
import psutil
import subprocess
import jsondef get_host_info() -> str:"""get host informationReturns:str: the host information in JSON string"""info: dict[str, str] = {"system": platform.system(),"release": platform.release(),"machine": platform.machine(),"processor": platform.processor(),"memory_gb": str(round(psutil.virtual_memory().total / (1024 ** 3), 2)),}cpu_count = psutil.cpu_count(logical=True)if cpu_count is None:info["cpu_count"] = "-1"else:info["cpu_count"] = str(cpu_count)try:cpu_model = subprocess.check_output(["sysctl", "-n", "machdep.cpu.brand_string"]).decode().strip()info["cpu_model"] = cpu_modelexcept Exception:info["cpu_model"] = "Unknown"return json.dumps(info, indent=4)

mcp 服務 mcp_test.py

# main.py
from mcp.server.fastmcp import FastMCP
import toolsmcp = FastMCP("host info mcp")
mcp.add_tool(tools.get_host_info)
mcp.add_tool(tools.rename_file)
mcp.add_tool(tools.read_file)
mcp.add_tool(tools.sing_a_song)
mcp.add_tool(tools.list_files)@mcp.tool()
def foo():return ""def main():mcp.run("stdio")  # scp 和agent在同一機器# mcp.run("sse")  # http調用if __name__ == "__main__":main()

cursor配置mcp服務

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
我本地是這么運行的:

C:\Users\admin\miniconda3\envs\king\python.exe D:\bing\Work\Code\Pura\king\mcp_test.py 

所以我的mcp.json文件這么寫:

{"mcpServers": {"hostInfoMcp": {"command": "C:\\Users\\admin\\miniconda3\\envs\\king\\python.exe","args": ["D:\\bing\\Work\\Code\\Pura\\king\\mcp_test.py"]}}
}

測試

在這里插入圖片描述
簡單的mcp就完成了

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

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

相關文章

DeepSeek-R1+豆包迭代一次完成中國象棋游戲

DeepSeeek- R1生成的棋盤符合中國象棋風&#xff0c;單獨豆包無法畫好象棋棋盤。提示詞&#xff1a;使用html實現中國象棋游戲&#xff0c;要求支持人機對弈。等等&#xff0c;你需要實現完整版本。代碼如下&#xff08;電腦走棋不對&#xff09;&#xff1a;<!DOCTYPE html…

阿里通義千問Qwen3深夜升級:架構革新+性能碾壓

&#xff08;以下借助 DeepSeek-R1 & Grok3 輔助整理&#xff09; 北京時間2025年7月22日凌晨&#xff0c;阿里云通義千問團隊發布了Qwen3旗艦模型的最新更新——Qwen3-235B-A22B-Instruct-2507-FP8。這一更新不僅在性能上實現了突破&#xff0c;還標志著開源大模型技術架…

pip關于緩存的用法

pip cache info查看 pip 緩存的大小&#xff0c;運行示例 Package index page cache location (pip v23.3): c:\users\xxx\appdata\local\pip\cache\http-v2 Package index page cache location (older pips): c:\users\xxx\appdata\local\pip\cache\http Package index page c…

嵌入式學習-(李宏毅)機器學習(2)-day29

十五個作業不同類型的Functions兩大類任務一個是Regression&#xff08;回歸&#xff09; 一個是 Classification&#xff08;分類&#xff09;一個是給出一個數值&#xff0c;一個是從類別中選擇一個還有一類任務 Structured Learning 機器要學會創造文件 機器學習預測頻道第…

【C++11】哈希表與無序容器:從概念到應用

文章目錄一、前言二、哈希表&#xff08;Hash Table&#xff09;1. 基本概念2. 哈希函數3. 沖突解決方法鏈地址法&#xff08;Separate Chaining&#xff09;開放尋址法&#xff08;Open Addressing&#xff09;4. 性能分析5. 動態擴容6. 應用場景7. 優缺點二. 無序容器的介紹1…

【智能大數據分析 | 實驗二】Spark實驗:部署Spark集群

【作者主頁】Francek Chen 【專欄介紹】???智能大數據分析??? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘&#xff0c;以提取有價值的信息和洞察。它結合了大數據技術、人工智能&#xff08;AI&#xff09;、機器學習&#xff08;ML&#xf…

使用pymongo進行MongoDB的回收

在 PyMongo 中使用 compact 命令進行 MongoDB 碎片回收的完整操作指南如下&#xff1a; 一、核心執行方法 from pymongo import MongoClient import time# 1. 連接到 MongoDB 實例 client MongoClient("mongodb://username:passwordhost:27017/dbname?authSourceadmin&q…

Azure DevOps 使用服務主體配置自托管代理 (Self-hosted Agent) 配置指南

Azure DevOps 使用服務主體配置自托管代理配置指南1. 概述2. 在 Azure AD 中創建服務主體 (SP)3. 授予 Azure DevOps 權限3.1. 組織層級&#xff1a;用戶身份與訪問級別3.2. 組織層級&#xff1a;Agent pools管理員3.3. 在 Linux VM 上安裝和配置代理3.4. 啟動并設置為系統服務…

Java學習第六十四部分——Nginx

目錄 一、前言提要 二、核心特點 三、核心作用 四、架構優勢 五、應用場景 六、常用命令 七、性能對比——Nginx vs Apache 八、典型用戶 九、配置示例 十、Java應用需配合的配置 十一、性能優化策略 十二、常見問題排查 十三、文件結構配置 十四、總結歸納概述 …

幾個常用的Oxygen編輯器插件

Oxygen XML Editor是羅馬尼亞的SyncroSoft公司開發的結構化文檔編輯和發布軟件。 除了Oxygen編輯器帶的功能&#xff0c;它還提供了豐富的插件來提供額外的功能來輔助資料開發人員更高效率、更低成本地開發結構化資料。 本文介紹幾個比較常用和有用的插件。 - 1 - Git Clie…

基于springboot的軟件缺陷管理跟蹤平臺

博主介紹&#xff1a;java高級開發&#xff0c;從事互聯網行業六年&#xff0c;熟悉各種主流語言&#xff0c;精通java、python、php、爬蟲、web開發&#xff0c;已經做了六年的畢業設計程序開發&#xff0c;開發過上千套畢業設計程序&#xff0c;沒有什么華麗的語言&#xff0…

【LINUX】Centos 9使用nmcli更改IP

1. 查看連接名稱 nmcli connection show輸出類似&#xff1a; NAME UUID TYPE DEVICE Wired connection 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet enp1s02. 修改 IP 地址&#xff08;以靜態 IP 為例&#xf…

ConvMixer模型:純卷積為何能夠媲美Transformer架構?深入淺出原理與Pytorch代碼逐行講解實現

ConvMixer 是一個簡潔的視覺模型&#xff0c;僅使用標準的卷積層&#xff0c;達到與基于自注意力機制的視覺 Transformer&#xff08;ViT&#xff09;相似的性能&#xff0c;由此證明純卷積架構依然很強大。核心原理&#xff1a;極簡的卷積設計&#xff1a;它摒棄了復雜的自注意…

教程:如何通過代理服務在國內高效使用 Claude API 并集成到 VSCode

對于許多開發者來說&#xff0c;直接訪問 Anthropic 的 Claude API 存在網絡障礙。本文將介紹一個第三方代理服務&#xff0c;幫助你穩定、高效地利用 Claude 的強大能力&#xff0c;并將其無縫集成到你的開發工作流中。 一、服務介紹 我們使用的是 open.xiaojingai.com 這個…

從零開始:Vue 3 + TypeScript 項目創建全記錄

一次完整的現代前端項目搭建經歷,踩坑與收獲并存 ?? 前言 最近創建了一個新的 Vue 3 項目,整個過程中遇到了不少有趣的選擇和決策點。作為一個技術復盤,我想把這次經歷分享出來,希望能幫助到其他開發者,特別是那些剛接觸 Vue 3 生態的朋友們。 ??? 項目初始化:選擇…

[spring6: @EnableWebSocket]-源碼解析

注解 EnableWebSocket Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Documented Import(DelegatingWebSocketConfiguration.class) public interface EnableWebSocket {}DelegatingWebSocketConfiguration Configuration(proxyBeanMethods false) public …

Nacos 封裝與 Docker 部署實踐

Nacos 封裝與 Docker 部署指南 0 準備工作 核心概念? 命名空間&#xff1a;用于隔離不同環境&#xff08;如 dev、test、prod&#xff09;或業務線&#xff0c;默認命名空間為public。? 數據 ID&#xff1a;配置集的唯一標識&#xff0c;命名規則推薦為{服務名}-{profile}.{擴…

Vue2——4

組件的樣式沖突 scoped默認情況&#xff1a;寫在組件中的樣式會 全局生效 → 因此很容易造成多個組件之間的樣式沖突問題。1. 全局樣式: 默認組件中的樣式會作用到全局2. 局部樣式: 可以給組件加上 scoped 屬性, 可以讓樣式只作用于當前組件原理&#xff1a;當前組件內標簽都被…

30天打好數模基礎-邏輯回歸講解

案例代碼實現一、代碼說明本案例針對信用卡欺詐檢測二分類問題&#xff0c;完整實現邏輯回歸的數據生成→預處理→模型訓練→評估→閾值調整→決策邊界可視化流程。數據生成&#xff1a;模擬1000條交易數據&#xff0c;其中欺詐樣本占20%&#xff08;類不平衡&#xff09;&…

CDH yarn 重啟后RM兩個備

yarn rmadmin -transitionToActive --forcemanual rm1 cd /opt/cloudera/parcels/CDH/lib/zookeeper/bin/ ./zkCli.sh -server IT-CDH-Node01:2181 查看是否存在殘留的ActiveBreadCrumb節點 ls /yarn-leader-election/yarnRM #若輸出只有[ActiveBreadCrumb]&#xff08;正常應…