mcp-for-beginners 实战:使用 TypeScript 与官方 SDK 构建可扩展的 MCP Server 示例
教程文档人工智能【免费下载链接】mcp-for-beginnersThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.项目地址https://gitcode.com/GitHub_Trending/mc/mcp-for-beginners点击查看免费下载本文围绕 mcp-for-beginners 仓库中 04-PracticalImplementation/samples/typescript 的 TypeScript MCP Server 示例展开结合其完整源码讲解如何用modelcontextprotocol/sdk与 Zod 定义类型安全的 Tool 和 Resource并通过 stdio 传输启动服务。读完本文你将掌握 MCP Server 在 TypeScript 下的工程结构、工具注册、资源暴露、事件埋点与本地运行验证的全套方法。示例概览一个 TypeScript 版 MCP Server该示例位于仓库的 04-PracticalImplementation/samples/typescript 目录是第四章「Practical Implementation」中按语言组织的多语言示例之一另有 C#、Java with Spring、JavaScript、Python 版本见 04-PracticalImplementation/README.md。示例通过官方 TypeScript SDK 实现了一个完整的 MCP Server主要包含两类核心能力Tool工具一个名为completion的补全工具接收model、prompt与可选options参数返回模拟的 LLM 补全结果Resource资源一个名为search的资源使用ResourceTemplate暴露test://{query}形式的动态资源地址返回模拟搜索结果。整个示例以「先 mock、后接入真实模型」的渐进思路编写非常适合作为学习 MCP Server 的第一个 TypeScript 参考实现。工程结构解析示例的完整文件结构如下均在仓库根目录下04-PracticalImplementation/samples/typescript/ ├── src/ │ └── index.ts # 服务端核心实现 ├── README.md # 示例说明文档 ├── package.json # 依赖与脚本定义 ├── package-lock.json # 依赖锁定文件 └── tsconfig.json # TypeScript 编译配置依赖清单package.json查看 package.json 可以看到示例的关键依赖{ name: tutorial-mcp, version: 1.0.0, type: module, scripts: { start: tsc node ./build/index.js, build: tsc node ./build/index.js }, dependencies: { modelcontextprotocol/sdk: ^1.26.0, openai: ^4.95.0, zod: ^3.24.2 }, devDependencies: { types/node: ^22.13.17, typescript: ^5.8.2 } }这里有三点值得注意modelcontextprotocol/sdk^1.26.0是 MCP 官方 TypeScript SDK提供McpServer、StdioServerTransport、ResourceTemplate等核心构件zod^3.24.2用于声明工具参数的运行时校验 Schema——这是 MCP TypeScript 生态的标准做法openai^4.95.0已作为依赖声明对应源码中「真实实现中应调用 AI 模型」的演进方向示例当前以 mock 响应代替真实调用。编译配置tsconfig.jsontsconfig.json 采用 ES2022 目标与 Node16 模块解析rootDir指向./src编译产物输出到./build并开启了strict严格模式。由于package.json中声明了type: module源码使用 ESM 风格的import语法。用 Zod 注册类型安全的 completion 工具示例文档 04-PracticalImplementation/samples/typescript/README.md 给出了工具注册的核心片段即通过this.mcpServer.tool(...)注册completion工具this.mcpServer.tool( completion, { model: z.string(), prompt: z.string(), options: z.object({ temperature: z.number().optional(), max_tokens: z.number().optional(), stream: z.boolean().optional() }).optional() }, async ({ model, prompt, options }) { console.log(Processing completion request for model: ${model}); // Validate model if (!this.models.includes(model)) { throw new Error(Model ${model} not supported); } // Emit event for monitoring/metrics this.events.emit(request, { type: completion, model, timestamp: new Date() }); // In a real implementation, this would call an AI model // Here we just echo back parts of the request with a mock response const response { id: mcp-resp-${Date.now()}, model, text: This is a response to: ${prompt.substring(0, 30)}..., usage: { promptTokens: prompt.split( ).length, completionTokens: 20, totalTokens: prompt.split( ).length 20 } }; // Simulate network delay await new Promise(resolve setTimeout(resolve, 500)); // Emit completion event this.events.emit(completion, { model, timestamp: new Date() }); return { content: [ { type: text, text: JSON.stringify(response) } ] }; } );参数 Schema 与 MCP 类型映射mcpServer.tool()的第二个参数使用 Zod Schema 描述工具入参SDK 会自动将其转换为 MCP 协议要求的 JSON Schema参数类型是否必填说明modelz.string()必填目标模型名称需在服务端支持列表中promptz.string()必填用户输入提示词options.temperaturez.number()可选采样温度options.max_tokensz.number()可选最大生成 token 数options.streamz.boolean()可选是否流式返回处理函数的关键设计从源码src/index.ts可以看到处理函数内部的三段式逻辑这也是生产级 MCP 工具可复用的骨架模型校验if (!this.models.includes(model))抛错拒绝不支持的模型保证失败快速暴露事件埋点通过 Node 内置EventEmitter分别发出request与completion事件为监控/指标采集预留接口返回 MCP 标准内容块返回值遵循 MCP 的content数组约定此处使用type: text的文本内容块将 mock 响应以JSON.stringify形式返回。模拟的 500ms 网络延迟则对应真实场景中调用远端模型的开销。源码纵深ExtendedMcpServer 类的完整实现示例文档只展示了工具注册片段而其完整实现位于 src/index.ts。源码将能力封装为ExtendedMcpServer类构造函数接受{ serverName?, version?, models? }三个可选配置项并完成三件事用new McpServer({ name, version })创建核心 MCP 服务器实例调用registerCompletionTool()注册上文讲解的 completion 工具调用registerSearchResource()注册 search 资源。通过 ResourceTemplate 暴露动态资源在registerSearchResource()src/index.ts中示例展示了 Resource 的注册方式this.mcpServer.resource( search, new ResourceTemplate(test://{query}, { list: undefined }), async (uri, { query }) { // Simulate search processing await new Promise(resolve setTimeout(resolve, 300)); const results [ { title: Result 1, snippet: Related to ${query}... }, { title: Result 2, snippet: Information about ${query}... }, { title: Result 3, snippet: More details on ${query}... } ]; return { contents: [ { uri: uri.href, text: JSON.stringify(results) } ] }; } );与 Tool 不同Resource 面向「提供上下文与数据」的场景。这里使用ResourceTemplate定义带 URI 参数模板的地址模式test://{query}当客户端读取匹配该模板的 URI 时回调收到解析出的{ query }参数返回contents数组作为资源内容。{ list: undefined }表明该模板不参与资源列表枚举。基于 stdio 的传输连接connect()方法src/index.ts负责将服务器绑定到标准输入输出传输public async connect(): Promisevoid { const transport new StdioServerTransport(); await this.mcpServer.connect(transport); console.log(Server connected via stdio transport); }StdioServerTransport是 MCP 最常见的本地传输方式服务器通过 stdin/stdout 与宿主如 VS Code、Claude Desktop 或自定义客户端通信非常适合本地开发和调试。可观测性与对外访问接口类还提供了on(event, listener)事件监听注册、getMcpServer()获取底层实例、getSupportedModels()返回受支持模型列表等公开方法。文件末尾的演示代码展示了完整的启动序列src/index.tsconst server new ExtendedMcpServer({ serverName: TypeScript MCP Demo Server, version: 1.0.0 }); server.on(request, (data) { console.log(Request received: ${JSON.stringify(data)}); }); server.on(completion, (data) { console.log(Completion finished: ${JSON.stringify(data)}); }); server.connect().catch(error { console.error(Failed to connect server:, error); process.exit(1); });从源码结构可以推断这套「类封装 事件埋点 模块化注册方法」的设计意在将 MCP Server 的初始化、工具/资源注册与传输连接解耦方便后续扩展更多工具与资源。安装与运行安装依赖在示例目录下执行对应文档中的 Install 步骤npm install该命令会依据 package.json 与package-lock.json安装modelcontextprotocol/sdk、zod、openai及 TypeScript 工具链。启动服务npm start需要注意start脚本的真实行为是tsc node ./build/index.jspackage.json先由 TypeScript 编译器将src/编译到build/再直接运行编译产物。因此首次运行会自动完成编译启动后控制台会依次输出服务器初始化信息、受支持模型列表随后通过 stdio 传输等待客户端连接。快速验证思路启动后可用 MCP Inspectornpx modelcontextprotocol/inspector以 stdio 方式连接本服务或在宿主机如 VS Code Agent 模式中将其注册为 MCP Server进而调用completion工具并读取test://{query}资源——这与仓库中 04-PracticalImplementation/README.md 介绍的 MCP Inspector 测试方法一致。若传入不在支持列表中的模型名服务端会按设计抛出Model ... not supported错误可作为校验 Zod Schema 与业务校验链路的测试用例。延伸阅读多语言对照实现C#、Java with Spring、JavaScript、Python分页与大数据集处理04-PracticalImplementation/pagination/README.md章节总览与实战目标04-PracticalImplementation/README.md赞分享教程文档人工智能【免费下载链接】mcp-for-beginnersThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.项目地址https://gitcode.com/GitHub_Trending/mc/mcp-for-beginners点击查看免费下载相关推荐MCP for Beginners 项目实战使用 Python 构建 MCP Calculator ServerMCP for Beginners 项目实战使用 Python 构建 MCP Calculator Server 本指南以 mcp for beginners教程文档人工智能在 mcp-for-beginners 中构建 MCP TypeScript 客户端基于官方 SDK 的 stdio 传输与工具调用实战在 mcp for beginners 中构建 MCP TypeScript 客户端基于官方 SDK 的 stdio 传输与工具调用实战 本文围绕 mcp f教程文档人工智能MCP stdio 传输实战基于 mcp-for-beginners 多语言示例构建本地 MCP ServerMCP stdio 传输实战基于 mcp for beginners 多语言示例构建本地 MCP Server 本文以 mcp for beginners 仓教程文档人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Java Web供热计量系统实战:从JDBC到业务闭环

