---
title: '创建资源'
description: '创建新的 MCP 服务器、用户和组'
---

## 创建服务器

### 端点

```http
POST /api/servers
```

### 请求

#### 请求头

```http
Content-Type: application/json
Authorization: Bearer YOUR_JWT_TOKEN
```

#### 请求体

```json
{
  "name": "文件系统服务器",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
  "env": {
    "NODE_ENV": "production",
    "DEBUG": "mcp:*",
    "MAX_FILES": "1000"
  },
  "cwd": "/app/workspace",
  "timeout": 30000,
  "retries": 3,
  "enabled": true,
  "description": "提供文件系统访问的 MCP 服务器",
  "tags": ["filesystem", "production"],
  "healthCheck": {
    "enabled": true,
    "interval": 30000,
    "timeout": 5000,
    "retries": 3,
    "endpoint": "/health"
  },
  "resources": {
    "memory": {
      "limit": "512MB",
      "warning": "400MB"
    },
    "cpu": {
      "limit": "50%"
    }
  },
  "logging": {
    "level": "info",
    "file": "/var/log/mcphub/server.log",
    "maxSize": "100MB",
    "maxFiles": 5
  }
}
```

#### 必填字段

- `name` (string): 服务器唯一名称
- `command` (string): 执行命令
- `args` (array): 命令参数数组

#### 可选字段

- `env` (object): 环境变量键值对
- `cwd` (string): 工作目录
- `timeout` (number): 超时时间（毫秒）
- `retries` (number): 重试次数
- `enabled` (boolean): 是否启用（默认 true）
- `description` (string): 服务器描述
- `tags` (array): 标签数组
- `healthCheck` (object): 健康检查配置
- `resources` (object): 资源限制配置
- `logging` (object): 日志配置

### 响应

#### 成功响应 (201 Created)

```json
{
  "success": true,
  "data": {
    "id": "server-abc123",
    "name": "文件系统服务器",
    "status": "stopped",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
    "env": {
      "NODE_ENV": "production",
      "DEBUG": "mcp:*",
      "MAX_FILES": "1000"
    },
    "cwd": "/app/workspace",
    "timeout": 30000,
    "retries": 3,
    "enabled": true,
    "description": "提供文件系统访问的 MCP 服务器",
    "tags": ["filesystem", "production"],
    "healthCheck": {
      "enabled": true,
      "interval": 30000,
      "timeout": 5000,
      "retries": 3,
      "endpoint": "/health",
      "status": "unknown"
    },
    "resources": {
      "memory": {
        "limit": "512MB",
        "warning": "400MB",
        "current": "0MB"
      },
      "cpu": {
        "limit": "50%",
        "current": "0%"
      }
    },
    "logging": {
      "level": "info",
      "file": "/var/log/mcphub/server.log",
      "maxSize": "100MB",
      "maxFiles": 5,
      "currentSize": "0MB"
    },
    "createdAt": "2024-01-01T12:00:00Z",
    "updatedAt": "2024-01-01T12:00:00Z",
    "createdBy": "user123"
  },
  "message": "服务器创建成功"
}
```

#### 错误响应

**400 Bad Request - 参数错误**

```json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "请求数据验证失败",
    "details": [
      {
        "field": "name",
        "message": "服务器名称不能为空"
      },
      {
        "field": "command",
        "message": "执行命令不能为空"
      }
    ]
  }
}
```

**409 Conflict - 名称冲突**

```json
{
  "success": false,
  "error": {
    "code": "RESOURCE_CONFLICT",
    "message": "服务器名称已存在",
    "details": {
      "field": "name",
      "value": "文件系统服务器",
      "conflictingResourceId": "server-xyz789"
    }
  }
}
```

### 示例

#### cURL

```bash
curl -X POST http://localhost:3000/api/servers \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "name": "文件系统服务器",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/data"],
    "env": {
      "NODE_ENV": "production"
    },
    "description": "生产环境文件系统服务器"
  }'
```

#### JavaScript

```javascript
const response = await fetch('/api/servers', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${token}`,
  },
  body: JSON.stringify({
    name: '文件系统服务器',
    command: 'npx',
    args: ['-y', '@modelcontextprotocol/server-filesystem', '/data'],
    env: {
      NODE_ENV: 'production',
    },
    description: '生产环境文件系统服务器',
  }),
});

const result = await response.json();
if (result.success) {
  console.log('服务器创建成功:', result.data);
} else {
  console.error('创建失败:', result.error);
}
```

#### Python

```python
import requests

response = requests.post(
    'http://localhost:3000/api/servers',
    headers={
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {token}'
    },
    json={
        'name': '文件系统服务器',
        'command': 'npx',
        'args': ['-y', '@modelcontextprotocol/server-filesystem', '/data'],
        'env': {
            'NODE_ENV': 'production'
        },
        'description': '生产环境文件系统服务器'
    }
)

if response.status_code == 201:
    result = response.json()
    print('服务器创建成功:', result['data'])
else:
    error = response.json()
    print('创建失败:', error['error'])
