Skip to main content
Glama

overte-mcp

License: MIT Python 3.12+ Status: beta, core tools verified live

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 source: "live" or source: "simulated" — never a silent fake success

Tools — all three core tools verified live against Overte 2026.04.1 (2026-07-30):

Tool

Status

overte_domain_status

Verified live — real domain-server /nodes.json + /settings.json admin API on port 40100

overte_entity_spawn

Verified live — in-world entity spawning via WebSocket bridge; permanent=True for cross-restart persistence

overte_script_inject

Verified live — in-world JS behavior injection via WebSocket bridge

overte_sampling_assist

Multi-step planning via ctx.sample() when host supports it

Dashboard pages:

Page

Route

Features

Dashboard

/

Domain status, node list, settings viewer

Avatars

/avatars

Connected avatar-mixer/agent nodes

Entities

/entities

Spawn form + entity explorer

Scripting

/scripting

JS code editor + script injection

Chat

/chat

Skill-first LLM chat with 4 personalities

Settings

/settings

Backend health + LLM provider detection

Tools

/tools

Dynamic tool discovery + search

Skills

/skills

Skill content viewer (markdown)

Logs

/logs

Ring-buffer log viewer with level filter

Help

/help

Domain setup + JS API reference

Quick Install

Claude Desktop (.mcpb)

  1. Build: just mcpb-packdist/overte-mcp.mcpb

  2. Drag the .mcpb into Claude Desktop (needs Python 3.12+ and uv on PATH).

Stdio without MCPB: uv run overte-mcp. Full install paths: INSTALL.md.

Full stack (dashboard + bridge)

./start.ps1

Syncs 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 bundle

Documentation

Requirements

License

MIT

Available Tools

4 tools
overte_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")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
hostNoOverte domain server host.localhost
portNoOverte domain administration port.
passwordNoHTTP Basic Auth password for the domain-server admin API.
usernameNoHTTP Basic Auth username for the domain-server admin API.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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])

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
nameYesName of the entity to spawn.
typeNoEntity type: Box, Sphere, Web, or Model.Box
scaleNoX, Y, Z dimensions.
positionNoX, Y, Z translation coordinates.
model_urlNoGLB/FBX model resource URL if type is Model.
permanentNoIf True, entity persists across domain-server restarts (lifetime=-1).
script_urlNoOptional JavaScript behavior script URL to attach.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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")

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
goalYesWhat you want to accomplish with Overte.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"})

ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
entity_idYesOverte target entity UUID.
script_urlYesJavaScript behavior script URL.
script_dataNoMetadata parameters to inject into the script scope.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 4 tool updatesv0.2.1
    • First observedoverte_domain_status
    • First observedoverte_entity_spawn
    • First observedoverte_sampling_assist
    • First observedoverte_script_inject

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct concern: script injection, entity spawning, domain status, and sampling-based guidance. No two tools overlap in purpose.

Naming Consistency4/5

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.

Tool Count5/5

Four tools is a reasonable, focused scope for an Overte bridge server. Each tool serves a clear function without unnecessary bloat.

Completeness2/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP 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.
    1
    1
    MIT

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/sandraschi/overte-mcp'

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