VRChat MCP Server

by sawa-zen
Verified
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp' import { VRChatClient } from '../VRChatClient' import { z } from 'zod' export const createFavoritesTools = (server: McpServer, vrchatClient: VRChatClient) => { server.tool( 'vrchat_list_favorite_groups', 'Returns a list of favorite groups owned by a user.', { n: z.number().min(1).max(100).optional().default(60), offset: z.number().min(0).optional(), ownerId: z.string().optional(), }, async (params) => { try { await vrchatClient.auth() const favorites = await vrchatClient.favoritesApi.getFavoriteGroups( params.n, params.offset, params.ownerId, ) return { content: [{ type: 'text', text: JSON.stringify(favorites.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to list favorite groups: ' + error }] } } } ) server.tool( // Name 'vrchat_list_favorites', // Description 'Returns a list of favorites.', { n: z.number().min(1).max(100).optional().default(60), offset: z.number().min(0).optional(), type: z.string().optional(), tag: z.string().optional(), }, async (params) => { try { await vrchatClient.auth() const favorites = await vrchatClient.favoritesApi.getFavorites( params.n, params.offset, params.type, params.tag, ) return { content: [{ type: 'text', text: JSON.stringify(favorites.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to list favorites: ' + error }] } } } ) }