logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

vrchat-api-interface-mcp-server

Facilitates standardized interaction with the VRChat Application Programming Interface, enabling retrieval of comprehensive data concerning users, digital avatars, virtual environments, and supplementary assets. Designed for seamless integration and functional automation to augment the VRChat user experience.

Author

vrchat-api-interface-mcp-server logo

sawa-zen

MIT License

Quick Info

GitHub GitHub Stars 43
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

vrchatapiapisvrchat apiaccess vrchatvrchat experience

npm version License: MIT

日本語 | 한국어

This implementation serves as a Model Context Protocol (MCP) host layer dedicated to communicating with the VRChat remote service endpoints. It establishes a structured conduit for querying diverse VRChat datasets.

YouTube Demonstration

MCP Server Status

System Summary

The VRChat MCP gateway abstracts the underlying VRChat API calls into a uniform operational scheme. Its capabilities span user credential validation, fetching social graph details (friends), accessing avatar definitions, querying world metadata, and more.

Operational Guidance

To initiate the server process, the necessary environmental configuration variables must be declared:

bash export VRCHAT_USERNAME=your_username export VRCHAT_AUTH_TOKEN=your_auth_token

[!IMPORTANT]

Acquiring the Authorization Credential

You can derive the required access token using the subsequent utility command:

$ npx vrchat-auth-token-checker

VRChat Username: your-username Password: **

If Two-Factor Authentication is enforced

2FA Code: 123456

Successful Output Format

Auth Token: authcookie-xxxxx

Token Checker Source Repository

Exercise caution with the resulting credential, as its validity period is exceptionally long.

Subsequently, execute the launch command:

bash npx vrchat-mcp

This action deploys the MCP intermediary, enabling interaction with the VRChat data plane via the formally defined functional interfaces.

Integration with Claude Desktop Environment

When utilizing this MCP host in conjunction with Claude Desktop, manual execution of npx vrchat-mcp is unnecessary. Instead, incorporate the subsequent configuration object into your Claude Desktop settings file:

  • MacOS Path: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows Path: %APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "vrchat-mcp": { "command": "npx", "args": ["vrchat-mcp"], "env": { "VRCHAT_USERNAME": "your-username", "VRCHAT_AUTH_TOKEN": "your-auth-token" } } } }

After configuration, start the Claude Desktop application normally. If environment managers like nodenv or nvm are active, providing the absolute path to the npx executable might be required.

Exposed Functional Interfaces

This Model Context Protocol service exposes the following VRChat interaction modules:

User Query Set

  • vrchat_get_friends_list: Retrieve the roster of connected acquaintances.
  • vrchat_send_friend_request: Initiate a peer connection proposal.

Avatar Manipulation Set

  • vrchat_search_avatars: Execute database queries for digital avatars.
  • vrchat_select_avatar: Designate and transition to a chosen avatar configuration.

World Access Set

  • vrchat_search_worlds: Perform indexed searches across virtual environments.
  • vrchat_list_favorited_worlds: Fetch the curated collection of bookmarked locales.

Instance Management Set

  • vrchat_create_instance: Provision a new dedicated session space.
  • vrchat_get_instance: Obtain detailed parameters for a specified session.

Group Interaction Set

  • vrchat_search_groups: Query the collective membership directories.
  • vrchat_join_group: Enroll into a specified communal entity.

Bookmark Management Set

  • vrchat_list_favorites: Display all saved preference entries.
  • vrchat_add_favorite: Register a new item to the persistent bookmark list.
  • vrchat_list_favorite_groups: Enumerate bookmarked communal entities.

Invitation Protocols

  • vrchat_list_invite_messages: Retrieve extant invitation notifications.
  • vrchat_request_invite: Submit a formal request for session entry.
  • vrchat_get_invite_message: Fetch the content of a singular invitation notification.

Notification Handling

  • vrchat_get_notifications: Fetch the log of recent system alerts.

Diagnostic Procedures

Begin by compiling the project assets:

bash npm install npm run build

