魔搭MCP &Agent賽事(MCP Server開發)/夏令營:動手開發MCP Server學習鏈接:魔搭MCP &Agent賽事(MCP Server開發) - Datawhale
Task1回顧
1.task1應用功能
luner_info每日黃歷
這是一個可以獲取某天黃歷情況的MCP,你可以輸入空或日期獲取當日或某日的黃歷。日期格式形如:1991年1月1日或1991-01-01。
獲取得到的回答如下:
日期 : 2025-07-01 00:00:00 農歷 : 二零二五 乙巳[蛇]年 六月大初七 星期 : 星期二 八字 : 乙巳 壬午 辛未 戊子 今日節氣: 無 下一節氣: ('小暑', (7, 7), 2025) 季節 : 仲夏 生肖沖煞: 羊日沖牛 星座 : 巨蟹座 吉神方位: ['喜神西南', '財神正東', '福神西北', '陽貴東北', '陰貴正南'] 宜 : ['祭祀', '出行', '宴會', '沐浴', '剃頭', '修造', '上表章', '上官', '進人口', '豎柱上梁', '經絡', '納財', '掃舍宇', '栽種', '牧養', '破土', '安葬', '祈福', '恤孤煢', '舉正直', '裁制', '納采', '搬移', '招賢', '宣政事', '覃恩', '施恩', '安撫邊境', '解除', '求嗣', '整手足甲', '慶賜', '修倉庫', '立券交易', '選將', '營建', '上冊', '出師', '臨政', '納畜', '繕城郭', '整容', '頒詔', '雪冤'] 忌 : ['畋獵', '取魚']
2.MCP上傳流程
在task1進行對lunar_info黃歷應用進行復刻后,了解了在魔搭上搭建MCP的過程。
1.創建一個創空間,上傳應用代碼
2.通過API使用,點擊MCP,將sse鏈接和npx的安裝鏈接保存好備用
3.在MCP Inspector · 創空間這個測試界面進行測試,使用sse方式連接。連接成功才能往后正常使用
4.MCP 詳情 · 魔搭社區在這個鏈接進行MCP服務的部署,交給魔搭平臺托管
如果需要參賽,中文名稱中一定要帶上“MCP&Agent挑戰賽”,才算參賽~
(1)選擇自定義創建
(2)來源地址輸入自己創空間的網址
(3)托管類型選擇可托管部署
(4)將npx的鏈接粘貼至服務配置區域
(5)自行補充其他未填入的內容
5.獲取SSE URL連接服務,復制臨時鏈接,到MCP Playground的配置區域,全選替換,自己的MCP就添加成功了。
回到試驗場窗口,進行試用,看是否正確調起了自己的mcp工具,效果如何
MCP Playground:MCP Playground · 創空間
MCP 開發要點
1.什么是MCP?
MCP協議是AI時代的“HTTP協議”: 就像互聯網上的HTTP協議統一了網頁的訪問方式一樣,MCP旨在成為AI世界的基礎通信協議。MCP Server 就是 ”AI互聯網“ 上的一個“網站”,給AI提供特定的服務。
2.為什么推薦用Gradio來搭建MCP Server?
目前搭建mcp server的方法有很多,可以直接使用Python的mcp庫
或者fastmcp庫
,搭建mcp服務后本地調用。
如果需要部署到云,目前可以部署到pipy平臺或者云服務器上。
但是在pipy平臺由于網絡問題,不方便國內用戶直接使用。
部署在云上可以在自有云或托管云平臺,自有云上會面臨網絡配置等問題,對于新手也不太友好。
有些小伙伴甚至沒有自己的云服務器。所以我們推薦把目標放在托管云平臺。
使用gradio快速搭建MCP服務,既解決了MCP云服務平臺的問題,整體的搭建也不是很復雜,代碼量少而且很好玩,大家可以在20分鐘快速搞定一個自己的mcp。
3.MCP 開發要點
-
明確輸入輸出: 這是MCP Server設計的核心。你的函數需要清晰地定義接受什么參數(輸入)和返回什么結果(輸出)。例如,黃歷查詢的輸入是一個日期字符串,輸出是黃歷信息字符串。
-
準確的MCP聲明(Docstring): 函數的Docstring必須準確、完整地描述其功能、參數類型、描述和返回值。大模型會依賴這些信息來理解和調用你的工具,如果聲明不準確,大模型可能無法正確調用。
-
功能實現: 編寫實際的Python代碼來實現MCP Server的核心邏輯。這可能涉及調用第三方API(使用
requests
庫)、進行數據處理(使用pandas
庫)、或執行特定計算。 -
異常處理: 考慮各種可能出現的異常情況(如無效輸入、網絡請求失敗、API調用錯誤),并使用
try-except
塊進行適當的錯誤處理,以提高MCP Server的穩定性和魯棒性。 -
依賴管理: 確保你的
requirements.txt
文件包含了所有必要的Python庫(例如gradio
,requests
等),以便在魔搭創空間部署時能夠正確安裝。
Task2 過程
1.選題
初步設定為:瘋狂星期四文案生成器
(1)選題原因:
與lunar_info的用法是比較相似的,在示例代碼上直接進行修改即可:
lunar_info:
輸入:一個日期輸出:固定格式的,與輸入日期相關的答案
瘋狂星期四:
輸入:待設計輸出:返回一段瘋狂星期四文案
(2)大模型目前生成的這類型的文案沒有那味。可能需要一個非常好的提示詞才能有效果。
prompt:給我寫一個瘋狂星期四的文案
deepseek
那年我18歲,第一次進城打工。在工地扛水泥,一袋50斤,一天扛200袋。老板說干滿一個月給3000塊。我咬著牙干,手上磨得全是血泡,夜里疼得睡不著。月底去要錢,工頭卻卷款跑了。
我蹲在霓虹閃爍的街頭,兜里只剩3個鋼镚。手機欠費,聯系不上家里。餓得眼前發黑時,聞到一陣香味……是街角肯德基!金黃酥脆的炸雞,滋滋冒油。我扒著玻璃窗看別人大快朵頤,口水混著眼淚往下掉。
突然有人拍拍我肩,是個穿西裝的大哥。他塞給我一張50元鈔票:“小兄弟,吃頓飽飯吧。” 我攥著錢沖進店里,卻看到海報上寫著——
🔥瘋狂星期四🔥 原味雞+黃金脆皮雞+薯條+可樂= 29.9元!
我捏著皺巴巴的50塊愣在原地,淚水再次決堤…
所以今天,誰請我吃?V我50,我替你傳遞這份愛。
豆包
🔥肯德基瘋四警報拉響!🔥?
今日份快樂已炸至金黃 ——?
香辣雞翅買一送一還冒熱氣?
脆皮炸雞啃到指尖流油才夠本?
冰闊落噸噸灌進喉嚨的瞬間?
所有煩惱都被酥脆咔嚓聲碾碎?
?倒計時 8 小時清空庫存?
錯過今天??
你的胃要等整整 7 天才能再撒野?
現在沖門店 / 戳小程序?
讓炸雞的香氣替你宣告:?
星期四,就該對自己好一點!?
#瘋四文學照進現實 #不吃炸雞會瘋
2.開發過程
去網上尋找一些瘋狂星期四的文案,經過處理,轉換為json格式。
利用AI編程軟件,告知MCP聲明,讓他根據json文件,幫我寫代碼。
MCP聲明(Docstring)
"""
Get a random Crazy Thursday reference and suggestions from the JSON file.
? ? Args:
? ? ? ? category: The category to select from. Options: "隨機"
? ? Returns:
? ? ? ? A formatted string with reference text and modification suggestions
? ? """
內部代碼邏輯是基本一致的
3.遇到的問題與解決
代碼寫完上傳至創空間,發現創空間可用,但是測試mcp服務時顯示未連接。
然后再比對baseline,懷疑多了這個json文件可能是出錯的原因。(暫未弄清楚具體是啥原因)
將json直接寫進app.py,成為app_2.py,再次上傳,解決問題,可以正常使用。
后續該做什么
1.優化?MCP聲明(Docstring)
2.設計更合理的功能,不要光有隨機召回這么一回事,并做好異常情況
3.尋找更多文案