VRChat MCP Server
by sawa-zen
Verified
# VRChat MCP(Model Context Protocol)

This project is a Model Context Protocol (MCP) server for interacting with the VRChat API. It allows you to retrieve various information from VRChat using a standardized protocol.
<a href="https://glama.ai/mcp/servers/u763zoyi5a">
<img width="380" height="200" src="https://glama.ai/mcp/servers/u763zoyi5a/badge" />
</a>
## Overview
The VRChat MCP server provides a way to access VRChat's API endpoints in a structured manner. It supports a wide range of functionalities, including user authentication, retrieving user and friend information, accessing avatar and world data, and more.
## Usage
To start the server, ensure you have the necessary environment variables set:
```bash
export VRCHAT_USERNAME=your_username
export VRCHAT_PASSWORD=your_password
export VRCHAT_TOTP_SECRET=your_totp_secret
export VRCHAT_EMAIL=your_email@example.com
```
> [!NOTE]
> #### Obtain your TOTP secret
> 1. Visit the [VRChat Profile](https://vrchat.com/home/profile) and enable Two-factor authentication.
> 2. Decode the displayed QR code to get a string like `otpauth://totp/VRChat:your@email.com?secret=XXXXXXXXXXXXXXXXXXX&issuer=VRChat`.
> 3. Use the `XXXXXXXXXXXXXXXXXXX` part as your TOTP secret.
>
> **This method may have security concerns, so proceed with caution.**
Then, run the following command:
```bash
npx vrchat-mcp
```
This will launch the MCP server, allowing you to interact with the VRChat API through the defined tools.
## Usage with Claude Desktop
To use this MCP server with Claude Desktop, you do not need to run `npx vrchat-mcp` manually. Instead, add the following configuration to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"vrchat-mcp": {
"command": "npx",
"args": ["vrchat-mcp"],
"env": {
"VRCHAT_USERNAME": "your-username",
"VRCHAT_PASSWORD": "your-password",
"VRCHAT_TOTP_SECRET": "your-totp-secret",
"VRCHAT_EMAIL": "your-email@example.com"
}
}
}
}
```
Then, start Claude Desktop as usual. If you have to use nodenv or nvm, you may need to specify the full path to the `npx` command.
## Supported VRChat APIs
This is a list of GET endpoints from the VRChat API that our Model Context Protocol server supports or plans to support. Check the boxes as features are implemented.
### Authentication and User Information
- [x] Get current user info (GET /auth/user)
- [ ] Search users (GET /users)
- [ ] Get specific user profile (GET /users/{userId})
- [x] Get friends list (GET /auth/user/friends)
- [ ] Get online friends (GET /auth/user/friends/active)
- [ ] Get user groups (GET /users/{userId}/groups)
- [ ] Get player moderations (GET /auth/user/playermoderated)
- [ ] Get user status (GET /users/{userId}/status)
### Avatar Related
- [ ] Get own avatars (GET /avatars)
- [ ] Get favorite avatars (GET /avatars/favorites)
- [ ] Search avatars (GET /avatars/search/{searchQuery})
- [ ] Get specific avatar details (GET /avatars/{avatarId})
- [ ] Get public avatars (GET /avatars/public)
### World Related
- [ ] Get worlds list (GET /worlds)
- [ ] Get active worlds (GET /worlds/active)
- [ ] Get recently visited worlds (GET /worlds/recent)
- [ ] Get favorite worlds (GET /worlds/favorites)
- [ ] Search worlds (GET /worlds/search/{searchQuery})
- [ ] Get specific world details (GET /worlds/{worldId})
- [ ] Get world instances (GET /worlds/{worldId}/{instanceId})
- [ ] Get public worlds (GET /worlds/public)
### Instance Related
- [ ] Get instance info (GET /instances/{worldId}:{instanceId})
- [ ] Get instance attendees (GET /instances/{worldId}:{instanceId}/join)
- [ ] Get instance short name (GET /instances/{worldId}:{instanceId}/shortName)
### File Related
- [ ] Get file info (GET /file/{fileId})
- [ ] Get file download info (GET /file/{fileId}/download)
- [ ] Get file status (GET /file/{fileId}/status)
### Group Related
- [ ] Get groups list (GET /groups)
- [ ] Get specific group info (GET /groups/{groupId})
- [ ] Get group members (GET /groups/{groupId}/members)
- [ ] Get group permissions (GET /groups/{groupId}/permissions)
- [ ] Get group requests (GET /groups/{groupId}/requests)
- [ ] Get group invites (GET /groups/{groupId}/invites)
- [ ] Get group bans (GET /groups/{groupId}/bans)
- [ ] Get group galleries (GET /groups/{groupId}/galleries)
- [ ] Get group owned worlds (GET /groups/{groupId}/worlds)
### Notification Related
- [ ] Get notifications list (GET /auth/user/notifications)
- [ ] Get friend requests (GET /user/friendRequests)
- [ ] Get unread notification count (GET /auth/user/notifications/unreadCount)
### Inventory Related
- [ ] Get license types (GET /licenses)
- [ ] Get owned licenses (GET /licenses/own)
- [ ] Get stores list (GET /stores)
### System Related
- [ ] Get API configuration (GET /config)
- [ ] Get API limits (GET /auth/limits)
- [ ] Check system health (GET /health)
- [ ] Get online users count (GET /visits)
- [ ] Get server announcements (GET /announcements)
### Others
- [ ] Get tags list (GET /tags)
- [ ] Get favorite info (GET /favorite)
- [ ] Get invisibles list (GET /auth/user/invisibles)
- [ ] Get moderations (GET /auth/user/moderations)
- [ ] Get favorite groups (GET /favorite/groups)
- [ ] Get favorite group types (GET /favorite/group/types)
## Contributing
Contributions are welcome! Please fork the repository and submit a pull request for any improvements or bug fixes.
## License
This project is licensed under the MIT License. See the LICENSE file for details.