stdio-node-demo
v1.0.2
Published
Model Context Protocol server demo using stdio transport (Node.js)
Maintainers
Readme
MCP TypeScript Stdio 示例项目
这是一个可分发的 Model Context Protocol (MCP) 服务端示例,采用了 stdio 协议进行通讯。
目录结构
项目采用了标准推荐的 src 布局:
src/: 源代码目录index.ts: 主入口文件resources/: MCP 资源定义tools/: MCP 工具定义
dist/: 编译后的 JavaScript 输出package.json: 包含打包元数据和入口点配置
如何作为用户直接运行
如果你将此项目发布到 npm,其他用户无需手动下载代码,可以直接通过 npx 运行:
# 如果已发布到 npm
npx stdio-node-demo或者从 GitHub 仓库直接运行(如果配置了 GitHub Actions 或其他分发方式):
# 替换为你的 GitHub 仓库地址
npx github:YOUR_USERNAME/mcp-hello-world-ts本地开发与运行
1. 安装环境
npm install2. 构建项目
编译 TypeScript 源代码到 JavaScript:
npm run build3. 运行服务端
项目配置了 stdio-node-demo 入口点,可以直接运行:
npm start或者直接使用 node:
node dist/index.js4. 测试验证
使用 MCP Inspector 进行测试:
npx @modelcontextprotocol/inspector node dist/index.js或者运行集成测试:
npm test分发到公共仓库 (npm) 的建议
如果你想让用户直接通过 npx stdio-node-demo 运行:
- 注册 npm 账号。
- 在项目根目录运行
npm run build构建项目。 - 使用
npm publish将构建好的包发布。
发布后,用户的运行体验将非常顺滑:
npx stdio-node-demo在 Claude Desktop 中的配置示例:
{
"mcpServers": {
"stdio-node-demo": {
"command": "npx",
"args": [
"stdio-node-demo"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}或者使用本地开发版本:
{
"mcpServers": {
"stdio-node-demo": {
"command": "node",
"args": [
"/path/to/mcp-hello-world-ts/dist/index.js"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}环境变量配置示例
本项目演示了两种配置环境变量的方式:
1. 使用 .env 文件(本地开发推荐)
在项目根目录下创建 .env 文件,你可以配置自定义的问候语前缀:
GREETING_PREFIX="你好"服务端在初始化时会调用 dotenv 加载 .env 文件,你可以通过 say_greeting 工具来验证配置是否生效。
2. 在 Claude Desktop 中直接配置
如果你在 Claude Desktop 中使用此项目,可以在配置文件的 env 字段中注入环境变量:
{
"mcpServers": {
"stdio-node-demo": {
"command": "node",
"args": [
"/path/to/mcp-hello-world-ts/dist/index.js"
],
"env": {
"GREETING_PREFIX": "尊敬的"
}
}
}
}3. 可用工具演示
helloTool(message?): 回显消息或返回默认问候语。如果提供了 message 参数,则回显该消息;否则返回 "Hello, World!"。add_numbers(a, b): 基础数值加法,将两个数字相加并返回结果。say_greeting(name): 演示从环境变量获取前缀并拼接姓名。从环境变量GREETING_PREFIX读取前缀(默认为 "Hello"),然后与提供的姓名拼接。
4. 安全建议
- 不要提交
.env:敏感信息(如 API Key)应仅存在于本地.env中,本项目已将其加入.gitignore。 - 配置模板:参考
.env.example创建你自己的本地配置。
使用 with Claude Desktop
你可以配置 Claude Desktop 或任何 MCP 客户端来使用此服务器作为插件/工具,通过指定启动 MCP 服务器的命令。
配置示例
使用 npm 包(推荐)
如果你通过 npm 安装了包,可以在 Claude Desktop 设置中添加以下配置:
选项 1: 使用 npx(推荐 - 适用于所有环境)
{
"mcpServers": {
"stdio-node-demo": {
"command": "npx",
"args": [
"stdio-node-demo"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}选项 2: 直接路径(需要完整路径)
{
"mcpServers": {
"stdio-node-demo": {
"command": "node",
"args": [
"/usr/local/lib/node_modules/stdio-node-demo/dist/index.js"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}注意: 根据你的系统调整路径:
- macOS/Linux (全局安装):
/usr/local/lib/node_modules/stdio-node-demo/dist/index.js - Windows (全局安装):
%APPDATA%\\npm\\node_modules\\stdio-node-demo\\dist\\index.js - 本地安装:
./node_modules/stdio-node-demo/dist/index.js
使用源代码
如果你克隆了仓库,可以在 Claude Desktop 设置中添加以下配置:
{
"mcpServers": {
"stdio-node-demo": {
"command": "node",
"args": [
"/path/to/mcp-hello-world-ts/dist/index.js"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}- 将
/path/to/mcp-hello-world-ts/替换为你克隆此仓库的完整路径。 - 确保在启动 Claude Desktop 之前已构建项目(
npm run build)。
项目结构
.
├── src/
│ ├── index.ts # 主 MCP 服务器入口点
│ ├── resources/
│ │ └── helloResource.ts # MCP 资源定义
│ └── tools/
│ └── helloTool.ts # MCP 工具定义
├── dist/ # 编译后的 JS 输出
├── package.json
├── tsconfig.json
├── README.md
└── ...自定义
- 要添加新工具或资源,在
src/resources/或src/tools/中创建新文件,并在src/index.ts中注册它们。 - 修改
helloResource.ts或helloTool.ts来更改问候语或添加其他功能。
License
MIT License
