MCP 协议从零搭建实战:手写一个文件搜索工具 Server
前言说实话MCP 协议从去年底爆火到现在已经成了 AI 开发圈绕不开的话题。但你真要动手写一个 Server很多教程要么讲得太浅要么跳过了关键细节。今天就手把手带大家写一个文件搜索工具 MCP Server功能很简单让 AI 能通过 MCP 协议搜索本地文件。但麻雀虽小五脏俱全整个过程你能完整理解 MCP 的工作原理。MCP 是什么一句话说清楚MCP (Model Context Protocol) 是 Anthropic 去年推出的一种开源协议专门解决 AI 模型和外部工具之间的通信问题。通俗点说MCP 就是 AI 世界的 USB 接口。以前你给 AI 加功能每个 AI 有自己的一套插件系统像不同品牌的充电器不通用。MCP 统一了接口标准写一次工具任何支持 MCP 的 AI 客户端都能用。环境准备首先确保你的环境满足以下条件# Python 3.10python--version# 安装 MCP 开发包pipinstallmcp我们用 Python 实现因为生态最成熟。如果你不会 Python用 TypeScript 也行官方支持两种语言。第一步定义工具MCP Server 的核心是暴露工具Tool给 AI 调用。每个工具需要定义名称— AI 调用时用的标识符参数描述— 告诉 AI 需要什么参数实现逻辑— 实际干活的代码frommcp.serverimportServerfrommcp.typesimportTool,TextContentfromtypingimportAnyimportosimportfnmatch# 创建 Server 实例serverServer(file-search-server)# 注册工具server.list_tools()asyncdeflist_tools()-list[Tool]:return[Tool(namesearch_files,description搜索本地文件支持通配符模式,inputSchema{type:object,properties:{pattern:{type:string,description:文件搜索模式例如 *.py 或 data/*.csv},root_dir:{type:string,description:搜索根目录默认为当前目录},max_results:{type:integer,description:最大返回结果数默认 20,default:20}},required:[pattern]})]第二步实现工具逻辑工具定义好了接下来实现 AI 发起调用时实际执行的代码server.call_tool()asyncdefcall_tool(name:str,arguments:dict)-list[TextContent]:ifnamesearch_files:patternarguments[pattern]root_dirarguments.get(root_dir,.)max_resultsarguments.get(max_results,20)results[]forroot,dirs,filesinos.walk(root_dir):# 跳过隐藏目录dirs[:][dfordindirsifnotd.startswith(.)]# 跳过 node_modules 等大目录dirs[:][dfordindirsifdnotin(node_modules,__pycache__,.git,venv)]forfilenameinfiles:iffnmatch.fnmatch(filename,pattern):filepathos.path.join(root,filename)try:sizeos.path.getsize(filepath)results.append({path:filepath,size:size,size_str:format_size(size)})exceptOSError:continue# 按大小排序最大的在前results.sort(keylambdax:x[size],reverseTrue)resultsresults[:max_results]return[TextContent(typetext,textformat_results(results,pattern))]else:raiseValueError(fUnknown tool:{name})第三步传输层配置MCP 支持两种传输方式标准输入输出stdio和 SSEServer-Sent Events。本地开发用 stdio 最简单defformat_size(size:int)-str:格式化文件大小forunitin[B,KB,MB,GB]:ifsize1024:returnf{size:.1f}{unit}size/1024returnf{size:.1f}TBdefformat_results(results:list[dict],pattern:str)-str:格式化搜索结果ifnotresults:returnf没有找到匹配 {pattern} 的文件lines[f找到{len(results)}个匹配 {pattern} 的文件\n]forrinresults:lines.append(f-{r[path]}({r[size_str]}))return\n.join(lines)if__name____main__:frommcp.server.stdioimportstdio_serverimportasyncioprint(启动 MCP File Search Server...)asyncio.run(stdio_server(server))第四步配置客户端Server 写好了怎么让 AI 用起来以 Claude Desktop 为例{mcpServers:{file-search:{command:python,args:[path/to/search_server.py]}}}配置完成后重启 Claude DesktopAI 就能自动发现并使用你的文件搜索工具了。踩坑指南写 MCP Server 最常遇到的几个坑1. 参数描述不够详细AI 模型依赖参数描述来理解怎么用。如果描述太模糊AI 可能传错参数。建议每个参数都写清楚「这个参数干什么用的」「什么格式」。2. 超时处理MCP 默认有超时时间如果你的工具执行时间太长比如扫描几百万个文件AI 会超时。建议加入超时限制和进度反馈。3. 工具返回值太长AI 模型的上下文窗口有限一次性返回太多结果会被截断。建议加 max_results 限制或者分页返回。# 加入超时控制的改进版本importasyncioimportsignalasyncdefsearch_with_timeout(pattern,root_dir,max_results,timeout30):try:resultawaitasyncio.wait_for(search_files_async(pattern,root_dir,max_results),timeouttimeout)returnresultexceptasyncio.TimeoutError:return[{error:搜索超时请缩小搜索范围}]进阶玩法写完了基础版你还可以扩展更多功能文件内容搜索结合 grep 模式搜索文件内容实时文件监控用 watchfiles 监听文件变化多 Agent 协作让多个 MCP Server 协同工作总结MCP 协议的价值不在于技术有多复杂而在于它定义了一个通用的接口标准。以前的 AI 工具链像一个个孤岛MCP 就是连接这些孤岛的桥梁。写完这个 demo 你会发现MCP 本身并不难真正的难点在于设计好的工具接口。好的工具接口 清晰的参数描述 合理的错误处理 可预期的行为。下一步推荐你试试把搜索工具改成异步实现asyncio加上文件内容预览功能试试用 SSE 模式部署成远程服务有什么问题欢迎在评论区讨论

相关新闻

AI Agent基础设施层:2026年竞争格局与技术突破

AI Agent基础设施层:2026年竞争格局与技术突破

1. AI Agent竞争格局的演变趋势2026年的AI Agent领域正在经历一场深刻的范式转移——竞争焦点从模型层向基础设施层的迁移。这个转变背后是行业发展的必然逻辑:当基础模型能力逐渐趋同,决定AI Agent实际表现的关键因素变成了支撑其运行的底层架构。就像智…

2026/7/24 12:03:01 阅读更多 →
AI教材生成工具:核心技术解析与高效应用指南

AI教材生成工具:核心技术解析与高效应用指南

1. 项目概述:AI教材生成工具的核心价值 去年帮某教育机构做课程开发时,我深刻体会到传统教材编写的痛点:团队花费三个月编写的200页教材,查重率竟高达38%。这促使我开始系统研究AI辅助教材生成方案。当前市面上的工具已能实现72小…

2026/7/24 12:03:01 阅读更多 →
AI服装模特试穿详情图生成系统开发

AI服装模特试穿详情图生成系统开发

技术架构与工具选择编辑𝗩:araolin(私域邦网络土土哥)3D建模与姿态生成 使用Blender、DAZ 3D或MakeHuman创建基础服装模特模型,结合OpenPose或AlphaPose提取人体关键点,实现多样化姿态模拟。Unity或Unreal …

2026/7/24 12:03:01 阅读更多 →

最新新闻

考试复习录音整理不同使用场景实用选择建议

考试复习录音整理不同使用场景实用选择建议

2026年针对考试复习、新人学新岗位知识的录音整理,我整理了最新的实用选择建议,核心逻辑是按你自己的需求选,不用追贵的追热门的,不同场景匹配不同工具,刚好解决很多人只会用基础转写、不知道怎么用AI提高复习效率的痛…

2026/7/24 12:10:03 阅读更多 →
谷歌Gemini定制芯片揭秘:十倍能效背后的AI算力革命

谷歌Gemini定制芯片揭秘:十倍能效背后的AI算力革命

最近在关注 AI 芯片的朋友,可能都看到了一个消息:谷歌似乎正在为它的 Gemini 大模型“量身定制”一款神秘芯片。消息称,这款芯片的能效表现,相比谷歌自家的 TPU 能有十倍级别的提升。 十倍能效是什么概念?这不仅仅是实…

2026/7/24 12:10:03 阅读更多 →
基于YOLOv5改进的肉鸡健康监测系统开发实践

基于YOLOv5改进的肉鸡健康监测系统开发实践

1. 项目背景与核心价值 在现代化养殖场中,肉鸡的健康状态监测一直是个劳动密集型工作。传统的人工巡检方式不仅效率低下,而且容易因疲劳导致误判。我们团队开发的这套基于深度学习的肉鸡目标检测系统,能够实现鸡群数量统计、个体行为识别和健…

2026/7/24 12:10:03 阅读更多 →
西安低空经济飞手接单系统开发实战:本地适配与报备接口指南

西安低空经济飞手接单系统开发实战:本地适配与报备接口指南

# 西安低空经济飞手接单系统开发实战:本地适配与报备接口指南在低空经济政策全面放开、本地政府鼓励无人机商业应用的背景下,开发一套针对西安本地的飞手接单系统,核心任务就是解决空中飞行安全、任务调度高效与政府监管合规三者间的矛盾。本…

2026/7/24 12:10:03 阅读更多 →
同步带频繁跳齿打滑?别只调张力,问题出在同步轮齿宽选型

同步带频繁跳齿打滑?别只调张力,问题出在同步轮齿宽选型

同步带频繁跳齿打滑?别只调张力,问题出在同步轮齿宽选型很多设备遇到同步带频繁跳齿打滑的问题时,第一反应就是反复调整张力,却忽略了最容易被遗漏的选型细节,导致故障反复出现始终无法根治,以下是基于齿宽…

2026/7/24 12:10:03 阅读更多 →
智慧校园系统落地避坑指南

智慧校园系统落地避坑指南

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

2026/7/24 12:09:03 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