```

## 创建用户

### 端点

```http
POST /api/users
```

### 请求体

```json
{
  "username": "newuser",
  "email": "user@example.com",
  "password": "SecurePassword123!",
  "role": "user",
  "groups": ["dev-team", "qa-team"],
  "profile": {
    "firstName": "张",
    "lastName": "三",
    "department": "开发部",
    "title": "软件工程师",
    "phone": "+86-138-0013-8000",
    "location": "北京"
  },
  "preferences": {
    "language": "zh-CN",
    "timezone": "Asia/Shanghai",
    "notifications": {
      "email": true,
      "slack": false,
      "browser": true
    }
  },
  "enabled": true
}
```

### 响应 (201 Created)

```json
{
  "success": true,
  "data": {
    "id": "user-abc123",
    "username": "newuser",
    "email": "user@example.com",
    "role": "user",
    "groups": [
      {
        "id": "dev-team",
        "name": "开发团队",
        "role": "member"
      }
    ],
    "profile": {
      "firstName": "张",
      "lastName": "三",
      "fullName": "张三",
      "department": "开发部",
      "title": "软件工程师",
      "phone": "+86-138-0013-8000",
      "location": "北京",
      "avatar": null
    },
    "preferences": {
      "language": "zh-CN",
      "timezone": "Asia/Shanghai",
      "notifications": {
        "email": true,
        "slack": false,
        "browser": true
      }
    },
    "enabled": true,
    "lastLoginAt": null,
    "createdAt": "2024-01-01T12:00:00Z",
    "updatedAt": "2024-01-01T12:00:00Z"
  },
  "message": "用户创建成功"
}
```

## 创建组

### 端点

```http
POST /api/groups
```

### 请求体

```json
{
  "name": "dev-team",
  "displayName": "开发团队",
  "description": "前端和后端开发人员",
  "parentGroup": null,
  "permissions": {
    "servers": {
      "create": false,
      "read": true,
      "update": true,
      "delete": false,
      "execute": true
    },
    "tools": {
      "filesystem": {
        "read": true,
        "write": true,
        "paths": ["/app/data", "/tmp"]
      },
      "web-search": {
        "enabled": true,
        "maxQueries": 100
      }
    },
    "monitoring": {
      "viewLogs": true,
      "viewMetrics": true,
      "exportData": false
    }
  },
  "settings": {
    "autoAssign": false,
    "maxMembers": 50,
    "requireApproval": true,
    "sessionTimeout": "8h"
  },
  "quotas": {
    "requests": {
      "daily": 1000,
      "monthly": 30000
    },
    "storage": {
      "maxSize": "10GB"
    }
  }
}
```

### 响应 (201 Created)

```json
{
  "success": true,
  "data": {
    "id": "group-abc123",
    "name": "dev-team",
    "displayName": "开发团队",
    "description": "前端和后端开发人员",
    "parentGroup": null,
    "permissions": {
      "servers": {
        "create": false,
        "read": true,
        "update": true,
        "delete": false,
        "execute": true
      },
      "tools": {
        "filesystem": {
          "read": true,
          "write": true,
          "paths": ["/app/data", "/tmp"]
        },
        "web-search": {
          "enabled": true,
          "maxQueries": 100
        }
      },
      "monitoring": {
        "viewLogs": true,
        "viewMetrics": true,
        "exportData": false
      }
    },
    "settings": {
      "autoAssign": false,
      "maxMembers": 50,
      "requireApproval": true,
      "sessionTimeout": "8h"
    },
    "quotas": {
      "requests": {
        "daily": 1000,
        "monthly": 30000
      },
      "storage": {
        "maxSize": "10GB"
      }
    },
    "memberCount": 0,
    "serverCount": 0,
    "createdAt": "2024-01-01T12:00:00Z",
    "updatedAt": "2024-01-01T12:00:00Z",
    "createdBy": "admin"
  },
  "message": "组创建成功"
}
```

## 批量创建

### 批量创建服务器

```http
POST /api/servers/bulk
```

#### 请求体

```json
{
  "servers": [
    {
      "name": "dev-server-1",
      "command": "python",
      "args": ["-m", "mcp_server"],
      "env": { "ENV": "development" }
    },
    {
      "name": "dev-server-2",
      "command": "node",
      "args": ["server.js"],
      "env": { "ENV": "development" }
    }
  ],
  "options": {
    "skipExisting": true,
    "validateAll": true,
    "startAfterCreate": false
  }
}
```

#### 响应 (201 Created)

```json
{
  "success": true,
  "data": {
    "created": [
      {
        "id": "server-1",
        "name": "dev-server-1",
        "status": "created"
      },
      {
        "id": "server-2",
        "name": "dev-server-2",
        "status": "created"
      }
    ],
    "skipped": [],
    "failed": [],
    "summary": {
      "total": 2,
      "created": 2,
      "skipped": 0,
      "failed": 0
    }
  },
  "message": "批量创建完成，成功创建 2 个服务器"
}
```

## 验证

### 预验证创建请求

在实际创建资源之前验证请求：

```http
POST /api/servers/validate
```

#### 请求体

```json
{
  "name": "test-server",
  "command": "invalid-command",
  "args": []
}
```

#### 响应

```json
{
  "success": false,
  "data": {
    "valid": false,
    "errors": [
      {
        "field": "command",
        "message": "命令 'invalid-command' 不存在或无法执行"
      }
    ],
    "warnings": [
      {
        "field": "args",
        "message": "参数数组为空，服务器可能无法正常启动"
      }
    ]
  }
}
```

有关更多 API 端点信息，请参阅 [获取资源](/zh/api-reference/endpoint/get)、[删除资源](/zh/api-reference/endpoint/delete) 和 [WebHooks](/zh/api-reference/endpoint/webhook) 文档。
