魔搭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.寻找更多文案