Skip to content
This page has been auto-translated and may contain errors.View in English

在本地运行 Model Context Protocol

用这个页面运行提取的 TypeScript MCP 服务器,在 MCP Inspector 中试用其天气工具和资源。服务器通过标准输入和输出与客户端通信,因此它会等待客户端连接,而不是打开项目页面或应用端口。

你需要先准备什么

安装 Node 24。MCP Inspector 需要 Node 22.19 或更新版本,所以 Node 24 满足这个最低要求,而较旧的 LTS 版本可能无法启动测试界面。

这个项目不需要 API 密钥或 .env 文件。MCP 客户端以子进程的形式启动服务器,所以服务器运行的 Node 版本来自启动它的东西:你的终端、Inspector 或桌面客户端。

Juno你需要先准备什么 安装 Node 24,就这么简单:不需要 API 密钥,不需要 .env 文件。

有一点要注意:这个服务器从不打开网页。它会安静地等待客户端与它通信。

Juno你需要先准备什么 Node 24 既满足 TypeScript 服务器的需求,也满足 Inspector 的最低 Node 版本要求,所以只需安装一次。

这个项目通过 stdio 而不是 HTTP 端口通信,所以不用等待服务器 URL。你唯一要打开的 URL 是 Inspector 的。

Juno你需要先准备什么 客户端以子进程的形式生成这个服务器,所以 Node 版本和环境来自启动它的东西,而不是来自服务器文件夹。

这就是为什么启动方的 Node 安装很重要,即使服务器不需要密钥也不打开端口。

安装并修复服务器

在包含 package.json 的已提取服务器文件夹中打开终端:

bash
$ cd path-to-your-downloaded-project
$ npm ci
$ npm install --save-dev tsx

最后一个命令记录 tsx,这是运行 TypeScript 文件的工具,提取的 "start": "tsx server.ts" 脚本需要它。

你可以直接启动 stdio 服务器:

bash
$ npm start

它会等待 MCP 客户端,而不是打印浏览器 URL。启动 Inspector 前用 Ctrl+C 停止它。

Juno安装并修复服务器 运行 npm ci,添加缺失的 tsx 工具来运行 TypeScript 文件,然后试试 npm start

当终端安静下来时,说明没有问题:服务器在等待客户端。启动 Inspector 前用 Ctrl+C 停止它。

Juno安装并修复服务器 启动脚本已经调用 tsx,所以将其记录为开发依赖是最小的修复方式。

等待中的 stdio 进程是成功启动,不是卡住,所以不需要重新启动它。

Juno安装并修复服务器npm ci 只安装已发布的锁文件中记录的内容,而 tsx 不在其中。用 --save-dev 安装会将 tsx 写入 package.json 和锁文件。

这个记录的依赖是后来桌面客户端从任何目录用 npm exec 启动服务器的基础,不需要修改 server.ts

用 MCP Inspector 测试它

从同一个项目文件夹,运行官方 MCP Inspector

bash
$ npx @modelcontextprotocol/inspector npx tsx server.ts

第一个 npx 下载并启动 Inspector。Inspector 然后用 npx tsx server.ts 作为 stdio 子进程启动你的服务器。Inspector 的 web UI 运行在自己的本地端口上,与到服务器的 stdio 连接分开。打开终端中打印的本地 URL,如果它没有自动打开的话。

主动批准一次性包下载

npx 可能会请求安装 MCP Inspector 的权限。接受前确认包名是 @modelcontextprotocol/inspector。为了可重复的团队使用,请固定一个经过审查的版本,而不是无限期地依赖最新版本。

在 Inspector 中,连接到服务器,列出它的工具和资源,并用课程中使用过的输入之一调用天气工具。工具使用章节解释了这样的工具定义能给模型带来什么。测试时保持终端打开,然后用 Ctrl+C 停止 Inspector 和子服务器。

Juno用 MCP Inspector 测试它 运行 Inspector 命令,打开它打印的本地 URL,然后连接。接着列出工具和资源,调用天气工具。

