当前位置: 首页 > news >正文

【MCP Node.js SDK 全栈进阶指南】初级篇(2):MCP基础服务器开发

引言

在上一篇文章中,我们详细介绍了MCP开发环境的搭建。本文作为MCP TypeScript-SDK系列的第二篇,将深入探讨MCP基础服务器开发的核心内容,包括服务器创建与生命周期管理、McpServer与Server的区别与选择、各种配置选项的详解,以及基本启动与调试技巧。通过本文学习,你将能够构建稳定、高效的MCP服务器,为后续开发高级功能打下坚实基础。

一、服务器创建与生命周期管理

1. MCP服务器基本概念

MCP服务器是MCP应用的核心组件,负责处理客户端请求、管理资源和工具、协调模型交互等核心功能。在TypeScript-SDK中,服务器实例是应用程序的中央控制点,具有完整的生命周期管理机制。

2. 服务器创建方式

MCP TypeScript-SDK提供了两种创建服务器的方式:

2.1 基本创建方式
import { McpServer } from '@modelcontextprotocol/sdk';// 创建服务器实例
const server = new McpServer({name: 'my-mcp-server',description: '我的MCP服务器',version: '1.0.0',
});
2.2 使用构建器模式(推荐用于复杂配置)
import { McpServerBuilder } from '@modelcontextprotocol/sdk';// 使用构建器模式创建
const server = new McpServerBuilder().withName('my-mcp-server').withDescription('我的MCP服务器').withVersion('1.0.0').withHttp({ port: 8080 }).build();

3. 服务器生命周期管理

MCP服务器具有明确的生命周期阶段,理解和正确管理这些阶段对于开发稳定的应用至关重要:

3.1 初始化阶段

服务器创建后但尚未启动的阶段,适合进行资源注册、工具注册等准备工作:

// 初始化阶段配置
server.registerTool({name: 'greeting',description: '发送问候',parameters: z.object({name: z.string().describe('被问候者的名字'),}),execute: async ({ name }) => {return `你好,${name}`;},
});
3.2 启动阶段

服务器开始接受连接的阶段,此时完成所有传输层初始化:

// 启动服务器
await server.start();
console.log('服务器已启动,正在监听请求...');
3.3 运行阶段

服务器正常运行,处理客户端请求的阶段。在这个阶段,您可以动态修改服务器的工具和资源:

// 动态注册新工具
server.registerTool({name: 'dynamicTool',description: '运行时添加的工具',parameters: z.object({}),execute: async () => {return '这是运行时添加的工具';},
});
3.4 关闭阶段

优雅地终止服务器,释放资源的阶段:

// 优雅关闭服务器
await server.shutdown();
console.log('服务器已安全关闭');

4. 生命周期事件监听

MCP服务器提供了丰富的事件机制,允许开发者在不同生命周期阶段执行自定义逻辑:

// 监听服务器启动事件
server.on('start', () => {console.log('服务器启动事件触发');// 执行启动后的初始化工作
});// 监听服务器关闭事件
server.on('shutdown', () => {console.log('服务器关闭事件触发');// 执行资源清理工作
});// 监听错误事件
server.on('error', (error) => {console.error('服务器发生错误:', error);// 错误处理逻辑
});

二、McpServer与Server的区别与选择

MCP TypeScript-SDK提供了两种服务器实现:McpServerServer,了解它们的区别对于选择合适的服务器类型至关重要。

1. McpServer介绍

McpServer是符合MCP协议规范的完整实现,提供了全面的功能支持:

  • 特点

    • 完全符合MCP协议规范
    • 内置资源和工具管理
    • 支持多种传输层选项
    • 包含丰富的元数据和发现机制
  • 适用场景

    • 开发标准MCP应用
    • 需要完整MCP协议支持的场景
    • 多客户端交互的复杂应用
import { McpServer } from '@modelcontextprotocol/sdk';const mcpServer = new McpServer({name: 'standard-mcp-server',description: '标准MCP服务器实现',version: '1.0.0',// MCP协议的完整配置选项
});

2. Server介绍

Server是一个更轻量级的实现,专注于核心功能,适合特定场景:

  • 特点

    • 轻量级实现,占用资源少
    • 更简单的API接口
    • 更灵活的自定义选项
    • 更少的协议约束
  • 适用场景

    • 资源受限的环境
    • 简单的工具服务
    • 需要高度定制的应用
    • 内部系统集成
import { Server } from '@modelcontextprotocol/sdk';const lightServer = new Server({name: 'light-server',// 简化的配置选项
});

3. 选择指南

在选择服务器类型时,可以参考以下指南:

考虑因素McpServerServer
协议兼容性完全兼容MCP标准部分兼容
资源占用较高较低
功能完整性完整功能集核心功能集
配置复杂度较复杂较简单
扩展灵活性标准化扩展高度灵活
适用范围大中型应用小型或特定场景

4. 转换与互操作

在某些情况下,你可能需要在两种服务器类型之间进行转换或互操作:

import { McpServer, Server, convertToMcpServer } from '@modelcontextprotocol/sdk';// 从轻量服务器升级到完整MCP服务器
const lightServer = new Server({ name: 
http://www.xdnf.cn/news/87823.html

相关文章:

  • Python3中使用jupyter notebook
  • Vue2 el-checkbox 虚拟滚动解决多选框全选卡顿问题 - 高性能处理大数据量选项列表
  • 高性能服务器配置经验指南1——刚配置好服务器应该做哪些事
  • 字符串全排列(Java版本自己用)
  • SpringBoot3集成MyBatis-Plus(解决Boot2升级Boot3)
  • MQ底层原理
  • AI代表企业签订的合同是否具有法律效力?
  • 第一章-语言基础\2.竞赛常用库函数\其他库函数
  • AXOP33552: 400MHz 高速双通道运算放大器
  • 《AI大模型应知应会100篇》 第33篇:大模型在法律文档处理中的应用
  • 第T9周:猫狗识别2
  • MySQL中根据binlog日志进行恢复
  • SAS宏调试:高效定位与解决典型问题
  • 德施曼重磅发布五大突破性技术及多款重磅新品,开启AI智能管家时代
  • 使用 rebase 轻松管理主干分支
  • 【Linux】静态库 动态库
  • ZLG嵌入式笔记 | 拯救NAND/eMMC:延长闪存寿命
  • OpenCv高阶(七)——图像拼接
  • 高级java每日一道面试题-2025年4月22日-基础篇[反射篇]-如何通过反射创建一个对象实例?
  • Redi的常见场景
  • Agent框架LangGraph:实现一个简单的Plan-and-Execute Agent
  • 使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索
  • xyz 瓦片leaflet地图组件 显示
  • 软考-高项,知识点一览十九 配置和变更管理
  • 低代码破局,助力工业互联网平台迈向智改数转新高地
  • 电脑硬盘丢失怎么找回?解决硬盘数据恢复的2种方法
  • XHTMLConverter把docx转换html报java.lang.NullPointerException异常
  • 【YOLOv8-pose部署至RK3588】模型训练→转换RKNN→开发板部署
  • Mujoco xml < sensor>
  • 转型探讨:未来投资与布局