编写第一个MCP Server之Hello world

简介: 本文介绍如何使用Node.js编写一个简单的MCP Server——“Echo”服务。通过环境搭建、项目初始化、代码实现及验证,完成MCP服务的开发与调用测试,助力快速入门MCP协议开发。

引言

上一篇《在Cline上调用MCP服务之MCP实践篇》我们讲到如何调用MCP服务,这次我们就来自己写一个MCP服务。

在动手自己编写MCP Server之前建议还是先认真看一遍MCP官网的介绍。
image.png

参考官方教程,我们计划编写一个名为“Echo”的MCP Server作为我们的MCP Server Hello world。

一、检查环境并初始化项目

首先我们要检查环境。对于本教程,您需要 Node.js 版本 16 或更高版本。

node --version
npm --version

现在,让我们创建并设置我们的项目:

# Window 的命令如下
# Create a new directory for our project
md echo
cd echo

# Initialize a new npm project
npm init -y

# Install dependencies
npm install @modelcontextprotocol/sdk zod
npm install -D @types/node typescript

# Create our files
md src
new-item src\index.ts

image.png

继续敲命令。
image.png

此时看一眼文件目录。
image.png

看看接下来我都遇到了什么。
image.png

换到powershell执行,OK了。此时index.ts文件为空。
image.png

更新您的 package.json 以添加 type: “module” 和构建脚本:

{
   
  "name": "echo",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
   
    "build": "tsc && chmod 755 build/index.js",
    "prepare": "npm run build",
    "dev": "tsc --watch",
    "start": "node build/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
   
    "@modelcontextprotocol/sdk": "^1.11.1",
    "zod": "^3.24.4"
  },
  "devDependencies": {
   
    "@types/node": "^22.15.17",
    "typescript": "^5.8.3"
  },

  "type": "module",
  "bin": {
   
    "echo": "./build/index.js"
  },
  "files": [
    "build"
  ]
}

在项目的根目录中创建一个 tsconfig.json:

{
   
  "compilerOptions": {
   
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

二、构建MCP服务器

现在让我们开始构建您的服务器。
在src/index.ts文件导入包并设置server实例。

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: "Echo",
  version: "1.0.0"
});

server.tool(
  "echo",
  {
    message: z.string() },
  async ({
    message }) => ({
   
    content: [{
    type: "text", text: `Tool echo: ${
    message}` }]
  })
);

server.prompt(
  "echo",
  {
    message: z.string() },
  ({
    message }) => ({
   
    messages: [{
   
      role: "user",
      content: {
   
        type: "text",
        text: `Please process this message: ${
    message}`
      }
    }]
  })
);

最后,实现 main 函数来运行服务器:

async function main() {
   
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("echo MCP Server running on stdio");
}

main().catch((error) => {
   
  console.error("Fatal error in main():", error);
  process.exit(1);
});

确保运行 npm run build 来构建您的服务器!这是让您的服务器连接非常重要的步骤。

但是提示这个玩意。也是,chomd 是属于Linux下的命令。
image.png

尝试换一下命令,并可以手动赋予编译文件权限(其实不操作问题也不大)。

{
   
  "name": "echo",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
   
    "build": "tsc",
    "prepare": "npm run build",
    "dev": "tsc --watch",
    "start": "node build/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
   
    "@modelcontextprotocol/sdk": "^1.11.1",
    "zod": "^3.24.4"
  },
  "devDependencies": {
   
    "@types/node": "^22.15.17",
    "typescript": "^5.8.3"
  },

  "type": "module",
  "bin": {
   
    "echo": "./build/index.js"
  },
  "files": [
    "build"
  ]
}

于是build成功啦。
image.png

三、验证效果

我们编写了MCP server此时需要一个MCP client 来支持调用和验证。于是我们刚好使用上一篇提的Cline插件来验证,我们发现绿灯亮起来了。

image.png

趁热打铁,我们问个问题试一下:
image.png

image.png

至此,第一个MCP Server之Hello world的简易demo结束了。
最后,关注一下官方目前提供的SDK语言支持哈。下一篇我们计划尝试来搞一个MCP Clients哈,拜了个拜,感谢品阅。

相关文章
|
JSON JavaScript Linux
【MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼
本文介绍如何将阿里云百炼的工作流封装成MCP服务并部署,随后引入到智能体中使用。主要步骤包括:1) 封装MCP服务;2) 发布到npm官方平台;3) 在阿里云百炼平台创建自定义MCP服务;4) 在智能体中添加自定义MCP服务。通过这些步骤,用户可以轻松将工作流转化为MCP服务,并在智能体中调用。
3468 0
|
7月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
1726 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
5月前
|
人工智能 自然语言处理 文字识别
RAG效果不佳?先别急着微调模型,这几个关键节点才是优化重点
本文深入探讨了RAG(Retrieval Augmented Generation)技术的实现细节与优化策略,指出在AI应用开发中,RAG常被视为黑盒导致问题定位困难。文章从文档分块(Chunking)、索引增强(语义增强与反向HyDE)、编码(Embedding)、混合检索(Hybrid Search)到重排序(Re-Ranking)等关键环节进行了详细解析,强调需结合具体场景对各模块进行调优,以提升召回率与精确率的平衡,并倡导从快速使用走向深度优化的实践路径。
1083 33
RAG效果不佳?先别急着微调模型,这几个关键节点才是优化重点
|
10月前
|
人工智能 JavaScript Serverless
从零开始开发 MCP Server
本文介绍如何使用Serverless Devs CLI工具从零开发并一键部署MCP Server到阿里云函数计算(FC)。首先通过初始化MCP Server项目,完成本地代码编写,利用Node.js实现一个简单的Hello World工具。接着对代码进行打包,并通过Serverless Devs工具将项目部署至云端。部署完成后,提供三种客户端接入方式:官方Client、其他本地Client及在FC上部署的Client。最后可通过内置大模型的inspector测试部署效果。Serverless Devs简化了开发流程,提升了MCP Server的构建效率。
1637 119
|
5月前
|
人工智能 自然语言处理 安全
MCP化:从特征提炼到封装实践
MCP作为连接大模型与外部世界的桥梁,已悄然重塑开发者生态。它不是简单的API包装,而是标准化协议,让服务“AI-ready”,从而释放代理的潜力。本文将深度剖析适合MCP化的服务特征、封装过程中的核心技巧,以及如何定义一个优秀的MCP服务器,并通过业界标杆案例剖析其实践路径。
493 12
|
3月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
29409 10
|
3月前
|
Web App开发 人工智能 JavaScript
Playwright MCP项目实战:基于提示的浏览器测试与代码生成
Playwright MCP实现AI驱动的对话式UI测试,只需自然语言指令即可自动执行测试并生成报告,大幅降低自动化门槛,提升效率与脚本稳定性,重塑现代Web测试格局。