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

入门】使用Node.js开发一个MCP服务器(STDIO方式)介绍

CP(Model Control Protocol)是一个标准化接口协议,用于定义AI工具的功能和参数格式。它允许AI以标准方式调用各种工具,例如通过定义参数格式(如城市名称)来获取城市天气信息。当用户请求查询北京天气时,AI会按照MCP标准参数格式组装参数,调用MCP服务器执行相应功能,并处理返回结果。

开发MCP服务器(Node.js方式)

提示:首先需要下载安装nodeJs

下边我将带你开发一个简单的MCP服务器:

文件结构

3bc543b87ec00df5f2d5f2d2c47c7411

package.json 文件:

{

"name": "mcp-test",

"version": "1.0.0",

"description": "",

"main": "index.js",

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1"

},

"keywords": [],

"author": "",

"license": "ISC",

"dependencies": {

"@modelcontextprotocol/sdk": "^1.20.2",

"zod": "^3.23.8"

},

"type": "module"

}

demo-server.js:

#!/usr/bin/env node

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

import { z } from "zod";

const server = new McpServer({

name: "demo_service",

version: "1.0.0"

});

server.tool(

"say_hello",

{

needShowMeText: z.string().describe("想要展示的话")

},

async ({ needShowMeText }) => {

try {

// 返回成功响应

return {

content: [{ type: "text", text: 'Hello =>' + needShowMeText }]

};

} catch (error) {

// 错误处理

return {

content: [{ type: "text", text: `失败: ${error.message}` }],

isError: true

};

}

}

);

async function main() {

try {

console.log("MCP服务器启动中...");

const transport = new StdioServerTransport();

await server.connect(transport);

console.log("MCP服务器已启动并等待连接");

} catch (error) {

console.error("启动服务器时出错:", error);

process.exit(1);

}

}

main();

在根目录下,cmd 命令框输入 npm install 进行安装相关依赖:

8061b24924ec9ab2707c51d6cd8146b2

使用node ./dist/demo-service.js 测试是否可以启动成功

e161f2bcd7aed04583db05305710a9fd

使用官方工具测试

使用 mcp-inspector 进行测试,打开新终端输入以下命令:

npx @modelcontextprotocol/inspector

50876d5489520ea3396c72853a143867

按图中步骤输入各项参数:

41882acefcfebe505af194abc453f2ce

527a46109cfed5c0da4244b3148f9eb1

看到Tool Result: Success便成功了

Qoder、IDEA等代码编辑器集成MCP服务器

打开 文件 -> 首选项 -> Qoder 设置 -> MCP服务 -> +添加

{

"mcpServers": {

"mcp本地测试3": {

"name": "mcp本地测试3",

"command": "node",

"args": [

"G:\\Dev\\Code\\TestSource\\mcp-test\\dist\\demo-server.js"

]

}

}

}

1a5a4fd90635488744ac0d4b7a45d094

这样MCP安装便成功了!

使用

新建会话窗口,输入 使用 say_hello 工具告诉我world

http://www.cnnetsun.cn/news/40772.html

相关文章:

  • STM32之使用DWT外设编写延时函数
  • 选择中国优化路线的美国独立服务器的8大好处
  • Abaqus三维纤维复合材料Vumat子程序:弹性层压板+Hashin损伤(纤维)+Puck损...
  • 移动应用无障碍测试完全指南:如何用Maestro实现WCAG标准自动化验证
  • Effective C++ 中文版第3版:C++进阶编程的终极指南
  • Slang光线追踪加速结构深度解析:从理论到性能优化实践
  • DeepSeek-R1-Distill-Qwen-7B集群部署终极指南:轻松搞定AI推理服务
  • 风储调频在Matlab/Simulink中的探索:基于四机两区系统的实践
  • 基于Java Swing的猜数字小游戏(2)
  • 提升 Web 端 JavaScript 的可信度:WAICT 体系详解
  • Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定轻量级应用容器化部署
  • 一次 React 项目 lock 文件冲突修复:从 Hook 报错到 Vite 配置优化
  • 记录一次USB虚拟网络问题排查
  • 学Simulink——基于高比例可再生能源渗透的复杂电网建模场景实例:大规模光伏并网对区域电网频率稳定影响研究
  • CANN Samples(十九):特色场景:机器人 AI 绘画 手写识别等
  • 毕设开源 深度学习YOLO交通路面缺陷检测系统(源码+论文)
  • 【URP】Unity[后处理]色彩调整ColorAdjustments
  • Flutter混合开发与WebView集成实战
  • 压缩空气储能和释能阶段模型,附相关文档文献。 建立了压缩空气储能系统中的压缩机、换热器、储气罐...
  • Profinet转Modbus TCP工业数据采集网关:实现1200PLC 与打标卡数据实时传输
  • Flutter 2025 国际化与本地化实战:从多语言支持到文化适配,打造真正全球化的用户体验
  • P1178 到天宫做客 题解
  • 2025年GEO优化机会与争议以及规范发展的必要性
  • 2026老年春晚怀化区域节目征集启动仪式在怀化学院举行
  • 【笔记篇】【硬件基础篇】电力电子元器件应用手册 阅读笔记(1)电阻器及其应用
  • 柠檬 软件测试之python全栈自动化测试工程师第25期
  • 为什么你的视觉AI项目总是耗时又低效?Florence-2-large-ft一站式解决方案
  • 基于php的微信小程序的学习交流平台系统(源码+lw+部署文档+讲解等)
  • springboot高校读书分享系统的设计与实现_34ur7fyk-
  • 如何快速解锁RouterOS无限权限:MikroTikPatch的终极指南