users.js•2.46 kB
import { users } from '../data/mockData.js';
export class UserService {
static getAll(filters = {}) {
let filteredUsers = users;
if (filters.role) {
filteredUsers = filteredUsers.filter(user => user.role === filters.role);
}
return {
success: true,
data: filteredUsers,
total: filteredUsers.length
};
}
static getById(id) {
const user = users.find(u => u.id === id);
if (!user) {
return {
success: false,
message: 'User not found'
};
}
return {
success: true,
data: user
};
}
static create(userData) {
const { name, email, role = 'user' } = userData;
if (!name || !email) {
return {
success: false,
message: 'Name and email are required'
};
}
const newUser = {
id: Math.max(...users.map(u => u.id)) + 1,
name,
email,
role
};
users.push(newUser);
return {
success: true,
message: 'User created successfully',
data: newUser
};
}
static search(query) {
const searchTerm = query.toLowerCase();
return users.filter(user =>
user.name.toLowerCase().includes(searchTerm) ||
user.email.toLowerCase().includes(searchTerm)
);
}
}
// MCP Tool Schemas
export const userToolSchemas = [
{
name: 'get_users',
description: 'Get all users from the mock database',
inputSchema: {
type: 'object',
properties: {
role: {
type: 'string',
description: 'Filter users by role (admin, user, moderator)',
enum: ['admin', 'user', 'moderator']
}
}
}
},
{
name: 'get_user',
description: 'Get a specific user by ID',
inputSchema: {
type: 'object',
properties: {
id: {
type: 'number',
description: 'User ID'
}
},
required: ['id']
}
},
{
name: 'create_user',
description: 'Create a new user',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'User name'
},
email: {
type: 'string',
description: 'User email'
},
role: {
type: 'string',
description: 'User role',
enum: ['admin', 'user', 'moderator'],
default: 'user'
}
},
required: ['name', 'email']
}
}
];