VRChat MCP OSC
VRChat MCP OSC
VRChat MCP OSC使用模型上下文协议 (MCP) 在 AI 助手和 VRChat 之间架起了一座桥梁,实现了虚拟现实环境中 AI 驱动的化身控制和交互。
概述
通过利用 OSC(开放声音控制)与 VRChat 进行通信, VRChat MCP OSC允许 Claude 等 AI 助手:
控制虚拟形象参数和表情
在 VRChat 中发送消息
响应各种VR事件
还有更多——所有这些都通过模型上下文协议提供的高级 API 实现。
Related MCP server: Blender MCP
主要特点
头像控制:操控头像参数和表情
运动控制:直接控制虚拟角色的运动和方向
通信:通过 VRChat 的聊天框发送消息
菜单访问:切换 VRChat 菜单和界面元素
头像信息:查询头像属性及参数
无缝 VRChat 集成:自动检测头像配置
系统要求
Node.js 18 或更高版本
启用 OSC 的 VRChat
Claude Desktop(支持 MCP)
与 Claude Desktop 一起使用
克隆和 npm 链接
git clone https://github.com/Krekun/vrchat-mcp-osc
cd vrchat-mcp-osc
npm link配置 Claude 桌面
通过编辑claude_desktop_config.json文件来配置 Claude Desktop:
{
"mcpServers": {
"vrchat-mcp-osc": {
"command": "npx",
"args": [
"vrchat-mcp-osc"
]
}
}
}命令行选项
该服务器支持各种命令行参数进行定制:
# Claude Desktop configuration
{
"mcpServers": {
"vrchat-mcp-osc": {
"command": "npx",
"args": [
"vrchat-mcp-osc",
"--websocket-port", "8765",
"--websocket-host", "localhost",
"--osc-send-port", "9000",
"--osc-send-ip", "127.0.0.1",
"--osc-receive-port", "9001",
"--osc-receive-ip", "127.0.0.1",
"--debug"
]
}
}
}可用选项
选项 | 描述 | 默认 | 笔记 |
| WebSocket 端口 | 8765 | 对于 WebSocket 通信 |
| WebSocket 主机 | 本地主机 | 对于 WebSocket 通信 |
| OSC发送端口 | 9000 | 发送到 VRChat 的端口 |
| OSC发送IP | 127.0.0.1 | 发送至 VRChat 的地址 |
| OSC接收端口 | 9001 | 用于接收 VRChat 消息的端口 |
| OSC接收IP | 127.0.0.1 | VRChat 接收地址 |
| 启用调试日志记录 | 错误的 | 输出详细日志 |
| 禁用中继服务器 | 错误的 | 不使用中继服务器时 |
可用的 MCP 工具
VRChat MCP OSC 向 AI 助手公开了以下 MCP 工具:
工具名称 | 描述 |
| 检索当前头像的名称 |
| 列出可用的头像参数 |
| 设置特定的头像参数 |
| 触发头像表情 |
| 将头像向特定方向移动 |
| 控制角色的视线方向 |
| 让角色跳跃 |
| 切换 VRChat 菜单 |
| 切换语音功能 |
| 向 VRChat 聊天框发送消息 |
故障排除
常见问题
VRChat 不响应命令
确保在 VRChat 设置中启用 OSC
检查 VRChat 和 MCP 配置之间的 OSC 端口是否匹配
重启 VRChat 和 Claude Desktop
MCP 服务器未启动
确保安装了 Node.js 18+
检查命令行参数是否有错误
尝试使用
--debug标志运行以获取更详细的日志如果直接参数不起作用,请使用
npx vrchat-mcp-osc -- --debug
NPX 执行问题
如果参数无法识别,请尝试使用双破折号格式:
npx vrchat-mcp-osc -- --debug在 Windows 上,尝试以管理员权限在命令提示符中运行
如果您在全局安装时遇到问题,请尝试本地 npm 链接方法
项目结构
vrchat-mcp-osc/
├── packages/
│ ├── mcp-server/ # MCP server implementation (main entry point)
│ ├── relay-server/ # WebSocket to OSC relay
│ ├── types/ # Shared TypeScript interfaces
│ └── utils/ # Common utilities
└── pnpm-workspace.yaml # Workspace configuration发展
从源代码构建
# Clone the repository
git clone https://github.com/Krekun/vrchat-mcp-osc
cd vrchat-mcp-osc
# Install dependencies
pnpm install
# Build all packages
pnpm -r build
# Development mode
pnpm -r dev执照
VRChat MCP OSC 是双重许可的,如下所示:
非商业用途:您可以根据 MIT 许可证条款使用、修改和重新分发该软件。(详情请参阅 MIT 许可证文件。)
商业用途:此软件的商业使用需要单独的商业许可。
如果您根据 MIT 许可证将此软件用于非商业用途,即表示您同意该许可证的条款。商业用户必须获得如上所述的商业许可证。
致谢
VRChat 团队负责 OSC 集成
标准化人工智能接口的模型上下文协议
Anthropic 为 Claude 的 MCP 实现
Available Tools
12 toolsget_avatar_listB
Get a list of available avatars.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a list but doesn't describe what 'available avatars' means (e.g., user-owned, system-default, or all), whether it requires authentication, rate limits, or the format of the returned list. This leaves significant gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It's front-loaded with the core action ('Get a list') and resource ('available avatars'), making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the list contains (e.g., avatar IDs, names, images), how it's structured, or any prerequisites for use. For a tool with no structured data to rely on, this leaves too much undefined for effective agent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but this is appropriate given the schema's completeness. A baseline of 4 is applied as it adequately handles the lack of parameters without introducing confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('list of available avatars'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get_avatar_name' or 'get_avatar_parameters', but the focus on listing all avatars is specific enough for basic clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_avatar_name' (which might retrieve details for a specific avatar) or 'set_avatar' (which modifies avatars). It lacks explicit when/when-not instructions or named alternatives, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_avatar_nameB
Get the name of the current avatar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action. It doesn't reveal any behavioral traits such as whether this is a read-only operation, if it requires authentication, potential rate limits, or what the return format might be (e.g., string, object). This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words or fluff. It is front-loaded and efficiently communicates the core functionality, making it easy for an agent to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what the tool returns (e.g., a string name, an error if no avatar exists), behavioral aspects like safety or side effects, or how it fits with sibling tools. For a tool in a server with multiple avatar-related tools, more context is needed to ensure proper selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it correctly avoids mentioning any inputs. This meets the baseline expectation for a parameterless tool, though it doesn't go beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('name of the current avatar'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_avatar_list' or 'set_avatar', which also deal with avatars, leaving room for potential confusion about when to use this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, nor does it refer to sibling tools like 'get_avatar_list' for listing avatars or 'set_avatar' for modifying them, leaving the agent to infer usage scenarios independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_avatar_parametersB
Get a list of parameters available on the current avatar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation (implying read-only) but doesn't mention permissions, rate limits, error conditions, or what format the returned list has. For a tool with zero annotation coverage, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description provides the basic purpose but lacks important context about what the returned list contains, how it's structured, or any behavioral constraints. For a read operation that returns data, more detail about the output would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description appropriately doesn't add parameter information beyond what's in the schema, maintaining a baseline score of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get a list') and resource ('parameters available on the current avatar'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_avatar_list' or 'set_avatar_parameter', which would be needed for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_avatar_list' or 'set_avatar_parameter'. It mentions 'current avatar' but doesn't explain prerequisites or context for when this tool is appropriate versus other avatar-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpB
Make the avatar jump.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Make the avatar jump' implies an action, it doesn't describe what 'jump' means in this context, whether it's instantaneous or has duration, what visual/audio effects occur, or whether it affects other avatar parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise at just three words, front-loading the essential action without any wasted words. Every element ('Make', 'the avatar', 'jump') earns its place in conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter action tool with no annotations and no output schema, the description provides the basic action but lacks context about what 'jump' entails behaviorally. It's adequate as a minimum viable description but has clear gaps in explaining the tool's effects and behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and the schema already fully documents the empty parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Make') and the target ('the avatar jump'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'move_avatar' or 'set_avatar_parameter' that might involve avatar movement or state changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. There's no mention of prerequisites, timing considerations, or how it differs from similar sibling tools like 'move_avatar' or 'set_avatar_parameter'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_directionC
Turn to look in a specific direction.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | Direction to look | |
| duration | No | Duration in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but lacks critical details: whether this requires specific permissions (e.g., avatar control), if it's reversible, what happens if duration is zero/negative, or what visual/state changes occur. For a mutation tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('Turn to look') and specifies the scope ('in a specific direction'), making it immediately understandable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool (implied by 'Turn') with no annotations and no output schema, the description is insufficient. It doesn't explain what 'looking' entails (e.g., camera rotation, avatar head turn), success/failure conditions, or return values, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter documentation in the schema itself. The description adds no additional meaning about parameters beyond implying directionality, so it meets the baseline of 3 where the schema does the heavy lifting without compensating for gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Turn to look') and specifies the target ('in a specific direction'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling actions like 'move_avatar' or 'set_avatar_parameter' that might also involve orientation changes, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'set_avatar_parameter' for orientation or 'move_avatar' for directional movement. There's no mention of prerequisites, context (e.g., avatar must be controllable), or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_avatarC
Move the avatar in a specific direction.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | Direction to move | |
| duration | No | Duration in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to move the avatar, implying a mutation, but doesn't cover aspects like whether this requires specific permissions, if it's reversible, what happens on collision, or any rate limits. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, making it highly efficient and easy to parse. It's appropriately sized for the tool's apparent simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, potential side effects, or error conditions, leaving the agent with insufficient information for reliable invocation in a complex environment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, fully documenting both parameters (direction with enum values and duration with default). The description adds no additional meaning beyond implying direction is involved, so it meets the baseline of 3 without compensating for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Move') and the resource ('the avatar'), specifying it's in a direction. However, it doesn't distinguish this from sibling tools like 'jump' or 'look_direction', which might involve similar movement concepts, leaving some ambiguity about unique functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'jump' or 'set_avatar_parameter', nor does it mention any prerequisites or exclusions. This lack of context makes it hard for an agent to choose appropriately among similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageB
Send a message to the VRChat chatbox.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to send | |
| send_immediately | No | Send immediately or just populate chatbox |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Send a message' implies a write operation, the description lacks details on permissions, rate limits, side effects (e.g., chat visibility), or response behavior. The mention of 'chatbox' adds some context, but overall behavioral traits are minimally covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a write operation with two parameters), lack of annotations, and no output schema, the description is minimally adequate. It covers the basic action but lacks depth on behavioral aspects and output expectations, making it complete enough for a simple tool but with clear gaps for informed usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('message' and 'send_immediately') with clear descriptions. The tool description adds no additional parameter semantics beyond what the schema provides, adhering to the baseline score when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send a message') and the target ('to the VRChat chatbox'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives or siblings, as none of the listed sibling tools appear to handle chat functionality directly, so differentiation isn't explicitly needed but could be implied by context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, prerequisites, or contextual constraints. It simply states what the tool does without indicating appropriate scenarios or exclusions, leaving usage entirely to inference from the tool name and basic functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_avatarC
Change to a specific avatar.
| Name | Required | Description | Default |
|---|---|---|---|
| avatar_id | Yes | ID of the avatar to change to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Change to a specific avatar' implies a mutation but does not disclose behavioral traits such as permissions required, whether the change is reversible, effects on other avatar states, or error handling. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and directly states the tool's purpose, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with no annotations and no output schema), the description is insufficient. It lacks details on behavioral aspects, usage context, and expected outcomes, failing to compensate for the absence of structured data. This leaves significant gaps for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'avatar_id' documented as 'ID of the avatar to change to'. The description adds no additional meaning beyond this, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Change to a specific avatar' clearly states the action (change) and resource (avatar), distinguishing it from sibling tools like get_avatar_list (list) or move_avatar (move). However, it lacks specificity about what 'change' entails compared to set_avatar_parameter, which might adjust avatar attributes rather than switching avatars entirely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing an avatar list first), exclusions, or comparisons to siblings like set_avatar_parameter or move_avatar, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_avatar_parameterC
Set a parameter on the current avatar.
| Name | Required | Description | Default |
|---|---|---|---|
| parameter_name | Yes | Name of the parameter to set | |
| value | Yes | Value to set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention if this requires specific permissions, whether changes are reversible, what happens to other parameters, or any rate limits. The description is minimal and lacks critical context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's apparent simplicity, though this conciseness comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, lack of annotations, and no output schema, the description is incomplete. It doesn't explain what parameters are available, what the value types correspond to, or what the tool returns, leaving significant gaps for an agent to operate safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (parameter_name and value). The description adds no additional meaning beyond implying these parameters exist, meeting the baseline for high schema coverage without compensating with extra details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set a parameter on the current avatar' clearly states the action (set) and target (parameter on avatar), but it's vague about what parameters exist or what this affects. It distinguishes from siblings like 'get_avatar_parameters' (read vs. write) but doesn't specify scope beyond 'current avatar'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'set_avatar' or 'set_emote_parameter'. It implies usage for parameter modification but doesn't mention prerequisites, side effects, or contextual constraints, leaving the agent to guess based on sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_emote_parameterC
Set VRCEmote on the current avatar.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Value to set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool sets a parameter, implying a mutation, but doesn't describe effects (e.g., whether it changes avatar state immediately, requires specific conditions, or has side effects). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words, clearly front-loading the core action. It's appropriately sized for a simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., what 'Set' entails, error conditions, or return values), making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'value' documented as a number or string. The description adds no additional meaning beyond implying it's for 'VRCEmote', which loosely relates to the parameter but doesn't specify valid values or formats. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set') and the target ('VRCEmote on the current avatar'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'set_avatar_parameter', but the specific mention of 'VRCEmote' provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'set_avatar_parameter' or other avatar-related tools. The description implies usage for setting emote parameters but offers no context about prerequisites, timing, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voiceC
Toggle voice
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Toggle voice' implies a mutation action (changing state), but it doesn't specify what the toggle does (e.g., enable/disable voice, switch between voice modes), what the default state is, or any side effects like requiring permissions or affecting other tools. This leaves critical behavioral traits unclear for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description 'Toggle voice' is extremely concise at two words, which could be seen as efficient. However, it's arguably under-specified rather than appropriately concise, as it lacks necessary context for a mutation tool. It's front-loaded but doesn't earn its place with sufficient information, making it borderline between concise and inadequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'voice' refers to, what toggling entails, or what the expected outcome is. For a tool that likely changes system state, this minimal description fails to provide enough context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is assigned because the schema fully handles the parameter semantics, and the description doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Toggle voice' is a tautology that essentially restates the tool name 'voice' with minimal elaboration. While it indicates an action ('toggle'), it doesn't specify what resource or system component is being toggled (e.g., voice chat, voice input, voice output), nor does it distinguish this tool from siblings like 'set_avatar_parameter' or 'set_emote_parameter' that might involve voice-related settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, such as whether it requires specific avatar settings or if it's only applicable in certain modes. Given siblings like 'set_avatar_parameter' that might control voice parameters, this lack of differentiation is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v1.0.0- First observed
get_avatar_list - First observed
get_avatar_name - First observed
get_avatar_parameters - First observed
jump - First observed
look_direction - First observed
menu - First observed
move_avatar - First observed
send_message - First observed
set_avatar - First observed
set_avatar_parameter - First observed
set_emote_parameter - First observed
voice
TDQS
Scored across 12 tools
Most tools have distinct purposes, but there is some potential overlap between 'move_avatar' and 'look_direction' for avatar movement/positioning, and 'set_avatar_parameter' and 'set_emote_parameter' both involve parameter setting. The descriptions help clarify differences, but an agent might occasionally confuse these pairs.
The naming follows a consistent verb_noun pattern (e.g., get_avatar_list, set_avatar_parameter) with minor deviations like 'jump' and 'voice' being single words instead of verb_noun pairs. Overall, it's readable and mostly predictable, though not perfectly uniform.
With 12 tools, this is well-scoped for controlling VRChat avatars via OSC. Each tool serves a clear purpose, such as avatar management, movement, communication, and parameter control, without feeling excessive or insufficient for the domain.
The toolset covers key aspects like avatar selection, movement, communication, and parameter control, but there are minor gaps such as missing tools for advanced interactions (e.g., gesture controls or environment manipulation). However, agents can likely work around these with the provided tools.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Connect AI agents to Replynodes over the Model Context Protocol.
Human-input bridge for AI agents with voice-first answer links, MCP tools, and HTTP APIs.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that allows AI assistants to interact with the VRChat API, enabling retrieval of user information, friends lists, and other VRChat data through a standardized interface.1872 npm66MIT
- AlicenseNot gradedqualityDmaintenanceConnects Blender to AI assistants through the Model Context Protocol, enabling direct AI control of 3D modeling, scene creation, and manipulation via natural language.MIT
- AlicenseAqualityCmaintenanceConnects Blender 3D to AI assistants via the Model Context Protocol, enabling natural language driven 3D scene creation, manipulation, and rendering.15MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to show, animate, and control a VRM character on the desktop, including posing and motion installation via MCP tools.1-