# MCP Demo Server

这是一个简单的MCP（Model Context Protocol）服务器示例，提供了基本的工具和资源。

## 功能

### 工具 (Tools)
- **add**: 加法工具
  - 参数: `a` (数字), `b` (数字)
  - 返回: 两个数字的和

### 资源 (Resources)
- **greeting**: 动态问候生成器
  - URI模式: `greeting://{name}`
  - 返回: 个性化的问候语

## 安装和运行

1. 安装依赖：
```bash
npm install
```

2. 运行服务器：
```bash
node server.js
```

## 客户端配置

### 方法1: 使用配置文件

创建 `mcp-config.json` 文件：
```json
{
  "mcpServers": {
    "demo-server": {
      "command": "node",
      "args": ["server.js"],
      "cwd": "E:\\work\\python\\taobao-mcp-dev"
    }
  }
}
```

### 方法2: 环境变量配置

设置环境变量：
```bash
# Windows PowerShell
$env:MCP_SERVERS='{"demo-server":{"command":"node","args":["server.js"],"cwd":"E:\\work\\python\\taobao-mcp-dev"}}'

# 或者添加到系统环境变量
```

### 方法3: 在Cursor中配置

1. 打开Cursor设置
2. 找到MCP配置部分
3. 添加服务器配置：
```json
{
  "command": "node",
  "args": ["server.js"],
  "cwd": "E:\\work\\python\\taobao-mcp-dev"
}
```

## 测试服务器

### 测试加法工具
```javascript
// 调用加法工具
const result = await mcp.callTool("add", { a: 5, b: 3 });
console.log(result); // 输出: 8
```

### 测试问候资源
```javascript
// 访问问候资源
const greeting = await mcp.getResource("greeting://Alice");
console.log(greeting); // 输出: "Hello, Alice!"
```

## 故障排除

1. **模块类型警告**: 确保 `package.json` 中包含 `"type": "module"`
2. **路径问题**: 确保 `cwd` 路径正确指向项目目录
3. **权限问题**: 确保有执行 `node` 命令的权限

## 扩展

要添加新的工具，在 `server.js` 中使用 `server.registerTool()`：

```javascript
server.registerTool("toolName",
  {
    title: "工具标题",
    description: "工具描述",
    inputSchema: { param1: z.string(), param2: z.number() }
  },
  async ({ param1, param2 }) => ({
    content: [{ type: "text", text: "结果" }]
  })
);
```

要添加新的资源，使用 `server.registerResource()`：

```javascript
server.registerResource(
  "resourceName",
  new ResourceTemplate("resource://{param}", { list: undefined }),
  { 
    title: "资源标题",
    description: "资源描述"
  },
  async (uri, { param }) => ({
    contents: [{
      uri: uri.href,
      text: `资源内容: ${param}`
    }]
  })
);
``` 