内容
# mcp-server-starter
适用于构建MCP(模型上下文协议)服务器的生产就绪TypeScript模板。适用于Claude Code、Cursor和任何MCP客户端。
## 快速入门
```bash
# 克隆模板
git clone https://github.com/fix2015/mcp-server-starter.git 我的mcp服务器
cd 我的mcp服务器
# 安装依赖项
npm install
# 构建
npm run build
# 运行服务器
npm start
```
## 项目结构
```
src/
index.ts # 服务器入口点 — 注册工具、资源和提示
tools/
example-tool.ts # 工具示例实现(process_text)
resources/
example-resource.ts # 资源示例实现(服务器信息)
```
## 如何添加新工具
在`src/tools/`中创建一个新文件:
```typescript
// src/tools/my-tool.ts
import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export function registerMyTool(server: McpServer): void {
server.tool(
"my_tool_name",
"工具功能的描述",
{
input: z.string().describe("输入参数描述"),
},
async ({ input }) => {
// 您的工具逻辑在此
return {
content: [{ type: "text", text: `结果:${input}` }],
};
}
);
}
```
然后在`src/index.ts`中注册它:
```typescript
import { registerMyTool } from "./tools/my-tool.js";
registerMyTool(server);
```
## 如何添加新资源
在`src/resources/`中创建一个新文件:
```typescript
// src/resources/my-resource.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export function registerMyResource(server: McpServer): void {
server.resource("my-resource", "custom://my-data", async (uri) => {
return {
contents: [
{
uri: uri.href,
mimeType: "application/json",
text: JSON.stringify({ key: "value" }),
},
],
};
});
}
```
然后在`src/index.ts`中注册它:
```typescript
import { registerMyResource } from "./resources/my-resource.js";
registerMyResource(server);
```
## 配置
### Claude Code
添加到您的`claude_desktop_config.json`:
```json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/绝对路径/to/my-mcp-server/dist/index.js"]
}
}
}
```
### 使用环境变量
```json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/绝对路径/to/my-mcp-server/dist/index.js"],
"env": {
"API_KEY": "您的API密钥"
}
}
}
}
```
## 开发
```bash
# 监视模式 — 在文件更改时重新编译
npm run dev
# 使用MCP检查器进行测试
npm run inspect
```
## 包含的示例
| 类型 | 名称 | 描述 |
|----------|----------------|--------------------------------------------------|
| 工具 | `process_text` | 将文本转换为大写并计算字数 |
| 资源 | `server-info` | 以JSON格式返回服务器元数据 |
| 提示 | `summarize` | 为给定主题生成摘要提示 |
## 部署
### 作为本地服务器
构建并将您的MCP客户端配置指向构建的`dist/index.js`。
### 作为npm包
1. 将`package.json`中的`name`更新为您的包名
2. 运行`npm publish`
3. 用户可以运行:`npx 您的包名`
### 使用Docker
```dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY dist/ ./dist/
ENTRYPOINT ["node", "dist/index.js"]
```
```bash
docker build -t 我的mcp服务器 .
docker run -i 我的mcp服务器
```
## 要求
- Node.js >= 18
- TypeScript >= 5.7
## 许可证
MIT