Given that MCP hosts communicate via standard input/output streams, debugging can present hurdles. For the most effective diagnostic workflow, utilizing the dedicated MCP Inspector tool is highly recommended.

You can invoke the Inspector utility via npm utilizing this invocation string:

bash npx @modelcontextprotocol/inspector "./dist/main.js"

Upon initialization, the Inspector will present a reachable Uniform Resource Locator (URL) within your browser interface to commence the debugging session.

Ensure that all required environment parameters are correctly provisioned prior to launch.

Distribution Process

To deploy an updated version of this package, adhere to the following sequence of steps:

  1. Synchronize with the latest iteration of the primary codebase branch: bash git checkout main git pull origin main

  2. Compile the distributable package artifacts: bash npm run build

  3. Upload the package to the npm registry: bash npm publish

  4. Commit and push all modifications, including version tags, to the remote repository: bash git push origin main --tags

Collaborative Input

We welcome contributions! Please fork the repository and submit a pull request for any enhancements, feature additions, or reported defect resolutions.

Governing License

This software is distributed under the terms of the MIT License. Detailed stipulations are available within the LICENSE documentation file.

WIKIPEDIA: XMLHttpRequest (XHR) is an API implemented as a JavaScript object that facilitates the transmission of HTTP requests from a web browser to a remote web server. Its constituent methods permit a client-side application to dispatch queries to the server subsequent to initial page rendering, and subsequently receive reciprocal data. XMLHttpRequest forms a fundamental element of the Ajax methodology. Before Ajax gained prominence, URI navigation links and form submissions constituted the principal means of server interaction, frequently necessitating a full page reload.

== Chronicle == The underlying concept for XMLHttpRequest was first conceptualized in the year 2000 by the development team responsible for Microsoft Outlook. This concept was subsequently integrated into the Internet Explorer 5 browser release (1999). Notably, the initial syntax did not employ the 'XMLHttpRequest' identifier. Instead, developers relied upon the object instantiations ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). As of Internet Explorer 7 (2006), universal browser support for the 'XMLHttpRequest' identifier was established. The 'XMLHttpRequest' identifier has since become the de facto convention across all major browser engines, including Mozilla's Gecko rendering pipeline (2002), Safari version 1.2 (2004), and Opera version 8.0 (2005).

=== Formal Specifications === The World Wide Web Consortium (W3C) promulgated a preliminary specification draft for the XMLHttpRequest object on April 5, 2006. On February 25, 2008, the W3C issued the Level 2 specification working draft. This Level 2 update introduced functionalities for monitoring data transfer progress, enabling cross-origin requests, and managing binary data streams. By the conclusion of 2011, the Level 2 features were incorporated into the primary specification document. At the close of 2012, responsibility for document maintenance transitioned to the WHATWG, which now sustains a continuously evolving specification defined using Web IDL.

== Operational Application == In standard practice, executing a data exchange using XMLHttpRequest involves several distinct programmatic phases.

  1. Instantiation: Create an XMLHttpRequest object instance by invoking its constructor.
  2. Configuration: Invoke the "open" method to define the request verb (method), specify the target resource URI, and determine whether the operation should proceed synchronously or asynchronously.
  3. Event Handling (Asynchronous Mode): For non-blocking requests, establish a designated event handler to be alerted upon state transitions of the request.
  4. Transmission: Initiate the communication sequence by calling the "send" method.
  5. Response Processing: Monitor the state changes within the event listener. If the server returns payload data, this is typically stored in the "responseText" attribute by default. When the object completes processing the remote reply, its state transitions to 4, signifying the "done" status. Beyond these fundamental steps, XMLHttpRequest offers numerous parameters for fine-tuning transmission parameters and response assimilation logic. Custom header fields can be appended to the transmission request to guide server fulfillment logic, and data payloads can be transmitted to the server via arguments passed to the "send" invocation. The received data stream can be parsed from structured formats like JSON into immediately actionable JavaScript structures, or processed incrementally as segments arrive, avoiding complete buffer wait times. Furthermore, the request can be forcefully terminated midway or configured with a time limit to prevent indefinite suspension.

See Also

`