Java Web供热计量系统实战:从JDBC到业务闭环

简介:本资源是一套完整的毕业设计级Java Web供热计量后台数据管理系统源码包,面向计算机专业本科生及Java初学者,解决供热行业后台数据管理场景中的用户、热量表、员工、热量记录等核心业务建模与实现问题。压缩包共253个文件,7.1…

2026/10/11 6:17:40 阅读更多 →
Python爬虫实战:打造网页快照归档器,用XPath提取正文与长图截图

Python爬虫实战:打造网页快照归档器,用XPath提取正文与长图截图

最近总在整理自己的收藏夹,发现一个很扎心的事实:很多当年认真保存的文章,链接已经打不开了;有些技术文档还活着,但页面被改版得面目全非,旧版本再也找不回来。我后来琢磨了一个Python爬虫小项目&#xff0…

2026/10/10 19:30:28 阅读更多 →
HTTP vs HTTPS 核心区别

HTTP vs HTTPS 核心区别

1. 基础定义HTTP:超文本传输协议,明文传输,端口 80HTTPS:HTTP SSL/TLS 加密协议,密文传输,端口 4432. 对比表表格对比项HTTPHTTPS传输内容明文,中间人可直接看到数据加密(对称 非对…

2026/10/9 19:40:27 阅读更多 →

最新新闻

酒店管理系统毕设:房态流转、数据库设计与Spring Boot实战

酒店管理系统毕设:房态流转、数据库设计与Spring Boot实战

简介:这是一套面向Java毕业设计场景的酒店管理系统完整资料包,涵盖毕业设计论文、答辩PPT、源代码、数据库及讲解视频,主要帮助计算机类专业学生解决系统开发、毕业论文撰写和答辩准备等环节的实际问题。压缩包共13个文件,包含3个…

2026/10/11 13:04:46 阅读更多 →
用Python从零开发轻量停车管理系统:入场计费与GUI实战

用Python从零开发轻量停车管理系统:入场计费与GUI实战

上个月帮一个朋友收拾小区停车场的烂摊子,他们的登记方式还停留在一本纸质记录本加一个计算器的阶段:进场时手写车牌和入场时间,出场时翻遍整本本子找记录、算费用。高峰期出口堵成一团,保安一边对着单据皱眉,一边跟车…

2026/10/11 13:04:46 阅读更多 →
免root下的五层执行隔离:OpenClaw on Android 安全架构完全解读(SELinux、应用沙箱与版本锁定)

免root下的五层执行隔离:OpenClaw on Android 安全架构完全解读(SELinux、应用沙箱与版本锁定)

移动开发AI 应用CLI开发工具 【免费下载链接】openclaw-android Run OpenClaw on Android with a single command — no proot, no Linux 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-android 点击查看 免费下载 OpenClaw on Android 让你免 root 在安卓…

2026/10/11 13:04:46 阅读更多 →
TSN网络离线规划器OpenPlanner:从约束建模到GCL下发

TSN网络离线规划器OpenPlanner:从约束建模到GCL下发

简介:OpenPlanner是一个开源TSN规划器,面向工业物联网、自动驾驶、远程医疗等低时延高可靠场景的工程师与研究者,核心价值在于通过调度算法为时间敏感网络提供确定性传输规划。资源包共217个文件,以91个Python脚本与87个JSON配置为…

2026/10/11 13:04:46 阅读更多 →
NMODBUS 实战:C# 实现 Modbus TCP 主站与从站模拟

NMODBUS 实战:C# 实现 Modbus TCP 主站与从站模拟

简介:NMODBUS.zip 是一套面向 C# 开发者的 MODBUS TCP/IP 通信库资源,适合刚接触工业自动化协议、需要快速与 PLC 建立数据交互的新手与中级开发者。它封装了 ModbusTcpMaster 等核心类,提供读写保持寄存器、线圈以及数据转换、异常处理等常用…

2026/10/11 13:04:46 阅读更多 →
为什么iwe拒绝规定笔记结构?揭秘文本图管理工具的3条设计原则

为什么iwe拒绝规定笔记结构?揭秘文本图管理工具的3条设计原则

人工智能Agent 记忆MCP 服务CLI知识管理开发工具 【免费下载链接】iwe Markdown knowledge graph — LSP for your editor, CLI MCP memory for your AI agents 项目地址: https://gitcode.com/gh_mirrors/iw/iwe 点击查看 免费下载 🤔 用过不少笔记工…

2026/10/11 13:03:46 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →