MCP TypeScript Server Starter
ralf-boltshauser
README
MCP TypeScript 服务端启动器
一个用于使用 TypeScript 构建模型上下文协议 (MCP) 服务端的启动项目。该项目提供了一个简单的回显服务端实现,演示了 MCP 的核心功能。
快速开始清单
📥 安装
- [ ] 克隆仓库:
git clone https://github.com/ralf-boltshauser/mcp-typescript-server-starter.git cd mcp-typescript-server-starter
- [ ] 安装依赖:
pnpm install
🛠️ 本地开发
- [ ] 启动开发服务器:
pnpm dev
- [ ] 在 http://localhost:6274 访问检查器
- [ ] 测试你的 MCP 服务端:
- 在检查器中点击 "Connect"
- 导航到 "Tools" 部分
- 点击 "List Tools"
- 选择 "echo" 工具
- 编写测试消息
- 点击 "Submit"
- [ ] 打开
src/index.ts
添加你自己的:- 工具 (你的 AI 可以调用的函数)
- 资源 (你的 AI 可以访问的数据)
- 提示词 (AI 交互的模板)
- [ ] 使用你服务端的描述和文档更新
src/index.html
🚀 部署 (Coolify 示例)
- [ ] 在 Coolify 上设置:
- 连接你的仓库
- 在高级设置中:
- [ ] 禁用 GZIP 压缩 (SSE 需要)
- 配置域名:
- [ ] 添加你的域名为:
https://subdomain.yourdomain.com:3001
:3001
至关重要 - 它告诉 traefik 绑定到你的内部端口
- [ ] 添加你的域名为:
- [ ] 验证部署:
- 访问
subdomain.yourdomain.com
查看你的 index.html - 在
https://subdomain.yourdomain.com/sse
测试 SSE 连接
- 访问
🔌 连接到你已部署的服务端
使用以下命令连接到你的服务端:
npx -y mcp-remote https://subdomain.yourdomain.com/sse
Cursor/Claude Desktop 的示例配置:
{
"mcpServers": {
"your-server-name": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://subdomain.yourdomain.com/sse"]
},
}
}
功能特性
- 简单的回显服务端实现
- 支持工具、资源和提示词
- TypeScript 支持
- 带有热重载的开发服务器
- 用于测试和调试的内置检查器
- 支持 STDIO 和 SSE 两种通信模式
前置条件
- Node.js (v16 或更高版本)
- pnpm (推荐) 或 npm
使用模式
此服务器支持两种主要的通信模式:
-
STDIO 模式
- 适用于本地开发和基本测试
- 直接进程通信
- 默认情况下,大多数 MCP 客户端使用此模式
- 非常适合在本地运行服务器
- 设置和使用简单
-
SSE 模式
- 更适合生产环境部署
- HTTP/SSE 通信
- 可以使用 npm 包转换为 STDIO (稍后介绍)
- 允许远程访问你的服务器
- 更具可扩展性和生产就绪性
选择 STDIO 用于本地开发,并在需要部署服务器以进行远程访问时选择 SSE。
STDIO 模式 (直接进程通信)
此模式非常适合与 Cursor 或 Claude Desktop 等工具直接集成。
-
配置服务器
- 在
src/index.ts
中:- 注释掉 Express/SSE 代码 (在底部)
- 取消注释 STDIO 代码 (在它上面)
- 在
-
构建和运行
pnpm build node dist/index.cjs
或者
pnpm dev # 启动服务器和检查器
-
与 Claude Desktop 集成
pnpm add-claude
⚠️ 注意: 这将覆盖你现有的 Claude Desktop 配置。
这种配置 claude desktop 的方式是标准的。生成的 json 也可以在 cursor 等中使用!
-
手动集成 对于其他工具,使用以下命令:
node /path/to/your/project/dist/index.cjs
或者
pnpm cmd # 这会直接使用 pwd 给你 node .../dist/index.cjs 命令
SSE 模式 (HTTP/SSE 通信)
此模式非常适合基于 Web 的工具和远程部署。
-
配置服务器
- 在
src/index.ts
中:- 保持 Express/SSE 代码启用 (在底部)
- 注释掉 STDIO 代码 (在它上面)
- 在
-
本地开发
pnpm dev
服务器将在以下位置可用:
- 主端点: http://127.0.0.1:3001
- SSE 端点: http://127.0.0.1:3001/sse
- 测试端点: http://127.0.0.1:3001/test
- 检查器: http://127.0.0.1:6274
-
本地 Docker 测试 需要 docker compose override 才能实际暴露端口。当部署到像 coolify 这样的东西时,你不需要它,因为 traefik 会处理它。
docker compose -f docker-compose.yaml -f docker-compose.local.yaml up
-
生产环境部署 (例如,Coolify)
- 让你的 IDE 更新 src/index.html 以匹配你的服务器描述。
- 将服务器部署到你喜欢的平台
- 重要: 在 Coolify 的高级设置中:
- 禁用 GZIP 压缩 (这会终止 SSE 流)
- 确保端口 3001 已正确暴露 -> 设置域名时,请执行以下操作:https://your-domain.com:3001,这告诉 traefik 绑定到端口 3001。
- 配置服务器以侦听所有接口 (0.0.0.0) (已完成)
-
使用远程服务器 部署后,你可以使用以下命令连接到服务器:
npx -y mcp-remote https://your-domain.com/sse
你可以将此粘贴为命令,并将 "node .../dist/index.cjs" 替换为此命令。
项目结构
src/index.ts
- 主要服务器实现src/low-level-index.ts
- 使用底层 API 的替代实现dist/
- 编译后的输出目录
服务器功能
回显工具
一个简单的工具,用于回显输入消息:
server.tool("echo", { message: z.string() }, async ({ message }) => ({
content: [{ type: "text", text: `Tool echo: ${message}` }],
}));
回显资源
可以通过 URI 访问的资源:
server.resource(
"echo",
new ResourceTemplate("echo://{message}", { list: undefined }),
async (uri, { message }) => ({
contents: [
{
uri: uri.href,
text: `Resource echo: ${message}`,
},
],
})
);
回显提示词
用于处理消息的提示词模板:
server.prompt("echo", { message: z.string() }, ({ message }) => ({
messages: [
{
role: "user",
content: {
type: "text",
text: `Please process this message: ${message}`,
},
},
],
}));
实现建议
调试消息
可以使用 server.server.sendLoggingMessage
方法发送调试消息,以提供服务器操作的可见性。
基本用法
server.server.sendLoggingMessage({
level: "info",
data: "Starting server...",
});
这允许你:
- 实时跟踪服务器操作
- 在开发期间调试问题
- 监控生产环境中的服务器状态
你可以在检查器的右下角看到它们!
环境变量
对于服务器端环境变量 (开发者提供,非用户特定):
-
使用 Docker Compose
# docker-compose.yaml services: mmcp-server: environment: - API_KEY=${API_KEY} - DATABASE_URL=${DATABASE_URL}
这允许你:
- 在你的 shell 中设置变量:
export API_KEY=your-key
- 使用 Docker Compose 将自动加载的
.env
文件
- 在你的 shell 中设置变量:
-
在代码中访问
const apiKey = process.env.API_KEY; const dbUrl = process.env.DATABASE_URL;
-
本地开发
- 在你的项目根目录中创建一个
.env
文件:API_KEY=sk-123
- 将
.env
添加到.gitignore
以确保密钥安全 - 使用环境变量运行开发服务器:
pnpm dev
- 在你的项目根目录中创建一个
-
生产环境部署
- 在你的部署平台 (例如,Coolify) 中设置环境变量
- 永远不要将敏感值提交到版本控制
最佳实践
-
错误处理
- 始终为环境变量实现适当的错误处理
- 为缺少必需的变量提供有意义的错误消息
-
类型安全
- 使用 TypeScript 定义环境变量类型
- 考虑使用像
zod
这样的验证库进行运行时检查
-
安全性
- 永远不要将敏感环境变量暴露给客户端
- 为开发和生产使用不同的变量集
许可证
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。