Skip to main content
Glama
sawa-zen

VRChat MCP Server

vrchat_create_instance

Create a new VRChat world instance with customizable privacy settings, region selection, and access controls for multiplayer sessions.

Instructions

Create a new instance of a world.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
worldIdYes
typeYes
regionNous
ownerIdNo
roleIdsNo
groupAccessTypeNo
queueEnabledNo
closedAtNo
canRequestInviteNo
hardCloseNo
inviteOnlyNo

Implementation Reference

  • Executes the tool logic: authenticates VRChat client, calls instancesApi.createInstance with parameters, returns JSON stringified instance data or error message.
    async (params) => {
      try {
        await vrchatClient.auth()
        const instance = await vrchatClient.instancesApi.createInstance({
          worldId: params.worldId,
          type: params.type,
          region: params.region,
          ownerId: params.ownerId,
          roleIds: params.roleIds,
          groupAccessType: params.groupAccessType,
          queueEnabled: params.queueEnabled,
          closedAt: params.closedAt,
          canRequestInvite: params.canRequestInvite,
          hardClose: params.hardClose,
          inviteOnly: params.inviteOnly,
        })
        return {
          content: [{
            type: 'text',
            text: JSON.stringify(instance.data, null, 2)
          }]
        }
      } catch (error) {
        return {
          content: [{
            type: 'text',
            text: 'Failed to create instance: ' + error
          }]
        }
      }
    }
  • Zod input schema defining parameters for creating a VRChat instance, including worldId, instance type, region, and optional fields like ownerId, roles, etc.
    {
      worldId: z.string(),
      type: z.enum(['public', 'hidden', 'friends', 'private', 'group']),
      region: z.enum(['us', 'use', 'eu', 'jp', 'unknown']).default('us'),
      ownerId: z.string().nullable().optional(),
      roleIds: z.array(z.string()).optional(),
      groupAccessType: z.enum(['members', 'plus', 'public']).optional(),
      queueEnabled: z.boolean().optional(),
      closedAt: z.string().optional(), // date-time format
      canRequestInvite: z.boolean().optional(),
      hardClose: z.boolean().optional(),
      inviteOnly: z.boolean().optional(),
    },
  • Full server.tool registration call for 'vrchat_create_instance', including name, description, input schema, and inline handler function.
    server.tool(
      // Name
      'vrchat_create_instance',
      // Description
      'Create a new instance of a world.',
      {
        worldId: z.string(),
        type: z.enum(['public', 'hidden', 'friends', 'private', 'group']),
        region: z.enum(['us', 'use', 'eu', 'jp', 'unknown']).default('us'),
        ownerId: z.string().nullable().optional(),
        roleIds: z.array(z.string()).optional(),
        groupAccessType: z.enum(['members', 'plus', 'public']).optional(),
        queueEnabled: z.boolean().optional(),
        closedAt: z.string().optional(), // date-time format
        canRequestInvite: z.boolean().optional(),
        hardClose: z.boolean().optional(),
        inviteOnly: z.boolean().optional(),
      },
      async (params) => {
        try {
          await vrchatClient.auth()
          const instance = await vrchatClient.instancesApi.createInstance({
            worldId: params.worldId,
            type: params.type,
            region: params.region,
            ownerId: params.ownerId,
            roleIds: params.roleIds,
            groupAccessType: params.groupAccessType,
            queueEnabled: params.queueEnabled,
            closedAt: params.closedAt,
            canRequestInvite: params.canRequestInvite,
            hardClose: params.hardClose,
            inviteOnly: params.inviteOnly,
          })
          return {
            content: [{
              type: 'text',
              text: JSON.stringify(instance.data, null, 2)
            }]
          }
        } catch (error) {
          return {
            content: [{
              type: 'text',
              text: 'Failed to create instance: ' + error
            }]
          }
        }
      }
    )
  • src/main.ts:32-33 (registration)
    Invocation of createInstancesTools in the main server setup, which registers the vrchat_create_instance tool.
    createWorldsTools(server, vrchatClient)
    createInstancesTools(server, vrchatClient)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sawa-zen/vrchat-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server