如果 npx 要求安装包,检查名字是否是 @modelcontextprotocol/inspector 后再接受。

Juno用 MCP Inspector 测试它 Inspector 是这里的客户端,它启动 server.ts 作为其 stdio 子进程。

调用前检查发现:如果工具列表为空,调用任何东西都不会工作,所以先查看终端。保持终端打开,用 Ctrl+C 停止两个进程。

Juno用 MCP Inspector 测试它 外层 npx 运行 Inspector,内层命令定义子服务器传输。Inspector 的 web UI 端口与那个 stdio 管道分开。

一旦内层命令在这里工作了,下一节中桌面客户端配置就是同一个启动写成命令和参数的形式。为可重复的团队使用固定一个经过审查的 Inspector 版本。

连接另一个 MCP 客户端

桌面客户端需要一个可执行命令和参数来启动同一个 stdio 服务器。首先,复制已提取项目文件夹和其 server.ts 文件的绝对路径。用这个流程契约配置客户端,替换两个示例路径:

text
command: npm
arguments:
  - --prefix
  - /absolute/path/to/project
  - exec
  - --
  - tsx
  - /absolute/path/to/project/server.ts

--prefix 值让 npm 使用安装在该项目中的 tsx 依赖,即使桌面客户端从另一个工作目录启动也是如此。配置为独立运行 tsx 的客户端(前面没有 npm --prefix)反而依赖于全局安装和客户端的 PATH,这通常与你的终端不同。保持每个参数作为单独的项,以便包含空格的路径保持为一个值。不要添加 URL 或端口:这个服务器通过 stdio 通信。

客户端配置格式不同,所以将那个命令和参数映射到客户端当前 MCP 设置说明中的字段。修改配置后重启客户端。你不需要另一次项目下载:将它连接到你已经测试过的已提取服务器。代理章节讲述了当模型使用这样的工具时客户端运行的循环。

Juno连接另一个 MCP 客户端 将命令设置为 npm,添加上面的参数并填入两个绝对路径,然后重启客户端。

你在重用 Inspector 已经测试过的服务器,所以如果它在那里工作了,服务器端没有问题,任何问题都在客户端的设置中。

Juno连接另一个 MCP 客户端 配置语法在不同客户端间有所不同,但流程契约保持不变:npm --prefix 选择项目,exec -- tsx 通过 stdio 启动其 TypeScript 服务器。

将这些部分映射到客户端使用的任何字段名。

Juno连接另一个 MCP 客户端 桌面客户端很少继承你的终端 PATH,所以裸 tsx 命令只有在全局安装恰好可见时才能工作。

npm 加上前缀、exec 分隔符、运行器和绝对服务器路径作为单独的参数传入,能将启动与项目自己记录的依赖绑定在一起。

故障排除

tsx: command not found 在项目文件夹中运行 npm install --save-dev tsx。对于桌面客户端,也要确认其命令是 npm,其参数以 --prefix 开头,后跟绝对项目路径。

Inspector 拒绝 Node 版本: 安装 Node 24,用 node --version 验证,然后重新打开终端。

npm start 看起来卡住了: 这对于等待客户端的 stdio 服务器是正常的。用 Inspector 与它交互。

Inspector 没有显示工具: 查看终端中的 TypeScript 或连接错误,确认最终命令以 npx tsx server.ts 结尾。

Juno故障排除 如果 tsx 缺失就安装它,如果 Inspector 拒绝启动就升级到 Node 24,记住安静的服务器在等待,不是坏了。

这个页面上的大多数问题都是这三个之一。

Juno故障排除 分开三个故障层:tsx 安装、Inspector 的最低 Node 版本和 stdio 连接本身。

在假设工具注册失败前阅读终端;真正的错误通常已经在那里打印出来了。

Juno故障排除 按顺序追踪链:外层 Inspector 进程、子启动命令、TypeScript 执行,然后 MCP 初始化。

任何环节都可能让工具列表为空,终端输出会说明哪个断了,所以重启任何东西前先读它。