从零封装MCP Server:让WorkBuddy 听懂你的工具
📅 2026/7/18 23:54:49
👁️ 次浏览
从零封装 MCP Server让 WorkBuddy 听懂你的工具什么是 MCPMCPModel Context Protocol是 Anthropic 推出的开放协议让 AI 助手如 WorkBuddy可以安全地调用外部工具和API。它就像一个标准化的插件接口——你写好服务端AI 就能自动发现并调用你的工具。核心概念只有三个Server你写的服务端程序注册了多个工具Tool一个具体的功能比如「发帖到知乎」Transport通信方式通常是 stdio——标准输入输出第一步项目结构一个最小化的 MCP Server 只需要三个文件my-mcp-server/ ├── package.json # 依赖声明 ├── tsconfig.json # TS 编译配置 └── src/ └── index.ts # MCP Server 入口第二步package.json{name:my-mcp-server,version:1.0.0,type:module,scripts:{build:tsc,start:node dist/index.js},dependencies:{modelcontextprotocol/sdk:^1.0.4},devDependencies:{typescript:^5.7.2,types/node:^22.10.0}}第三步编写 Serverimport{Server}frommodelcontextprotocol/sdk/server/index.js;import{StdioServerTransport}frommodelcontextprotocol/sdk/server/stdio.js;import{CallToolRequestSchema,ListToolsRequestSchema}frommodelcontextprotocol/sdk/types.js;// 1. 创建 ServerconstservernewServer({name:my-mcp,version:1.0.0},{capabilities:{tools:{}}});// 2. 注册工具列表server.setRequestHandler(ListToolsRequestSchema,async()({tools:[{name:hello_world,description:打个招呼,inputSchema:{type:object,properties:{name:{type:string,description:你的名字}},required:[name]}}]}));// 3. 处理工具调用server.setRequestHandler(CallToolRequestSchema,async(req){const{name,arguments:args}req.params;if(namehello_world){return{content:[{type:text,text:你好${args.name}}]};}return{content:[{type:text,text:未知工具}],isError:true};});// 4. 启动consttransportnewStdioServerTransport();awaitserver.connect(transport);console.error(MCP Server started);第四步注册到 WorkBuddy编译后在~/.workbuddy/mcp.json中添加{mcpServers:{my-mcp:{command:node,args:[/path/to/my-mcp-server/dist/index.js],cwd:/path/to/my-mcp-server,disabled:false}}}重启 WorkBuddy去连接器面板点「信任」你的工具就生效了。进阶接入 Playwright 浏览器实际项目中你通常需要在 MCP Server 里集成浏览器自动化。以下是一个带 Playwright 的完整示例import{chromium}fromplaywright;// 在工具处理中启动浏览器server.setRequestHandler(CallToolRequestSchema,async(req){const{name,arguments:args}req.params;if(namescreenshot){constbrowserawaitchromium.launch({headless:true});constpageawaitbrowser.newPage();awaitpage.goto(args.url);constpathscreenshot-${Date.now()}.png;awaitpage.screenshot({path});awaitbrowser.close();return{content:[{type:text,text:截图已保存:${path}}]};}return{content:[{type:text,text:未知工具}],isError:true};});关键踩坑ESM 模式MCP SDK 只支持 ESMpackage.json 必须声明type: modulestdio 通信不要用 console.log 输出普通内容用 console.error 输出日志stdout 被 MCP 协议占用路径问题mcp.json 里的 command 和 args 要用绝对路径~/不会被展开端口冲突stdio 模式下不存在端口冲突问题最佳实践维度建议错误处理每个工具调用都要 try/catch返回友好的错误信息超时控制网络请求设置 30s 超时避免 WorkBuddy 卡死日志用 console.error 输出操作日志方便排查版本管理SemVer 严格管理工具定义变更时更新 schema测试用 echo ‘{“method”:“tools/list”}’总结从零到一封装一个 MCP Server 只需要 4 步创建项目 → 安装 SDK写 index.ts → 注册工具 处理调用配置 mcp.json → 让 WorkBuddy 识别去连接器面板点「信任」完整代码约 50 行半小时能跑通。真正花时间的是工具本身的业务逻辑
大模型边端部署的对抗攻击防御方案:输入扰动检测与模型鲁棒性评估的实验设计与结果
一、边端大模型遭遇对抗样本攻击的现实威胁:从实验室猜想走向工程实践
对抗样本攻击并非仅存在于论文中。2024年某安全团队的评估显示,在边缘部署的视觉大模…
📅 2026/7/18 23:53:49
一、产品概述SDLX 1UATEM24T是专为BMD ATEM全系列导播切换台打造的24路专业Tally Interface信号转换主机,采用标准1U机架工业级一体化硬件方案,一站式完成导播台IP Tally信号转24路独立红绿双色继电器输出,完美适配大型演播室、多机位EFP直播…
📅 2026/7/18 23:53:49
第一章 行业热点深度解析:源码交付、禁止转包、MCP‑A2A 原生适配成为选型核心标尺7 月 17 日,全行业统一选型共识正式落地,一套可在前期咨询环节快速分辨服务商实力高低的评判标准全面普及。当下市场内软件开发主体数量庞大,各类…
📅 2026/7/18 23:53:49
1. 内容审核平台的市场现状与核心价值最近两年,随着用户生成内容(UGC)的爆发式增长,内容审核已经成为各类平台的刚需。从社交媒体的评论区到电商平台的产品描述,从直播弹幕到在线教育场景,不良内容的过滤直…
📅 2026/7/19 1:59:44
1. ESP32-P4硬件IIC驱动XL9555扩展IO实验解析在嵌入式开发中,GPIO资源紧张是常见问题。ESP32-P4虽然功能强大,但其GPIO数量有限,当需要连接多个外设时,IO扩展芯片就成为必备选择。本实验通过硬件IIC接口驱动XL9555芯片,…
📅 2026/7/19 1:59:44
1. 项目概述这个基于AT89S52单片机的LED点阵显示屏设计项目,是我在嵌入式系统学习过程中的第一个完整实践案例。作为51单片机家族的经典型号,AT89S52凭借其稳定的性能和丰富的外设接口,成为初学者入门嵌入式开发的理想选择。LED点阵显示屏作为…
📅 2026/7/19 1:59:44
1. 项目背景与核心价值在嵌入式开发领域,如何让资源受限的设备具备网络服务能力一直是个经典命题。STM32F429作为STMicroelectronics旗下Cortex-M4内核的代表性产品,凭借180MHz主频、256KB RAM和1MB Flash的硬件配置,配合RT-Thread这款国产实…
📅 2026/7/19 1:59:44
1. Java学习路线规划Java作为一门成熟稳定的编程语言,学习路径已经非常清晰。我从2008年开始接触Java,见证了它从Java 6到Java 21的演进过程。对于初学者,我建议采用分阶段的学习方式:1.1 基础语法阶段这个阶段需要掌握的核心内容…
📅 2026/7/19 1:59:41
本文关键词:geo 2018年6月 金牛说实话,翻看2018年6月的那段日子,心里多少还是有点五味杂陈的。那时候大家还在热议“geo 2018年6月 金牛”这个时间节点,其实对于咱们金牛座来说,那个月就像是被夹在两块巨石中间,动弹不得却又不得不往前挪。现在回想起来,那种压抑感依然清…
📅 2026/7/19 1:59:10
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/18 7:01:02
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/18 17:01:33
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/18 5:00:56