mcp學習
預算:5塊(半頓拼好飯嗚嗚嗚)
出問題試著開啟或者關閉代理。
文章目錄
- mcp學習
- 1. 基本原理
- 2. 環境配置
- 1. cherryStudio+deepseek+python
- 2. Cline+deepseek
- 3. 常用mcp服務
- 1. mcp-server-fetch
- 2. mcp-playwright
- 3. baidu-map
- 4. filesystem
- 5. mcp-mysql-server
- 參考
1. 基本原理
Model Context Protocol(MCP)模型上下文協議。簡單來說mcp就是大模型的標準工具箱,大模型可以利用這些工具與外界互動。
本質就是客戶端用命令行調用了node.js程序,然后程序又執行了某些操作,再把結果返回回來。
2. 環境配置
1. cherryStudio+deepseek+python
uv下載
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
把C:\Users\21609\Desktop\code\mcp_server目錄初始化成python 3.13項目
uv python list
C:\Users\21609\Desktop\code\mcp_server>uv init . -p 3.13
uv add "mcp[cli]"
vscode打開項目,需要下載python和python debugger插件
main.py
"""
FastMCP quickstart example.cd to the `examples/snippets/clients` directory and run:uv run server fastmcp_quickstart stdio
"""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""" #注釋必寫,告訴ai大模型這是個加法函數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}!"# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:"""Generate a greeting prompt"""styles = {"friendly": "Please write a warm, friendly greeting","formal": "Please write a formal, professional greeting","casual": "Please write a casual, relaxed greeting",}return f"{styles.get(style, styles['friendly'])} for someone named {name}."# Run the server
if __name__ == "__main__":mcp.run(transport="stdio")
下載 Cherry Studio - 多平臺AI客戶端:https://www.cherry-ai.com/download
只有支持函數調用的模型才能在cherryStudio里面使用mcp,我們使用deepseek v3模型
來到deepseek的api開放平臺,創建一個api key,然后充5塊錢。
https://platform.deepseek.com/sign_up
在cherryStudio里填一下密鑰
來到cherryStudio的設置發現我們缺少東西沒安裝
在C:\Users\21609.cherrystudio文件夾下新建bin文件夾
去到github上面下載以下兩個文件
bun-windows-x64.zip
uv-x86_64-pc-windows-msvc.zip
將其中的可執行文件復制到C:\Users\21609.cherrystudio\bin下
添加服務器->快速創建
命令寫uv,參數照著下面寫,然后保存并啟用
--directory
C:\Users\21609\Desktop\code\mcp_server
run
main.py
來到首頁助手,點擊添加mcp服務器,點擊deepseek切換為deepseek chat而不是硅基流動的。
成功
或者可以用sse協議,修改main.py
# Run the server
if __name__ == "__main__":mcp.run(transport="sse")
vscode點擊啟動服務端
新建一個mcp服務器
更換mcp服務器來試試
ai客戶端使用sse協議調用函數并得到結果。
或者使用streamable-http,然后啟動。
注意如果deepseek調用失敗,需要先把其他mcp服務器關了。
# Run the server
if __name__ == "__main__":mcp.run(transport="streamable-http")
2. Cline+deepseek
vscode下載插件 cline
get started for free
點擊右上角的設置進行配置,模型使用deepseek
查看之前cherryStudio的配置
點擊添加遠程服務器
我們需要手動添加type類型
{"mcpServers": {"test1": {"url": "http://127.0.0.1:8000/mcp","disabled": false,"autoApprove": [],"type": "streamableHttp"}}
}
使用mcp服務器
成功!
3. 常用mcp服務
1. mcp-server-fetch
該服務器使 LLM 能夠檢索和處理網頁內容,并將 HTML 轉換為 Markdown 格式,以便于使用。
pip install mcp-server-fetch
配置一下
{"mcpServers": {"test1": {"url": "http://127.0.0.1:8000/mcp","disabled": false,"autoApprove": [],"type": "streamableHttp"},"fetch":{"command":"python","args":["-m","mcp_server_fetch"],"disabled": false}}
}
獲取https://aistudio.baidu.com/projectdetail/1986744的內容并幫我總結
可以看到由于js動態加載,它并沒有爬取完全。
2. mcp-playwright
一個使用 Playwright 提供瀏覽器自動化功能的模型上下文協議 (MLM) 服務器。該服務器使 LLM 能夠與網頁交互、截取屏幕截圖、生成測試代碼、從網頁中提取網頁數據,并在真實的瀏覽器環境中執行 JavaScript。
訪問https://github.com/punkpeye/awesome-mcp-servers
選擇這個https://github.com/executeautomation/mcp-playwright
先下載模塊
npm install -g @executeautomation/playwright-mcp-server
然后配置一下,注意關閉fetch
"playwright": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args": ["/c","npx","-y","@executeautomation/playwright-mcp-server"],"type": "stdio"}
幫我打開https://www.github.com/login,輸入用戶名admin,密碼123456
3. baidu-map
百度地圖
https://lbsyun.baidu.com/apiconsole/quota
創建服務器端應用,會給出一個api key。
npm install @baidumap/mcp-server-baidu-map
"baidu-map": {"command": "npx","args": ["-y","@baidumap/mcp-server-baidu-map"],"env": {"BAIDU_MAP_API_KEY": "<YOUR_API_KEY>"}
}
我想周末去北京,幫我規劃一下旅游路線
4. filesystem
該mcp服務并不能處理docx等文件,可以使用cherryStudio搭建本地知識庫。
實現本地文件訪問
https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem
npm install @modelcontextprotocol/server-filesystem
參考配置格式
{"mcpServers": {"filesystem": {"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","/Users/username/Desktop","/path/to/other/allowed/dir"]}}
}
實際的格式
"filesystem": {"command": "cmd","args": ["/c","npx","-y","@modelcontextprotocol/server-filesystem","/Users/21609/Desktop","C:\\Users\\21609\\Desktop\\test\\啦啦啦"],"autoApprove": ["list_directory","read_text_file"]
}
C:\Users\21609\Desktop\test\啦啦啦文件夾下有什么文件
5. mcp-mysql-server
檢索增強生成(RAG,Retrieval-Augmented Generation)是一種結合信息檢索和生成式AI的技術框架。其核心流程是:先通過檢索系統從外部知識庫中查找相關信息,然后將檢索結果與用戶查詢一起輸入生成模型,從而產生更準確可靠的回答。
RAG的主要缺點:
- 檢索質量依賴性強:效果高度依賴檢索系統質量,檢索錯誤會導致生成錯誤
- 知識更新延遲:需要定期更新知識庫,無法實時獲取最新信息
- 上下文長度限制:檢索文檔可能過長,受限于模型的上下文窗口
- 多跳推理困難:復雜問題需要整合多個文檔,RAG處理能力有限
- 計算成本較高:同時運行檢索和生成系統,資源消耗大
- 幻覺問題依然存在:生成模型仍可能產生不準確推斷
MCP+數據庫的解決方案:
MCP(Model Context Protocol)+ 數據庫可以部分解決RAG的缺點:
實時數據訪問:通過數據庫連接實現實時信息獲取,解決更新延遲
精確查詢能力:結構化查詢比向量檢索更準確,提高檢索質量
智能上下文管理:MCP可以動態選擇最相關的數據庫信息
降低計算成本:數據庫查詢比向量檢索更高效
減少幻覺風險:直接從可信數據源獲取信息
局限性:
- 需要高質量結構化數據
- 非結構化文本處理能力有限
- 數據庫維護成本較高
- 無法完全替代語義相似性檢索
操作mysql
https://github.com/f4ww4z/mcp-mysql-server
npm install @f4ww4z/mcp-mysql-server
"mysql": {"command": "cmd","args": ["/c","npx","-y","@f4ww4z/mcp-mysql-server","mysql://root:123456@localhost:3306/sakila"],"autoApprove": ["connect_db","list_tables"]
}
sakila數據庫里面有那些表
參考
【從零編寫MCP并發布上線,超簡單!手把手教程】 https://www.bilibili.com/video/BV1RNTtzMENj/
【【Cline+MCP】王炸組合!告別手動!MCP 自動化工作流,AI 編碼更高效!】 https://www.bilibili.com/video/BV1gKZhYWEnK
UV安裝:https://docs.astral.sh/uv/getting-started/installation/
MCP Github首頁:https://github.com/modelcontextprotocol
MCP Python SKD: https://github.com/modelcontextprotocol/python-sdk
Awesome MCP: https://github.com/punkpeye/awesome-mcp-servers
專題網站: https://smithery.ai/
CherryStudio: https://cherry-ai.com/download
CherryStudioMCP配置文檔: https://docs.cherry-ai.com/advanced-basic/mcp
https://openrouter.ai/
https://github.com/modelcontextprotocol/servers