快速將FastAPI接口轉為模型上下文協議(MCP)!

fastapi_mcp 是一個用于將 FastAPI 端點暴露為模型上下文協議(Model Context Protocol, MCP)工具的庫,并且支持認證功能。

環境macbook,python3.13
pip install fastapi uvicorn fastapi-mcp

代碼

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from fastapi_mcp import FastApiMCP# 定義圖書模型
class Book(BaseModel):id: inttitle: strauthor: str# 創建 FastAPI 應用
app = FastAPI()# 模擬數據庫
books_db = {}# 創建圖書
@app.post("/books/", response_model=Book)
async def create_book(book: Book):if book.id in books_db:raise HTTPException(status_code=400, detail="Book with this ID already exists")books_db[book.id] = bookreturn book# 獲取所有圖書
@app.get("/books/", response_model=list[Book])
async def get_all_books():return list(books_db.values())# 獲取單個圖書
@app.get("/books/{book_id}", response_model=Book)
async def get_book(book_id: int):book = books_db.get(book_id)if book is None:raise HTTPException(status_code=404, detail="Book not found")return book# 更新圖書
@app.put("/books/{book_id}", response_model=Book)
async def update_book(book_id: int, book: Book):if book_id not in books_db:raise HTTPException(status_code=404, detail="Book not found")book.id = book_idbooks_db[book_id] = bookreturn book# 刪除圖書
@app.delete("/books/{book_id}", status_code=204)
async def delete_book(book_id: int):if book_id not in books_db:raise HTTPException(status_code=404, detail="Book not found")del books_db[book_id]return None# 創建 FastApiMCP 實例
mcp = FastApiMCP(app)# 掛載 MCP 服務器
mcp.mount()if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)

python3 -m uvicorn main:app --reload

插入一本書

curl -X POST "http://localhost:8000/books/" -H "Content-Type: application/json" -d '{"id": 1, "title": "Python Crash Course", "author": "Eric Matthes"}'

查詢

curl -X GET "http://localhost:8000/books/" [{"id":1,"title":"Python Crash Course","author":"Eric Matthes"}]

cherry studio

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

如果啟動python時報錯ImportError

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/pydantic_core/_pydantic_core.cpython-313-darwin.so, 0x0002)

解決
python3 -m pip install pydantic --force-reinstall

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

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

相關文章

實驗數據的轉換

最近做實驗需要把x軸y軸z軸的數據處理一下,總結一下解決的方法: 源文件為兩個txt文檔,分別為x軸和y軸,如下: 最終需要達到的效果是如下: 就是需要把各個矩陣的數據整理好放在同一個txt文檔里。 步驟① …

第Y3周:yolov5s.yaml文件解讀

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 本次任務:將yolov5s網絡模型中的第4層的C3x2修改為C3x1,第6層的C3x3修改為C3x2。 首先輸出原來的網絡結構: from n pa…

Ansible安裝配置

一、前提 服務器操作系統均為centos7.9 主機ipmaster(Ansible管理端)172.25.192.2node1172.25.192.10node2172.25.192.3 更新/etc/hosts文件 二、安裝 master節點: 1. 安裝epel源 yum install -y epel-release 2. 安裝Ansible yum install -y ansible A…

MySQL中ROW_NUMBER() OVER的用法以及使用場景

使用語法 ROW_NUMBER() OVER ([PARTITION BY partition_column1, partition_column2, ...]ORDER BY sort_column1 [ASC|DESC], sort_column2 [ASC|DESC], ... )PARTITION BY:將數據按指定列分組,每組內單獨生成行號。ORDER BY:決定組內行號的…

【人工智能】釋放本地AI潛能:LM Studio用戶腳本自動化DeepSeek的實戰指南

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大型語言模型(LLM)的快速發展,DeepSeek以其高效的性能和開源特性成為開發者關注的焦點。LM Studio作為一款強大的本地AI模型管理工具…

筆試強訓:Day3

一、牛牛沖鉆五&#xff08;模擬&#xff09; 登錄—專業IT筆試面試備考平臺_牛客網 #include<iostream> using namespace std; int main(){int t,n,k;string s;cin>>t;while(t--){cin>>n>>k>>s;int ret0;//統計加了多少星for(int i0;i<n;i)…

語音識別質量的跟蹤

背景 這個項目是用來生成結構化的電子病歷的。數據的來源是醫生的錄音。中間有一大堆的處理&#xff0c;語音識別&#xff0c;關鍵字匹配&#xff0c;結構化處理&#xff0c;病歷編輯......。最多的時候給上百家醫院服務。 語音識別質量的跟蹤 一、0225醫院的訓練后的情況分…

人工智能搜索時代的SEO:關鍵趨勢與優化策略

隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;搜索引擎的運作方式正在經歷前所未有的變革。2025年&#xff0c;AI驅動的搜索&#xff08;如谷歌的AI概覽、ChatGPT搜索和必應的AI增強功能&#xff09;不僅改變了用戶獲取信息的方式&#xff0c;還為SEO從業…

Node.js心得筆記

npm init 可用npm 來調試node項目 瀏覽器中的頂級對象時window <ref *1> Object [global] { global: [Circular *1], clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Getter] }, cl…

計算機網絡01-網站數據傳輸過程

局域網&#xff1a; 覆蓋范圍小&#xff0c;自己花錢買設備&#xff0c;寬帶固定&#xff0c;自己維護&#xff0c;&#xff0c;一般長度不超過100米&#xff0c;&#xff0c;&#xff0c;帶寬也比較固定&#xff0c;&#xff0c;&#xff0c;10M&#xff0c;&#xff0c;&…

Mysql常用函數解析

字符串函數 CONCAT(str1, str2, …) 將多個字符串連接成一個字符串。 SELECT CONCAT(Hello, , World); -- 輸出: Hello World??SUBSTRING(str, start, length) 截取字符串的子串&#xff08;起始位置從1開始&#xff09;。 SELECT SUBSTRING(MySQL, 3, 2); -- 輸出: SQ…

SpringMVC 前后端數據交互 中文亂碼

ajax 前臺傳入數據&#xff0c;但是后臺接收到的數據中文亂碼 首先我們分析一下原因&#xff1a;我們調用接口的時候傳入的中文&#xff0c;是沒有亂碼的 此時我們看一下Java后臺接口對應的編碼&#xff1a; 默認情況&#xff1a;Servlet容器&#xff08;如Tomcat&#xff09;默…

loads、dumps、jsonpath使用場景

在處理JSON數據時&#xff0c;loads、dumps 和 jsonpath 是三個非常有用的工具或概念。它們各自在不同的場景下發揮作用&#xff0c;讓我們一一來看&#xff1a; 1. loads loads 函數是 Python 中 json 模塊的一部分&#xff0c;用于將 JSON 格式的字符串解析成 Python 的數據…

Java學習手冊:Spring 事務管理

一、事務管理的概念 事務是一組操作的集合&#xff0c;這些操作要么全部成功&#xff0c;要么全部失敗。事務管理的目的是保證數據的一致性和完整性。在數據庫操作中&#xff0c;事務管理尤為重要&#xff0c;例如銀行轉賬、訂單支付等場景都需要事務管理來確保數據的正確性。…

echarts自定義圖表--柱狀圖-橫向

區別于縱向表格 xAxis和yAxis對調 要將label全部固定到最右側&#xff1a; 隱藏一個柱形 為每個label設置固定的偏移距離 offset: [300 - 80, 0] 在data中加入label的配置 根據現在的值生成距離右側的偏移 更新方法 chart.setOption({series: [{},{data: data.map(v > ({v…

【CV數據集】Visdrone2019無人機目標檢測數據集(YOLO、VOC、COCO格式)

visdrone2019的Task1是非常通用的目標檢測數據集&#xff0c;也是許多人做目標檢測論文和項目必然會用到的數據集&#xff0c;我將該數據集進行了處理&#xff0c;將其YOLO、VOC和COCO格式都整理好&#xff0c;通過下載我整理好的數據集和相關文件&#xff0c;可以直接在自己的…

常見電源的解釋說明

英文縮寫 BJT&#xff08;bipolar junction transistor&#xff09;雙極型結晶體管FET&#xff08;field-effect transistor&#xff09;場效應管TTL&#xff08;Transistor-Transistor Logic&#xff09;三極管CMOS&#xff08;Complementary Metal Oxide Semiconductor&…

【2025年五一數學建模競賽】A題 解題思路與模型代碼

2025年五一數學建模競賽 A題 問題一&#xff1a;推測支路 1 和支路 2 的車流量 1.1 問題描述 根據提供的主路歷史數據以及已知的支路車流量變化趨勢&#xff08;支路1呈線性增長&#xff0c;支路2先線性增長后線性減少&#xff09;&#xff0c;推測這兩個支路在特定時間段&a…

d202551

目錄 一、175. 組合兩個表 - 力扣&#xff08;LeetCode&#xff09; 二、511. 游戲玩法分析 I - 力扣&#xff08;LeetCode&#xff09; 三、1204. 最后一個能進入巴士的人 - 力扣&#xff08;LeetCode&#xff09; 一、175. 組合兩個表 - 力扣&#xff08;LeetCode&#xf…

RISC-V AIA SPEC學習(四)

第五章 Interrupts for Machine andSupervisor Levels 核心內容?? 1.主要中斷類型與默認優先級:?? 定義了機器級別(M-level)和監管者級別(S-level)的標準中斷類型(如MEI、SEI、MTI等)。默認優先級規則:本地中斷(如軟件/定時器)優先級高于外部中斷,RAS事件(如低/高…