overte-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@overte-mcpcheck my Overte domain status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
overte-mcp
What this wraps
An MCP server for Overte, the open-source social-VR
platform — a C++ desktop client ("Interface") + domain-server + entity-server,
descended from High Fidelity's codebase. Not the same thing as current
"Vircadia" — see docs/WRAPPEE.md for the full
disambiguation and official links (site, docs, community). Complements the
fleet's other virtual-world servers: resonite-mcp, vrchat-mcp,
godot-mcp, unity3d-mcp, gazebo-mcp.
Plus a companion React web dashboard.
Related MCP server: Learn MCP Server
What You Can Do
How it runs: Overte (domain-server + Interface) is a separate
application you install yourself — never bundled. overte_domain_status
works against just the domain-server (no GUI needed). overte_entity_spawn
and overte_script_inject need a running Interface client with
scripts/overte-mcp-bridge.js loaded, because Overte's entity-server has no
plain HTTP "create entity" endpoint — only Interface's JavaScript API can do
that. See docs/ONBOARDING.md for first-time setup.
Direction | Artifacts | Notes |
Hands-in | Entity properties (position, scale, type), JS behavior scripts, GLB/FBX/OBJ model URLs | Via MCP tool calls or the dashboard's Entities/Scripting pages |
Hands-out | Live domain-server telemetry, spawned in-world entities, animated/scripted entities | Every response labeled |
Tools — all three core tools verified live against Overte 2026.04.1 (2026-07-30):
Tool | Status |
| Verified live — real domain-server |
| Verified live — in-world entity spawning via WebSocket bridge; |
| Verified live — in-world JS behavior injection via WebSocket bridge |
| Multi-step planning via |
Dashboard pages:
Page | Route | Features |
Dashboard |
| Domain status, node list, settings viewer |
Avatars |
| Connected avatar-mixer/agent nodes |
Entities |
| Spawn form + entity explorer |
Scripting |
| JS code editor + script injection |
Chat |
| Skill-first LLM chat with 4 personalities |
Settings |
| Backend health + LLM provider detection |
Tools |
| Dynamic tool discovery + search |
Skills |
| Skill content viewer (markdown) |
Logs |
| Ring-buffer log viewer with level filter |
Help |
| Domain setup + JS API reference |
Quick Install
Claude Desktop (.mcpb)
Build:
just mcpb-pack→dist/overte-mcp.mcpbDrag the
.mcpbinto Claude Desktop (needs Python 3.12+ anduvon PATH).
Stdio without MCPB: uv run overte-mcp. Full install paths: INSTALL.md.
Full stack (dashboard + bridge)
./start.ps1Syncs deps, starts FastAPI backend (11110) and Vite dashboard (11111),
opens the browser. Then start Overte domain-server.exe, open Interface,
load scripts/overte-mcp-bridge.js for live spawn/inject — see
docs/ONBOARDING.md.
Example Prompts
"What's the status of my Overte domain?"
"Spawn a permanent box entity at the origin"
"Attach the dance script to that entity"
Lint / test
just lint # Ruff + Biome
just test # unit + e2e
just mcpb-pack # validate + pack Claude Desktop bundleDocumentation
docs/WRAPPEE.md — what Overte is, disambiguation from Vircadia, official links
docs/ARCHITECTURE.md — data flow, ports, WebSocket bridge
INSTALL.md — Overte setup, MCPB, Claude Desktop config
STATUS.md — current verification status, remaining work
ASSESSMENT.md — fleet audit findings and improvement plan
PROJECT_PAGE.md — roadmap and task tracker
CHANGELOG.md — release notes
docs/ONBOARDING.md — first-time Overte + bridge setup
docs/CONFIGURATION.md — env vars, ports
docs/DEVELOPMENT.md — dev setup, contributing
docs/TOOLS.md — full MCP tool reference
docs/TROUBLESHOOTING.md — common issues
llms.txt / llms-full.txt — LLM index + full corpus
mcpb/README.md — Claude Desktop bundle layout
Requirements
Python 3.12+ with
uvBun (webapp + Biome)
Overte Client + Server installed separately for live domain + bridge features
License
MIT
Available Tools
4 toolsoverte_domain_statusA
Retrieve connected-node telemetry and settings from an Overte Domain Server.
Real live path against /nodes.json and /settings.json. Falls back to clearly labeled simulated data if no domain-server is reachable.
Return Format
{"success": bool, "message": str, "data": {"source": str, "domain": {...}}}
Examples
overte_domain_status(host="localhost", port=40100) overte_domain_status(host="192.168.1.100", port=40100, username="admin", password="admin")
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| host | No | Overte domain server host. | localhost |
| port | No | Overte domain administration port. | |
| password | No | HTTP Basic Auth password for the domain-server admin API. | |
| username | No | HTTP Basic Auth username for the domain-server admin API. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the real live path against /nodes.json and /settings.json, the fallback to clearly labeled simulated data, and the return format. This provides meaningful behavioral context beyond the bare schema, though it doesn't cover all edge cases like authentication failure behavior.
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 well-structured: a single-sentence purpose, a brief behavioral note, a return format section, and two examples. Every sentence contributes valuable information without redundancy, 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?
For a read-only status tool, the description explains the live data source, fallback behavior, and return envelope. The specification of the return format compensates for the absence of an output schema in the provided input. It does not enumerate all possible data fields inside 'domain', but that may be acceptable for this tool's purpose.
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 80% (4 of 5 parameters have descriptions). The description adds example invocations that demonstrate the host, port, username, and password parameters, but does not elaborate on the ctx parameter, which lacks a schema description. It provides marginal value beyond the schema's own parameter descriptions.
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 begins with a specific verb+resource: 'Retrieve connected-node telemetry and settings from an Overte Domain Server.' This clearly distinguishes it from sibling tools like overte_script_inject, which have notably different purposes.
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 implies usage by stating it retrieves telemetry/settings and mentions a fallback to simulated data when a domain-server is unreachable. While it doesn't explicitly name alternatives, the context is clear and there are no conflicting sibling tools. It lacks explicit when-not-to-use guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overte_entity_spawnA
Spawn a virtual object or 3D GLB model in-world at the specified coordinates.
Live when scripts/overte-mcp-bridge.js is connected to the FastAPI WS hub; otherwise returns a clearly labeled simulated confirmation.
Return Format
{"success": bool, "message": str, "data": {"source": str, "entity": {...}}}
Examples
overte_entity_spawn(name="MyBox") overte_entity_spawn(name="Tree", entity_type="Model", model_url="https://example.com/tree.glb", position=[10, 0, -5])
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| name | Yes | Name of the entity to spawn. | |
| type | No | Entity type: Box, Sphere, Web, or Model. | Box |
| scale | No | X, Y, Z dimensions. | |
| position | No | X, Y, Z translation coordinates. | |
| model_url | No | GLB/FBX model resource URL if type is Model. | |
| permanent | No | If True, entity persists across domain-server restarts (lifetime=-1). | |
| script_url | No | Optional JavaScript behavior script URL to attach. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly discloses the live-versus-simulated behavior and the exact return format, which is critical for the agent to interpret results correctly. It stops short of discussing permissions or reversibility, but for a spawn operation this is adequate.
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 well-structured with a clear opening statement, a note on live/simulated mode, a return format section, and examples. Every section earns its place without unnecessary fluff, making it easy to scan 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 tool has 8 parameters and no annotations, the description provides essential context: purpose, simulation behavior, and return shape. The examples and return format compensate for a lack of behavior details like coordinate units or persistence. It is not exhaustive but is complete enough for the agent to invoke 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 88%, so the baseline is 3. The description adds value through examples that illustrate parameter combinations, such as using 'entity_type="Model"' with 'model_url', and 'position' as a coordinate array. This goes beyond simply restating schema fields, though it does not clarify the undocumented 'ctx' parameter.
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 'Spawn a virtual object or 3D GLB model in-world at the specified coordinates,' using a specific verb and resource. This distinguishes it from sibling tools like overte_script_inject, overte_sampling_assist, and overte_domain_status, which serve entirely different purposes.
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 practical usage context by noting that it is live when the bridge is connected and otherwise returns a simulated confirmation. It also gives examples of typical calls. However, it does not explicitly mention alternatives or when not to use it, though the sibling context makes the differentiation clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overte_sampling_assistA
Get multi-step Overte operation guidance via MCP sampling (FastMCP 3.1+).
Uses ctx.sample when the host exposes sampling; returns structured error otherwise. Recommends tool calls and sequencing for complex goals.
Return Format
{"success": bool, "message": str, "data": {"plan": str, "sampling_used": bool}}
Examples
overte_sampling_assist(goal="Set up a domain-server and spawn a welcome entity")
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| goal | Yes | What you want to accomplish with Overte. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the sampling mechanism (ctx.sample), the fallback behavior ('returns structured error otherwise'), and the return format with an example. This provides useful behavioral context beyond the empty annotations.
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 well-structured with a brief summary, example, and return format spec. Every sentence adds value and it is appropriately concise for a tool of this complexity.
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?
The output schema is present and the description additionally explains the error behavior and provides a concrete example. The tool is fully contextualized for an agent, covering the key aspects of sampling usage and fallback.
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 only 50%: 'goal' is documented, but 'ctx' is not. The description mentions ctx.sample but does not explain what the ctx parameter is or how it should be used, failing to compensate for the schema gap.
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 uses a specific verb ('Get') and resource ('multi-step Overte operation guidance') to define what the tool does. It clearly distinguishes itself from siblings like overte_entity_spawn or overte_script_inject by positioning itself as a planning/guidance tool rather than an execution 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 states it is for 'complex goals' and 'multi-step' operations, providing clear context on when to use it. It does not explicitly mention when not to use it or name alternatives, but the purpose is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overte_script_injectA
Inject a JavaScript script to govern behavior of an in-world entity.
Live when the Overte bridge WebSocket client is connected; otherwise returns a clearly labeled simulated confirmation.
Return Format
{"success": bool, "message": str, "data": {"source": str, "script": {...}}}
Examples
overte_script_inject(entity_id="abc-123-def", script_url="https://example.com/behavior.js") overte_script_inject(entity_id="abc-123-def", script_url="https://example.com/click.js", script_data={"color": "red"})
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| entity_id | Yes | Overte target entity UUID. | |
| script_url | Yes | JavaScript behavior script URL. | |
| script_data | No | Metadata parameters to inject into the script scope. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses a key behavioral trait: the tool returns a clearly labeled simulated confirmation when disconnected, meaning it won't actually inject the script. It also specifies the return format, adding useful transparency beyond the bare existence of the 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 well-structured: purpose statement, connectivity caveat, return format, and examples. It is concise without being terse, and each section earns its place. Slightly longer than necessary due to the return format and examples, but still efficiently organized.
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, lack of annotations, and presence of an output schema, the description is quite complete. It explains the tool's purpose, the crucial live/simulation behavior, the return format, and provides instant-usage examples. It does not cover prerequisites or side effects, but these are not obviously critical for this tool.
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 already describes 3 of 4 parameters (75% coverage), providing a baseline of 3. The description adds value through examples showing how to pass entity_id, script_url, and script_data, but it leaves the 'ctx' parameter completely unexplained, so it doesn't fully compensate for the 25% schema gap.
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 specific action ('Inject a JavaScript script') and the target ('in-world entity'), along with the intended purpose ('to govern behavior'). This distinguishes it from sibling tools like overte_entity_spawn, which deals with entity creation.
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 important usage context by specifying that the tool is live only when the Overte bridge WebSocket client is connected, and otherwise returns a simulated confirmation. However, it does not explicitly discuss alternatives or when not to use the tool, so it falls short of a 5.
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. Dates show when Glama detected each change.
4 tool updates
v0.2.1- First observed
overte_domain_status - First observed
overte_entity_spawn - First observed
overte_sampling_assist - First observed
overte_script_inject
TDQS
Each tool targets a distinct concern: script injection, entity spawning, domain status, and sampling-based guidance. No two tools overlap in purpose.
All tools share the overte_ prefix and mostly follow a noun_verb pattern (script_inject, entity_spawn, sampling_assist), with one exception (domain_status being noun_noun). This is a minor deviation from an otherwise consistent scheme.
Four tools is a reasonable, focused scope for an Overte bridge server. Each tool serves a clear function without unnecessary bloat.
The domain is clearly Overte virtual world management, but the surface is notably incomplete: entity spawning exists but there are no tools to list, update, or delete entities, and script injection exists without corresponding script removal or listing. This leaves significant gaps in typical lifecycle workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official remote MCP server bridge for Muumuu Domain.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for understanding Javascript internals from ECMAScript specification.
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA minimal WebSocket-based MCP server implementation that enables modern tool integrations with VSCode, Claude, and other applications.10ISC
- FlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server designed for learning and experimentation. It provides a foundational setup for developers to build, run, and debug MCP server implementations using Node.js.-
- AlicenseNot gradedqualityAmaintenanceOpen-source, engine-agnostic MCP server shared by Unity-MCP, Godot-MCP, and Unreal-MCP.9Apache 2.0
- AlicenseAqualityBmaintenanceMCP server that lets an LLM agent drive StableProjectorz, a 3D modeling app, by inspecting the loaded model, app state, viewport screenshots, and triggering UI actions via a loopback socket bridge.11MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sandraschi/overte-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server