158 lines
3.0 KiB
Markdown
158 lines
3.0 KiB
Markdown
# MCP Demo Server
|
|
|
|
一个使用 TypeScript 构建的 Model Context Protocol (MCP) 服务器示例,展示了如何创建和注册各种工具。
|
|
|
|
## 功能特性
|
|
|
|
此 MCP 服务器提供以下示例工具:
|
|
|
|
| 工具名称 | 描述 |
|
|
|---------|------|
|
|
| `echo` | 回显传入的消息 |
|
|
| `calculator` | 执行基本数学运算(加、减、乘、除) |
|
|
| `get_current_time` | 获取当前日期和时间(支持时区) |
|
|
| `random_number` | 在指定范围内生成随机数 |
|
|
| `string_utils` | 字符串处理工具(大小写转换、反转、计数等) |
|
|
|
|
## 快速开始
|
|
|
|
### 安装依赖
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 编译项目
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
### 运行服务器
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
## 在 VS Code 中使用
|
|
|
|
项目已配置好 `.vscode/mcp.json`,可以直接在 VS Code 中使用此 MCP 服务器:
|
|
|
|
1. 确保已编译项目 (`npm run build`)
|
|
2. 在 VS Code 中打开此项目
|
|
3. MCP 服务器会自动被识别并可用
|
|
|
|
## 配置示例
|
|
|
|
### Claude Desktop 配置
|
|
|
|
将以下内容添加到 Claude Desktop 的配置文件中:
|
|
|
|
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"mcp-demo": {
|
|
"command": "node",
|
|
"args": ["D:\\Projects\\McpDemo\\build\\index.js"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## 工具使用示例
|
|
|
|
### Echo 工具
|
|
```
|
|
输入: { "message": "Hello, MCP!" }
|
|
输出: "Echo: Hello, MCP!"
|
|
```
|
|
|
|
### Calculator 工具
|
|
```
|
|
输入: { "operation": "add", "a": 10, "b": 5 }
|
|
输出: "10 add 5 = 15"
|
|
```
|
|
|
|
### Get Current Time 工具
|
|
```
|
|
输入: { "timezone": "Asia/Shanghai" }
|
|
输出: "Current time: 1/16/2026, 2:30:00 PM"
|
|
```
|
|
|
|
### Random Number 工具
|
|
```
|
|
输入: { "min": 1, "max": 100 }
|
|
输出: "Random number between 1 and 100: 42"
|
|
```
|
|
|
|
### String Utils 工具
|
|
```
|
|
输入: { "operation": "uppercase", "text": "hello world" }
|
|
输出: "HELLO WORLD"
|
|
```
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
McpDemo/
|
|
├── src/
|
|
│ └── index.ts # MCP 服务器主文件
|
|
├── build/ # 编译输出目录
|
|
├── .vscode/
|
|
│ └── mcp.json # VS Code MCP 配置
|
|
├── package.json
|
|
├── tsconfig.json
|
|
└── README.md
|
|
```
|
|
|
|
## 开发指南
|
|
|
|
### 添加新工具
|
|
|
|
在 `src/index.ts` 中使用 `server.registerTool()` 添加新工具:
|
|
|
|
```typescript
|
|
server.registerTool(
|
|
"tool_name",
|
|
{
|
|
description: "工具描述",
|
|
inputSchema: {
|
|
param1: z.string().describe("参数1描述"),
|
|
param2: z.number().describe("参数2描述"),
|
|
},
|
|
},
|
|
async ({ param1, param2 }) => {
|
|
// 工具逻辑
|
|
return {
|
|
content: [
|
|
{
|
|
type: "text",
|
|
text: "结果",
|
|
},
|
|
],
|
|
};
|
|
}
|
|
);
|
|
```
|
|
|
|
### 开发模式
|
|
|
|
使用 watch 模式进行开发:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
## 相关资源
|
|
|
|
- [MCP 官方文档](https://modelcontextprotocol.io/)
|
|
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
|
|
- [MCP 服务器示例](https://github.com/modelcontextprotocol/servers)
|
|
|
|
## 许可证
|
|
|
|
MIT
|