MCP教程

前言 想法总览 这一篇会是一篇mcp的教程文档,但是在此之前我想要先介绍一下为什么我想要去做这篇文档,以及为什么我会去学mcp。 这些天我在刷牙的时候想,这个时候其实我是不方便去用手机打字的,假设我可以说几句话,然后手机就自动帮我执行了这个操作(例如记录到xx位置)该有多好。同样的意思还在我睡觉的时候突然想到什么事情经常出现——我忽然想到一个idea,最好它自动就可以把它加到我的一个待办清单里面去了。那么,我就花了一天时间真实地去做mcp这件事情,很快就掌握了。 实际上,像智谱这种大厂,现在就在做类似的事情(我同学在这个部门实习负责该业务,adb控制美团购买瑞幸咖啡)。我们可以把它理解为一个大号的siri,我对着它发号指令,它自动地去完成手机上操作的各种事情。在后续的章节中我会介绍不同场景和任务的技术难度,此处抛开不谈。但无疑,作为一个大号的Siri,它的竞争压力和大厂应该是直接竞争的,因为现在这些大模型厂商,肉眼可见的他们的趋势全是在往这上面去走。此前我在深圳的黑客松上做了一款产品(语音控制写入飞书,录音写入飞书,未来可以作为语音控制飞书实现各种操作功能),它和大模型厂商所不同的方案是多了一个硬件去做这种MCP的交互,它可以作为一些手机不想去使用的一些场景之下(例如你睡觉的时候,手机不想放在手边)。硬件天然具有一定的护城河,并且市场也不会像大号siri这么大,任务难度上因为场景的数量和复杂度的限制也会有非常大的减弱;所以我认为会有一定优势。 但是无论如何,我觉得这一系列以mcp为代表的任务一定是有巨大的一个前景的,只是我们受限于能力、资源,我们需要找好一个具体的、单独的场景和任务去切。并且我想,肉眼可见,如果你现在不做,那么未来其他人就会很快就会去做,它是时间不等人的一件事情。 和其他人聊天的一点补充 对于安卓的开发是常见的,关注ios封闭系统如何操作。 plaude note最新和notion合作开发的:plaude note接入notion。anyway,我自己该买一个山寨plaude了。 语音交互是下一个重要的交互形式,但随着计算和数据能力增强,视频交互可能最终会占据主导地位。同时,落地应用场景的选择也很关键,AR眼镜等硬件将结合语音和操纵功能推动交互方式的发展。 大模型在白领领域如文字判断等工作中的替代机会较大,但真正的巨大市场可能集中在制造业、服务业、养老业等蓝领领域。 plaude在获取用户数据上具有先发优势,它在用户使用过程中积累了大量互联网之外的线下高质量数据,这在未来具有巨大的价值潜力,比如能够更好地理解并满足用户的个性化风格和需求。(根据大量数据训练模型对于用户个人习惯、风格的提取)。这个市场空间非常大,而plaude通过这样一个c端产品已经具有了先发优势和天然壁垒。这种通过切入工作流并获取大量的非互联网信息,这些数据将随着时间升值,成为公司的重要资产。同时,解决实际工作问题还能带来现金流,进一步增强公司的数据积累能力。(躺着赚钱) “我们目前面临的主要问题是销售渠道的选择,而非产品或技术问题。我们在考虑通过工会、参加展会还是线上视频等不同方式来寻找最有效的销售渠道。”“我打算亲自去当地体验当地养老行业,包括从事一段时间的护工工作,直接与老人交流,以期能更好地理解并找到适合的场景。同时,考虑到智能手机对很多老年人不友好,我们可能需要探索硬件交互或语音交互的方式来满足他们的需求。” 一些针对老年人的产品和服务,如定期电话沟通并将对话内容转写为故事书,以及为老年人提供精神需求满足(如读圣经)的电话服务。一款名为Whisper Flow的软件,它允许用户通过语音指令代替键盘操作电脑,大大提高了工作效率。 随着人们对便捷性和简单化流程的需求增加,类似语音助手这类能够简化复杂流程、提高效率的科技将在很多场景中发挥重要作用。例如我马上有一个会我文档还什么都没写,要是有一个语音控制agent调用各种agent帮我完成各种任务最终写好文档就好了。 任务难度 如果只是我本仓库中的高德的任务是相对简单的。因为用户的输入本质上大概只可能是“我想要从a到b,…”,大模型去提取处理这些关键词和函数匹配,这种映射关系是简单的。那例如说我现在。想在飞书上面去干一件事情,我要跟他描述一大堆。然后他要从这一大堆语句里面去提取出来,这样的一个你想要执行的动作(函数),以及你所要干的内容(参数)。这其实是挺困难的,我忽然想到,因为飞书里面涉及的东西实在是太多了。 本次仓库我将从最简单的调用高德api规划路径开始,在未来一点一点地增加任务的难度量级和实用性。 mcp参考学习仓库 本仓库实现了用户输入查询从a地点到b地点怎么走,ai调用高德地图路径规划api给出指引。 以下教程务必详见我的仓库地址(一定要对着代码看):仓库,使用方法如下: bash 1. #配置api key 2. python main.py #启动后端服务器 3. #发送指令到后端服务器,命令行输入: $body = '{"user_input": "从北京天安门到上海外滩怎么走"}' $response = Invoke-RestMethod -Uri "http://localhost:8000/chat" -Method Post -ContentType "application/json; charset=utf-8" -Body $body $response | ConvertTo-Json -Depth 10 未来规划 本仓库未来的规划是:mcp可以通过adb打开高德地图,然后帮我去查询这两个路线信息,能够直接打开手机和APP结合在一起。以及本仓库的所有内容会作为学习文档和视频教程公开。 关于飞书的规划是:飞书上面应该是我输入一大串这样的一个文字,一部分被提取关键词为我想要的函数,另一部分被提取为我的内容。那么这样的话就是执行函数或这部分内容。再写到分书里面,或者在创建文档等等,就会是一个比较复杂的一个工作,最多也就只能完成一个小的一个函数。 关于抖音黑客松:可能是输入博主名,爬虫打开抖音,然后可以关注某个博主。 参考学习资料 10分钟科普 【10分钟讲清楚 Prompt, Agent, MCP 是什么 各种提示词 user prompt,用户发送的信息(gpt聊天框) system prompt,AI嵌入的人设,相当于每一次发送user prompt,AI会自动加入system prompt 通常gpt等很少可以在网站上直接修改system prompt(少量可以),大部分都是开发者去设定 但无论是什么提示词,归根到底还是AI去回答问题,它没有办法帮你做事。 本质上程序如何去帮你执行、”做事“ 例如我们现在希望用代码去完成12306买票的功能,本质上是我们写了一段爬虫代码,通过html语句xxx 例如我们现在希望获取杭州到南京的路程信息,我们使用代码程序调用高德地图api的接口, 让我们去模拟一遍整个mcp架构下任务工作的流程 前端:发送用户问题(自然语言)→ 通过通信协议传递给后端 后端1:后端定义有一个tools类,类里面有多个函数,每个函数对应一个工具/功能,即代表可以完成一个任务(如高德打车、美团点外卖等)。在tools类里不会具体的去写这个函数,而是对其进行描述,让人知道里面的每个函数是在干什么。 bash # 工具描述(OpenAI格式) TOOLS = [ { "name": "query_route", "description": "查询两地之间的驾车路径信息", "parameters": { "type": "object", "properties": { "origin": {"type": "string", "description": "起点地址或坐标,如'北京西站'或'116.32,39.9'"}, "destination": {"type": "string", "description": "终点地址或坐标"}, "city": {"type": "string", "description": "城市名(可选)"} }, "required": ["origin", "destination"] } } ] 后端2:后端会单独有一个文件,用于具体地写函数的代码,用于被调用执行功能。 bash def query_route( self, origin: str, destination: str, city: str = None ) -> Dict[str, Union[str, float]]: """ 查询驾车路径信息 :param origin: 起点(地址或坐标,如"北京西站"或"116.32,39.9") :param destination: 终点(格式同起点) :param city: 城市名(可选,提高地址解析精度) :return: 结构化路径信息 """ base_url = "https://restapi.amap.com/v3/direction/driving" params = { "key": self.api_key, "origin": origin, "destination": destination, "extensions": "base", "output": "json", "city": city or "" } 2和3统称为mcp。每次当前端的问题进来,模型会尝试理解这是什么(根据用户输入的关键词和上下文),如果它认为这和我们tools里面定义的东西有关(description 和 parameters),那么它会返回一个与该函数有关的变量。if变量.name=函数名,则调用对应的函数。 bash # 调用大模型生成工具调用指令 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": user_input}], tools=TOOLS, tool_choice="auto" ) message = response.choices[0].message # 处理工具调用 if hasattr(message, "tool_calls"): tool_call = message.tool_calls[0] if tool_call.function.name == "query_route": args = json.loads(tool_call.function.arguments) result = amap_tool.query_route(**args) return {"result": result} 至此,整个过程完毕。总结:用户通过前端输入进来,大模型根据用户的输入和我们已经注册好的tools变量判断应该使用哪个mcp工具(大模型会输出一个函数名结果给变量,if变量名=xx则执行xx函数)。如果你仍然没有理解,我个人认为是tools这里没有理解,可以再去问gpt。 为什么模型可以根据tools完成这个功能(例如限制回复的格式)——tools本身和模型的训练 这在训练阶段体现为输入大量“自然语言问题→工具调用指令返回格式”的配对数据,例如: ...

