TypeScript MCP服务器模板

一个功能完整的TypeScript模型上下文协议(MCP)服务器模板,提供生产就绪的代码和主要MCP功能演示。

  • by SamMorrowDrums
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 SamMorrowDrums/mcp-typescript-starter

使用说明

MCP TypeScript入门

TypeScript中的一个功能完整的模型上下文协议(MCP)服务器模板。此入门程序使用干净的生产就绪代码演示了MCP的所有主要功能。

📚 文档

✨ 特性

类别 功能 描述
工具 hello 带注释的基本工具
get_weather 具有结构化输出模式的工具
ask_llm 调用LLM采样的工具
long_task 具有5秒进度更新的工具
load_bonus_tool 动态加载新工具
资源 info://about 静态信息资源
file://example.md 基于文件的标记资源
模板 greeting://{name} 个性化问候
data://items/{id} 按ID查找数据
提示 greet 各种风格的问候
code_review 重点领域代码审查

🚀 快速开始

先决条件

安装

# Clone the repository
git clone https://github.com/SamMorrowDrums/mcp-typescript-starter.git
cd mcp-typescript-starter

# Install dependencies
npm install

# Build
npm run build

运行服务器

stdio传输 (地方发展):

npm run start:stdio

HTTP传输 (用于远程/web部署):

npm run start:http
# Server runs on http://localhost:3000

🔧 VS代码集成

该项目包括用于无缝开发的VS代码配置:

  1. 在VS Code中打开项目
  2. MCP配置位于 .vscode/mcp.json
  3. 构建于 Ctrl+Shift+B (或 Cmd+Shift+B 在Mac上)
  4. 使用VS Code的MCP工具测试服务器

使用DevContainers

  1. 安装 开发容器扩展
  2. 打开命令面板:“开发容器:在容器中重新打开”
  3. 一切都是预先配置好的,随时可以使用!

📁 项目结构

.
├── src/
│   ├── tools.ts       # Tool definitions (hello, get_weather, ask_llm, etc.)
│   ├── resources.ts   # Resource and template definitions
│   ├── prompts.ts     # Prompt definitions
│   ├── server.ts      # Server orchestration (combines all modules)
│   ├── stdio.ts       # stdio transport entrypoint
│   └── http.ts        # HTTP transport entrypoint
├── .vscode/
│   ├── mcp.json       # MCP server configuration
│   ├── tasks.json     # Build/run tasks
│   └── extensions.json
├── .devcontainer/
│   └── devcontainer.json
├── package.json
├── tsconfig.json
├── .prettierrc        # Prettier configuration
└── eslint.config.js

🛠️ 发展

# Development mode with live reload
npm run dev

# Build for production
npm run build

# Format code
npm run format

# Lint
npm run lint

# Clean build
npm run clean && npm run build

实时重新加载

这 npm run dev 命令使用 tsx watch 用于开发过程中的即时重新加载。 更改任何 .ts 文件将自动重新启动服务器。

🔍 MCP检查员

这 MCP检查员 是测试和调试MCP服务器的重要开发工具。

运行检查器

npx @modelcontextprotocol/inspector -- npx tsx src/stdio.ts

检查员提供什么

  • 工具选项卡:列出并调用所有已注册的带有参数的工具
  • 资源选项卡:浏览和阅读资源和模板
  • 提示选项卡:查看和测试提示模板
  • 日志选项卡:请参阅客户端和服务器之间的JSON-RPC消息
  • 模式验证:验证工具输入/输出模式

调试提示

  1. 在连接IDE/客户端之前启动检查器
  2. 使用“日志”选项卡查看确切的请求/响应有效载荷
  3. 测试工具注释正确显示
  4. 验证是否显示进度通知 long_task

📖 功能示例

带注释的工具

server.tool(
  "hello",
  {
    title: "Say Hello",
    description: "A friendly greeting tool",
    annotations: { readOnlyHint: true },
  },
  { name: z.string() },
  async ({ name }) => ({
    content: [{ type: "text", text: `Hello, ${name}!` }],
  })
);

资源模板

server.resourceTemplate(
  "greeting://{name}",
  { name: "Personalized Greeting", mimeType: "text/plain" },
  async ({ name }) => ({
    contents: [{
      uri: `greeting://${name}`,
      text: `Hello, ${name}!`,
    }],
  })
);

带有进度更新的工具

server.tool(
  "long_task",
  { title: "Long Task" },
  { taskName: z.string() },
  async ({ taskName }, { sendProgress }) => {
    for (let i = 0; i < 5; i++) {
      await sendProgress({ progress: i / 5, total: 1.0 });
      await sleep(1000);
    }
    return { content: [{ type: "text", text: "Done!" }] };
  }
);

🔐 环境变量

复制 .env.example 到 .env 并配置:

cp .env.example .env
变量 描述 默认值
PORT HTTP服务器端口 3000

🤝 贡献

欢迎投稿!请确保您的更改与其他语言初学者保持功能对等。

📄 许可证

MIT许可证-请参阅 许可证 了解详情。