August 15, 2025 · 2 min · 281 words · Me

为什么创业者总喜欢端着

"你有没有发现,当你真诚地在键盘上敲下你的感想、规划或者是一段自我介绍。回应你的只有寥寥数语,或者一句“waw”。 " — 前言 我想谈一个长久被创圈忽视甚至习惯的话题,“为什么创业者总喜欢端着”。 我的创业 我接触科技创业的时间并不长,大概是从25年一月份的宁波Xbotpark基地开始的;在那之后的二月我又去了深圳科创学院。在此之前我对于创业几乎一无所知——我不知道什么是“preA“什么是融资,什么是黑客松,奇绩创坛又是什么…巧的是我从深圳回来没多久我真的去奇绩创坛了,在2025的春季路演日。 但坦率的说,从奇绩回来那几天我感觉我有些飘了。 我开始疯狂地给自己贴标签,并且开始这也看不上那也看不上,满脑子只是想“做一些伟大的事情”,似乎所谓“平庸的事情”在我眼里就是一坨屁。客观地说我接触科技创业的时间并不长,甚至还很短(连许多大一的学生都比不过)。这半年里巨大的思想滑坡终于在这一刻连点成线,让我感觉有些混乱。我相信很多人可能也是和我是一样的状态,总是在被水流推着走,见到了许多新的事物视野急剧开阔的同时却也很难停下脚步去慢慢吸收。 回顾我的孵化器历程:在一开始,我总想到处都是没被满足的痛点到处都是机会,到后面看什么都不对;我总觉得大家都好厉害,到后面又觉得不过如此。尤其是当我自己去承办黑客松活动以后,我开始习惯站在投资人的视角高高在上,去judge、去定义、去以一种傲慢的姿态看待其他人的作品。“思想”和行动上的巨大落差让人似乎有些过于傲慢了,我们不免陷入一种眼高手低。我们在黑客松或者创业者身上见到的很多作品其实并不符合创圈的整体品味,基本处于鄙视链的中下层,它不够酷不够帅不够改变世界,甚至特别low让人一眼觉得啼笑皆非。人人都拿来给他踩一脚,人人都渴望评价他来获得一种虚假的自我认同。但我还是想在每次“鄙视”之前问一问自己: 你真的有评判它的能力而不是眼高手低吗? 你总是去关注“品味”,这些不符合你的taste的产品真的不符合商业、社会生产价值、人类价值的客观规律吗? 总是以一种傲慢地姿态去审视他人,最终会把你变成什么样?此外,毫无共情的你真的还有做好一款产品的能力吗? 我们如此,那许多投资人呢?我认为也是高高在上惯了,就像一艘不易转向的巨型航母还余有基本的惯性做事,除此以外早已失去了判断的能力。 这也是我正想说的———务实。我认为大家都太不务实了。这半年里我总觉得自己状态不对,但我说不清楚为什么不对;直到最近我才终于想明白这点:我需要去写作,需要去关注更多商业化前沿真实的落地而非对其他人指指点点,需要去写更多的github仓库,需要去自己/或者和人一起把一件自己真正感兴趣、觉得有意义有价值的事情从0到1给做出来,我需要去动手做更多务实的事情。 为什么创业者总喜欢端着 "从奇绩demo day和黑客松回来我一直在想很多事情。 我一直在反思自己,我觉得我陷入了一种思维怪圈——在中国早期投资的叙事逻辑之下,我们似乎总是去强调“特别”。诚然,我们可能从小就是一批很奇怪的人,有的人不合群,有的人其他人永远都不知道他在想什么觉得他很唐,甚至有的人本身真的就有病。创造圈本身就是这么一群很怪异的人和疯子。投资人去寻找特别的人是没问题的。但,作为创造者自身,这种过分的强调,我觉得本质上不是一种对自我更和谐的认同,相反,这违背了初衷——这种刻意的偏移,它是一种更加自卑的,想彰显自我的,将自己与主流叙事刻意区分的心理底层映射。 我们可能都走错了。我们只需要更加顺理成章地成为自己。" 创圈,从来都是一个充满刻薄、很mean、很慕强的地方。年轻的创造者们拼命在这里生长,渴望拿下自己被认可的一席之地。但,即便你和刘靖康般成功,也一样充满了指指点点。于是年轻的创造者们开始尝试将自己包裹起来,说话做事总是端着。仿佛话说的越少越能彰显出自己的厉害,多说一个字就会暴露出自己最本来、软弱的模样;端的越厉害,潜意识里越能以一种指点者的模样高高在上地俯视对方,来掩饰自己内心的不自信甚至自卑。小时候我们把它叫做“故作高冷”,没想到世界是一个回归,长大了又开始玩这一套。 创业者都很现实。端着,很多时候是一种话不投机;但更多时候是一种“看人低”。我也曾遇到过很端着的情况,但在他看见我去奇绩玩了一圈以后对我的态度马上360°大转弯(扶额,我都觉得奇绩在早早期创业者这里的效应都有点有用的夸张了)。在对高位者update最新进展、积极社交的时候极尽谄媚,在对“低位者”摆架子高高在上。甚至,很多时候他都不一定是你所谓的“低位者”,许多人还来不及看清自己,人的眼睛就给人贴上了标签。 刻意寻求特别和对“所有人”端着我认为都是一种不自信。我理解很多时候你看到一个“傻逼”很不想理,但我希望大家抱有一颗悲悯、包容的心。 做自然的自己 我一直以来都很羡慕一种人——每次参加完活动就会把这个活动取得了哪些成就写下来,不断地去和公众分享不断地和上位者update汇报。坦白来说我甚至都有一点嫉妒——因为我没有这种能力。我曾尝试去习得,最后发现落得个东施效颦四不像。不仅别扭了自己,也让其他人看了个笑话。 这种能力在创业圈(甚至是各行各业),都是一个巨大的加分项。当我做社群以后我更能意识到其巨大的流量和隐形价值。这个时代是一个巨大的mcn,取得成功的不一定是你的产品做的多好,而是创始人本身具备的极强的对外营销和向上社交能力。这也是一种很经典的精英画像,一定会在世俗层面上取得不错的成就。 我很多时候都看不清自己,觉得自己是一个特别i的人,特别不会、也害怕和人说话;但有的时候又好像特别能说。可能我本质上是一个很i的人但是被迫在许多场合表现出来特别e,当不需要我表现的时候我就开始怎么舒服怎么待着。我确实成不了上面说的那种人,但我也不认为我在这方面一无是处。我从来不敢自诩为精英,也不愿意成为精英;也从来不敢以一种文艺评论家的姿态高高在上地对营销指指点点甚至是看不起。我只是想成为自己喜欢的模样,以自己真正喜欢的方式非常自然地说话、做事,很自然地把营销做好,自然的人也可以散发出强大的个人魅力。之前那些拙劣的模仿让我很难受,我觉得自己都走偏了。我不想再去思考什么创业什么大佬,我现在只是想以自己舒服的方式去说话、做事。我相信一定有很自然的道理也可以把各种事情做好。如果说营销(甚至创业)本质是装逼,我不喜欢一种很低级的装逼。高级的装逼就应该很自然,让人都感觉不到你在装逼他只是觉得那是你自己。

July 30, 2025 · 1 min · 27 words · Me

我的Github仓库

欢迎来到我的仓库! 在这里,我将会分享一些我正在开发的项目,以及一些我正在使用的工具。 我们的宗旨是有趣,在这里,未来我们会看见更多更有意思、更fancy的内容!

July 21, 2025 · 1 min · 3 words · Me

关于我自己

👋 嗨,我是Rongxian “在这里,我只想成为我自己” 欢迎来到我的博客!Hì,我是容贤,很高兴在这个数字空间与你相遇。 🌟 关于我 很多人认识我是从以下开始的: 🎓 南大创业者社群 & 南客松 🚀 深圳科创学院 是的,我是一个连续创业者,但我并不喜欢以贴标签的方式定义自己。在这里,我想用更自然、更真实的方式和大家分享我的思考、经历和成长。 📬 如果你对我感兴趣 📄 我的个人简历 了解更多关于我的专业背景和项目经验 📎 下载简历 (PDF)

July 21, 2025 · 1 min · 22 words · Me

我的第一篇Hugo博客

🚀 为什么选择Hugo? Hugo是一个快速、现代的静态网站生成器,非常适合创建博客、文档网站和个人网站。 为什么选择Hugo? Hugo很简单、漂亮、快速,能够实现毫秒级构建速度。整体风格也很适合程序猿。 📖 Hugo快速上手指南 1. 安装Hugo 重点参考:点击查看 Hugo 教程 # Windows (使用Chocolatey) choco install hugo-extended # macOS (使用Homebrew) brew install hugo # 验证安装 hugo version 2. 创建新站点 # 创建新站点 hugo new site my-blog # my-blog为网站的名字,可以自己设置 cd my-blog # 初始化Git仓库 git init 3. 安装主题 # 添加PaperMod主题作为子模块 git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod 4. 配置网站 在hugo.toml中添加基本配置: baseURL = 'https://yourdomain.com/' title = '我的博客' theme = 'PaperMod' [params] env = 'production' title = '我的博客' description = '分享技术与生活' ShowReadingTime = true ShowShareButtons = true ShowPostNavLinks = true 5. 创建第一篇文章 # 创建新文章 hugo new posts/my-first-post.md 6. 本地预览 # 启动开发服务器 hugo server -D # 访问 http://localhost:1313 7. 构建部署 # 构建静态文件 hugo # public目录包含所有静态文件 # 可直接部署到任何静态托管服务 💡 实用技巧 文章Front Matter模板 +++ title = '文章标题' date = '2025-01-20T10:00:00+08:00' draft = false description = '文章描述' tags = ['标签1', '标签2'] categories = ['分类'] cover: image = 'images/cover.jpg' alt = '封面图描述' +++ 常用命令 # 创建文章 hugo new posts/article-name.md # 本地预览(包含草稿) hugo server -D # 构建生产版本 hugo --minify # 清理缓存 hugo mod clean # 每一次新修改完文章,想上传到github pages 站点目录下编译,更新pubilc目录:hugo cd public # 1. 初始化 Git 仓库 git init # 2. 添加远程仓库(注意空格) git remote add origin https://github.com/crx16888/crx16888.github.io # 3. 添加所有文件到暂存区 git add . # 4. 提交更改 git commit -m "[test]" # 5. 推送到 main 分支(首次推送,并建立跟踪关系) git push -u origin main --- ## 🎯 下一步计划 - [ ] 自定义主题样式 - [ ] 添加评论系统 - [ ] 集成Google Analytics - [ ] 优化SEO设置 - [ ] 添加搜索功能 - [ ] 添加github action 此外,在未来我计划更新自己的系列课程: - [ ] 课程1:vibecoding的使用方法(cursor rules、提示词工程、调试技巧、全栈复杂工程涉及前后端、算法、设计、仿真等的构架技巧等) - [ ] 课程2:AI LLM理论与实战(pre train、sft、rlhf完整训练大模型流程、提示词工程(以RAG为代表)、常用大模型算法理论知识) - [ ] 课程3:大模型编程架构实用且有意思的项目:如DRL训练超级马里奥、联系人信息管理助手等 - [ ] 课程4:对于一些常用的实战软件的教学、体会与思考 --- > **总结**:Hugo以其极速的构建性能、简洁的使用体验和强大的扩展能力,成为了现代静态网站的理想选择。无论是个人博客还是企业官网,Hugo都能提供优秀的解决方案。 *开始你的Hugo之旅吧!* ✨

July 20, 2025 · 2 min · 261 words · Me