flecs-mcp
Click on "Deploy 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., "@flecs-mcp show all entities with Position and Velocity and their current values"
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.
flecs-mcp
An MCP server that lets MCP clients and AI agents inspect a running FLECS application through FLECS' built-in REST API. Agents can query entities, read components, explain queries, and inspect systems and performance statistics. With explicit opt-in, they can also make small, reversible changes to the world.
Read-only by default. Mutation tools are only registered when you enable them.
No generic HTTP passthrough: every tool maps to one verified FLECS REST operation.
Configured entirely through environment variables. Runs over stdio (default) or streamable HTTP.
Contents
Related MCP server: UnityMCP
Why it was created
Coding agents such as Claude Code can read your source code, but not the world that code produces at runtime. In an ECS, bugs usually live in runtime state: which components an entity actually has, what values they hold, and which systems match it. Without runtime access, you end up pasting debugger output into the chat.
flecs-mcp gives the agent that runtime view, so it can reason over the code and the running world together:
Claude Code
│
┌──────────┴──────────┐
Source code Running world
(C/C++, build) (flecs-mcp → FLECS REST)
└──────────┬──────────┘
AI reasoningWhat you can do with it
Inspect the live world. "Show entities with Position and Velocity and their values" becomes the FLECS query
Position, Velocity. "Health but no Position" becomesHealth, !Position. This makes the MCP effectively an ECS debugger interface for the AI.Debug systems. Given "The player isn't moving, investigate", the agent inspects the player and the systems that match it (
flecs_get_entitywithmatches). It then compares the player with an entity that does move, and forms a hypothesis from real state rather than from source code alone.Close the development loop. Given "Implement enemy movement and verify it", the agent edits and builds the code, runs the game, records enemy positions, queries again later, and fixes the code if nothing moved.
Check expected state. For example, check that a spawned enemy has
Position,HealthandAIState. This helps with emergent behavior that is awkward to unit-test.Explore the architecture. See how many entities use each component (
flecs_list_components), which systems exist and what they match (flecs_list_queries,flecs_run_named_query), and how FLECS plans a query (flecs_explain_query).Investigate performance. Ask "Which systems take the most frame time?" (
flecs_get_pipeline_stats,flecs_get_world_stats), then cross-check against match counts, the source code, or other MCP servers such as a metrics backend.Experiment (requires
FLECS_REST_ALLOW_MUTATIONS=true). Create entities, set component values or pause a system, then watch what happens. This makes the running world a sandbox for experiments, or an AI-driven editing console. Deleting entities and running scripts are not available, by design.
Requirements
Python 3.12+
A FLECS application (v4) with the REST API enabled (see FLECS requirements)
Installation
git clone <this repository> flecs-mcp
cd flecs-mcp
uv syncConfiguration
All configuration comes from environment variables. Empty values count as unset.
Variable | Default | Description |
| (required) | Base URL of the FLECS REST API, e.g. |
|
| Request timeout in seconds (> 0). |
|
| Verify TLS certificates for |
|
| Register the MUTATION tools. |
|
|
|
|
|
|
|
| Bind address for |
|
| Bind port for |
export FLECS_REST_URL=http://localhost:27750.env.example lists every variable. The server doesn't read .env files
itself, but uv can load one for you:
cp .env.example .env
uv run --env-file .env flecs-mcpThe server stops with exit code 2 and a clear message if a value is missing or invalid.
FLECS has no authentication. If you put it behind a reverse proxy that uses HTTP basic auth,
include the credentials in the URL (https://user:password@host/flecs). They are sent as an
Authorization header and are redacted from every log line and error message.
Running
FLECS_REST_URL=http://localhost:27750 uv run flecs-mcpuv run python -m flecs_mcp is equivalent. With the default stdio transport, the process
talks MCP over stdin/stdout, so you normally let your MCP client start it (see below). The
server starts even when FLECS isn't running yet: connectivity is only checked when a tool
is called.
To serve MCP over HTTP instead:
FLECS_REST_URL=http://localhost:27750 MCP_TRANSPORT=http uv run flecs-mcp
# MCP endpoint: http://127.0.0.1:8000/mcpThe HTTP endpoint has no authentication. Keep it on 127.0.0.1 unless it sits on a trusted network.
MCP client configuration
Replace /path/to/flecs-mcp with the absolute path of this repository.
Claude Code
claude mcp add --transport stdio --env FLECS_REST_URL=http://localhost:27750 \
flecs -- uv --directory /path/to/flecs-mcp run flecs-mcpAdd --scope project to store the server in the project's .mcp.json so your team shares
it. The equivalent .mcp.json entry:
{
"mcpServers": {
"flecs": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "/path/to/flecs-mcp", "run", "flecs-mcp"],
"env": {
"FLECS_REST_URL": "http://localhost:27750"
}
}
}
}To connect to a server started with MCP_TRANSPORT=http:
claude mcp add --transport http flecs http://127.0.0.1:8000/mcpOther MCP clients (Claude Desktop, Cursor, VS Code, ...)
Most clients accept the same mcpServers shape (command, args, env) in their own
configuration file, for example claude_desktop_config.json for Claude Desktop. Use the
JSON above and add "FLECS_REST_ALLOW_MUTATIONS": "true" to env if you want the mutation
tools.
Docker
The image is optional; uv remains the primary workflow.
docker build -t flecs-mcp .{
"mcpServers": {
"flecs": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FLECS_REST_URL", "flecs-mcp"],
"env": { "FLECS_REST_URL": "http://host.docker.internal:27750" }
}
}
}Inside a container, localhost is the container itself. Use host.docker.internal (Docker
Desktop) or the host's address to reach a FLECS application running on the host.
Available tools
Entity paths use FLECS dotted notation: Sun.Earth, flecs.core.World. That's the
parent and name fields of a query result joined with .. You can also use a numeric id
such as #523. Names containing a dot are escaped as FLECS prints them (main\.flecs).
Component ids use full paths (planets.Mass) or pairs ((flecs.core.ChildOf, Sun)).
Every tool returns structured JSON, with an output schema where the shape is known. FLECS
payloads are passed through unchanged. Tool descriptions start with [READ] or [MUTATION]
and carry MCP annotations (readOnlyHint, destructiveHint, idempotentHint).
READ tools (always available)
flecs_get_world_info
Checks the connection and describes the world. Call it first.
Arguments: none.
Returns:
{rest_url, build_info, world_summary, notes}.build_info: FLECS version, compiler, enabled addons and build flags.world_summary: entity, table, component and query counts, fps, frame count, uptime. It isnullwhen the stats module isn't imported, andnotessays why.
Example: "Which FLECS version is the game running, and how many entities does it have?"
flecs_get_entity
Returns one entity with its tags, relationship pairs and component values.
Arguments:
entity(required)values(defaulttrue)inherited: prefab (IsA) components.type_info: component schemas.entity_id: include the numeric id.doc: flecs.doc names and descriptions.matches: queries, systems and observers that match this entity.
Returns: FLECS entity JSON:
{parent, name, tags, pairs, components, id?, type_info?, inherited?, matches?}. A component value isnullwhen the component has no reflection data.Example:
{"entity": "Sun.Earth", "matches": true}answers "which systems process Earth?"
flecs_get_component
Returns the value of one component.
Arguments:
entity,component.Returns:
{entity, component, value}, e.g.value = {"x": 10, "y": 20}.Example:
{"entity": "Sun.Earth", "component": "planets.Mass"}.
flecs_query
Runs a query in the FLECS query language. FLECS parses and evaluates it; this server only passes it through.
Arguments:
query(required)limit(1–1000, default 100) andoffset, for paging.table: return all components of each match instead of only the query fields.values,fields,entity_ids,inherited,type_info,doc.
Returns:
{page: {offset, limit, returned, may_have_more}, results: [...], type_info?}.Each result has
parent,name, andfields(values,ids,sources,is_setper term), or all of the entity's components withtable=true.If
may_have_moreis true, call again withoffset += limit.Invalid queries return the FLECS parser error, including the error position.
Examples:
Position, Velocity: entities with both components.(ChildOf, Sun): children ofSun.!(flecs.core.ChildOf, *): root entities.SpaceShip, $this ~= "Uss": name contains "Uss".Position, ?Mass(up):Massis optional and may come from an ancestor.
flecs_run_named_query
Evaluates an existing named query, system or observer query.
Arguments:
name(required), e.g.game.systems.Move.variables, e.g.parent:Sunorx:e1,y:e2.The same paging and serialization options as
flecs_query.
Returns: same shape as
flecs_query.Example: "Which entities does the
Movesystem currently process?"
flecs_explain_query
Shows how FLECS parses and plans a query, without returning results.
Arguments:
query(required)profile: also measure evaluation time and match counts; evaluates the query repeatedly for about 1 ms.
Returns:
query_info: resolved terms, operators, sources and traversal.field_info: type and schema per field.query_plan: plain text.query_profile: only whenprofileis true.
Example: debugging a query that unexpectedly matches nothing.
flecs_get_type_info
Returns the reflection schema of a component type.
Arguments:
component, the dotted path of the component entity.Returns:
{component, has_reflection, schema}, e.g.schema = {"x": ["float"], "y": ["float"]}.Example: check the value format before calling
flecs_set_component.
flecs_list_components
Lists component, tag and pair ids, with entity counts, storage size, lifecycle hooks and traits.
Arguments:
name_contains(case-insensitive filter),limit,offset.Returns:
{total, offset, limit, components: [{name, entity_count, entity_size, tables, type?, traits, sparse?, memory?}]}.Example:
{"name_contains": "game."}: which game components exist, and how many entities use each one?
flecs_list_queries
Lists named queries, systems and observers with their evaluation statistics. FLECS evaluates every query to produce this list.
Arguments:
name_contains,kind(Query,System,Observer),include_plans(defaultfalse),limit,offset.Returns:
{total, offset, limit, queries: [{name, kind, expr, results, count, eval_count, eval_time, eval_mode, cache_kind, ...}]}.Example:
{"kind": "System"}: list every system and how many entities it matches.
flecs_get_world_stats
Returns world performance metrics. Requires the FLECS stats module.
Arguments:
period:1s,1m,1h,1dor1w.history: return all 60 samples (oldest first) instead of only the latest.
Returns:
{period, history, metrics: {"performance.fps": {avg, min, max, brief}, "entities.count": {...}, ...}}. Times are in seconds.Example: "What is the frame time over the last minute?" →
{"period": "1m"}.
flecs_get_pipeline_stats
Returns per-system timing. Requires the FLECS stats module.
Arguments:
periodpipeline, e.g.flecs.pipeline.BuiltinPipeline: systems in execution order, with sync points. Omit it for all systems.history
Returns:
{period, pipeline, history, entries: [{name, disabled, time_spent, matched_entity_count?, matched_table_count?} | sync point]}.Example: "Which system takes the most time per frame?"
MUTATION tools (opt-in)
These are only registered when FLECS_REST_ALLOW_MUTATIONS=true. They change the running
application.
flecs_create_entity
Creates an entity, including any missing parents. If the path already exists, the existing entity is returned.
Arguments:
entity.Returns:
{entity, id}.Example:
{"entity": "Sun.Venus"}.
flecs_set_component
Adds a component, tag or pair and, optionally, sets its value. FLECS starts from the current value, so members you leave out keep their values.
Arguments:
entity,component,value(any JSON; omit it to only add).Returns:
{entity, component, status}, wherestatusissetoradded.Example:
{"entity": "Sun.Venus", "component": "game.Position", "value": {"x": 5}}.
flecs_remove_component
Removes a component, tag or pair. Its value is lost.
Arguments:
entity,component.Returns:
{entity, component, status: "removed"}.
flecs_set_enabled
Enables or disables an entity (which adds or removes flecs.core.Disabled; a disabled
system stops running), or one of its components. A component can only be toggled if it
has the CanToggle trait.
Arguments:
entity,enabled,component(optional).Returns:
{entity, component, status}, wherestatusisenabledordisabled.Example:
{"entity": "game.systems.Move", "enabled": false}pauses theMovesystem.
Resources
Resources are used only for data that doesn't change while the application runs. Live world state is served by tools.
URI | Content |
| FLECS build information: version, compiler, addons, flags. |
| Reflection schema of a component, e.g. |
FLECS requirements
Enable the REST API in the application. It listens on port 27750 by default:
// C
ECS_IMPORT(world, FlecsStats); // optional: statistics tools
ecs_singleton_set(world, EcsRest, {0}); // REST server on port 27750
while (ecs_progress(world, 0)) { }// C++
world.import<flecs::stats>(); // optional: statistics tools
world.set<flecs::Rest>({});
while (world.progress()) { }
// or: world.app().enable_stats().enable_rest().run();C# (world.Set<flecs.EcsRest>(default)) and Rust (world.set(flecs::rest::Rest::default()))
work the same way. Keep in mind:
The main loop must be running. FLECS answers REST requests from inside
ecs_progress(). An application that is paused, stopped at a breakpoint or stuck in a long frame doesn't answer, and requests time out.Reflection (the
metaaddon, e.g.ecs_struct/flecs::metaregistration) is needed to see component values and to set them. Components without reflection shownullvalues.Stats module:
flecs_get_world_stats,flecs_get_pipeline_statsand theworld_summarypart offlecs_get_world_inforequire the stats addon (FlecsStats).To use a different port or bind address, set
EcsRest.port/EcsRest.ipaddr.
FLECS REST API assumptions
The implementation targets the FLECS v4 REST API and was verified against the FLECS source
(src/addons/rest.c, src/addons/http/http.c, docs/FlecsRemoteApi.md) at commit
9e874bc. It was also exercised end to end against a live FLECS 4.1.6 application. All
protocol details are isolated in client.py.
Topic | Behavior relied on |
Endpoints used |
|
Entity paths | URLs use |
Parameters | Booleans are sent as the literal strings |
Query errors | Queries are sent with |
Error bodies | FLECS doesn't JSON-escape error messages, so error bodies may be invalid JSON. The client extracts the message anyway. |
Paging |
|
| The docs say "204 if no reflection". The implementation returns HTTP 200 with body |
Query plans | FLECS colors plans and writes the escape character as |
Stats | In |
Caching | FLECS caches identical GET responses for 0.2 s, so data may be up to one frame old. |
Deliberately not exposed:
DELETE /entity: cascades to children and can trigger(OnDelete, Panic)aborts.PUT /scriptandGET /call: execute FLECS script code and can write files on the host.GET /commands/capture: replaces the world's command hook.PUT /action: maintenance only.GET /world: an unbounded dump; use the pagedflecs_queryinstead.GET /tables.
Safety
The FLECS REST API has no authentication. Anyone who can reach its port can read the world and, through the REST API itself, modify or delete it, whether or not this server is involved. Don't expose it on untrusted networks.
This server exposes only explicitly implemented operations, with typed arguments. It never forwards arbitrary paths, methods or bodies.
Mutation tools are off by default and are never registered unless enabled. Even then, destructive operations (entity deletion, script execution) aren't available.
In debug builds, FLECS asserts on some invalid operations, for example changing builtin components. Only enable mutations against development builds.
Credentials embedded in
FLECS_REST_URLare redacted from logs and errors. Request values, such as component values, are never logged, andhttpxrequest logging is silenced.
Architecture
MCP Client (Claude Code, Claude Desktop, ...)
↓ MCP over stdio or streamable HTTP
FastMCP Server server.py, tools/, resources.py
↓ typed tool calls
FLECS REST Client client.py (one reused httpx.AsyncClient)
↓ HTTP
FLECS REST API EcsRest, port 27750
↓
FLECS ECS WorldModule | Responsibility |
| Typed |
|
|
|
|
| READ tools (thin adapters that shape results for agents). |
| MUTATION tools, only registered when enabled. |
|
|
|
|
Development
uv sync # install runtime and dev dependencies
uv run pytest # tests (with coverage); no FLECS instance needed
uv run ruff check . # lint
uv run ruff format --check . # formatting (uv run ruff format . to fix)
uv run pyright # type checking (strict for src/)Run the complete quality gate (format, lint, types, tests) with:
uv run python scripts/check.pyIt runs every step and exits non-zero if any of them fails.
Tests replace the HTTP layer with
httpx.MockTransport(seetests/conftest.py), drive the MCP tools through FastMCP's in-memory client, and start the real server over stdio once.Ruff enables pycodestyle, pyflakes, isort, bugbear, pyupgrade, simplify, comprehensions, pytest-style, async and Ruff's own rules.
Pyright runs in
standardmode, withstrictmode forsrc/.
Troubleshooting
Symptom | Cause and fix |
| The application isn't running, REST isn't enabled, or the host or port is wrong. Check |
| Wrong host, a firewall, or the host is unreachable. From Docker, use |
| The connection works but FLECS isn't serving requests: the main loop is paused, stopped at a breakpoint or stuck in a long frame. Resume it, or raise |
| Use dotted paths ( |
| The FLECS query parser error, including the position. Check names (full paths), commas and parentheses; |
| The FLECS build doesn't include the addon that serves this endpoint (e.g. stats). |
| Import the stats module ( |
Component values are | The component has no reflection data. Register it with the meta addon. |
MCP client can't start the server | Check that |
TLS / certificate errors | For self-signed certificates on a trusted network, set |
Too much or too little logging | Set |
License
Available Tools
11 toolsflecs_explain_queryFlecs Explain QueryARead-onlyIdempotent
[READ] Explain how FLECS parses and plans a query, without returning results.
Returns 'query_info' (resolved terms: operator, source, traversal flags), 'field_info' (id, type and member schema per field), 'query_plan' (the FLECS query plan as text) and optionally 'query_profile'. Use it to debug queries that match nothing or match too much. Invalid queries return the FLECS parser error.
Inputs: query (required), profile. Returns: object
flecs_get_componentFlecs Get ComponentARead-onlyIdempotent
[READ] Get the value of a single component of an entity.
Returns {entity, component, value}; 'value' is the component serialized by FLECS reflection (usually an object of members, e.g. {"x": 10, "y": 20}). Errors when the entity does not have the component, when the id is a tag (no data) or when it cannot be resolved.
Inputs: entity (required), component (required). Returns: value, entity, component
flecs_get_entityFlecs Get EntityARead-onlyIdempotent
[READ] Get one entity with its tags, relationship pairs and component values.
Returns the FLECS entity JSON: 'parent', 'name', 'tags' (list), 'pairs' (relationship -> target), 'components' (component -> value; null when the component has no reflection data) and, when requested, 'id', 'type_info', 'inherited', 'matches' and doc info. Names use full paths.
Errors when the entity does not exist. Use flecs_query to find entities.
Inputs: entity (required), doc, values, matches, +3 more. Returns: object
flecs_get_pipeline_statsFlecs Get Pipeline StatsARead-onlyIdempotent
[READ] Get per-system timing statistics from the FLECS stats module.
'entries' contains one object per system: 'name', 'disabled', 'time_spent' and (for non-task systems) 'matched_entity_count' and 'matched_table_count', each metric as {avg, min, max}. With a pipeline, sync points ('multi_threaded', 'immediate', 'time_spent', 'commands_enqueued') are interleaved in execution order. Times are in seconds. Requires the stats module (FlecsStats).
Inputs: period, history, pipeline. Returns: period, entries, history, pipeline
flecs_get_type_infoFlecs Get Type InfoARead-onlyIdempotent
[READ] Get the reflection schema (members, types, units) of a component type.
Returns {component, has_reflection, schema}. 'schema' maps member names to [type, {unit, ...}] descriptors, e.g. {"x": ["float"], "y": ["float"]}. has_reflection is false (and schema null) when the type has no reflection data, in which case FLECS cannot serialize or set its value.
Inputs: component (required). Returns: schema, component, has_reflection
flecs_get_world_infoFlecs Get World InfoARead-onlyIdempotent
[READ] Describe the connected FLECS world; call it first to test the link.
Returns:
rest_url: the FLECS REST API this server talks to.
build_info: FLECS version, compiler, enabled addons and build flags (flecs.core.BuildInfo), or null if unavailable.
world_summary: live counters such as entity, table, component and query counts, frame count, fps, target fps, time scale and uptime (flecs.stats.WorldSummary), or null if the stats module is not imported.
notes: why a section is null, if any.
Fails if the FLECS REST API cannot be reached.
Inputs: no named parameters. Returns: notes, rest_url, build_info, world_summary
flecs_get_world_statsFlecs Get World StatsARead-onlyIdempotent
[READ] Get world performance statistics from the FLECS stats module.
'metrics' maps names such as 'performance.fps', 'performance.frame_time', 'entities.count', 'tables.count', 'queries.system_count', 'commands.add_count' and 'memory.alloc_count' to {avg, min, max, brief}. Times are in seconds. Requires the FLECS application to import the stats module (FlecsStats); returns an explanatory error otherwise.
Inputs: period, history. Returns: period, history, metrics
flecs_list_componentsFlecs List ComponentsARead-onlyIdempotent
[READ] List the component, tag and pair ids in use, with storage statistics.
Each entry has 'name', 'entity_count', 'entity_size', 'tables' (table ids), 'traits' (e.g. Exclusive, CanToggle, (OnDelete,Remove)), 'type' (size, alignment, which lifecycle hooks are set; absent for tags), 'sparse' (for sparse components) and 'memory' when the stats module is imported. Includes FLECS builtin ids and wildcard records. Returns {total, offset, limit, components}; total counts matches after filtering. Use flecs_get_type_info for a component's member schema.
Inputs: limit, offset, name_contains. Returns: limit, total, offset, components
flecs_list_queriesFlecs List QueriesARead-onlyIdempotent
[READ] List named queries, systems and observers with evaluation statistics.
Each entry has 'name' (usable with flecs_run_named_query), 'kind' (Query, System or Observer), 'expr' (the query expression), 'results' and 'count' (current matches), 'eval_count', 'eval_time', 'eval_mode', 'cache_kind', 'batched', 'empty_tables', 'plan_size' and, when the stats module is imported, 'memory'. FLECS evaluates every query to produce this list, which can take a while in very large worlds. Returns {total, offset, limit, queries}.
Inputs: kind, limit, offset, include_plans, +1 more. Returns: limit, total, offset, queries
flecs_queryFlecs QueryARead-onlyIdempotent
[READ] Find entities with a query written in the FLECS query language.
Syntax cheat sheet (terms are comma separated and all must match):
'Position, Velocity' entities with both components
'Position, !Velocity' ... without Velocity
'Position, ?Mass' Mass is optional
'Planet || Moon' either tag
'(ChildOf, Sun)' children of entity Sun
'!(flecs.core.ChildOf, *)' root entities
'(Likes, *)' / '(Likes, $x)' wildcard / variable pair target
'Position, Mass(up)' Mass on an ancestor (ChildOf)
'SpaceShip, $this ~= "Uss"' name contains "Uss"
'IsA(_, *)' instances of any prefab Use full paths (e.g. 'transform.Position') when names are ambiguous.
Returns {page, results, type_info?}. Each result has 'parent', 'name' and, depending on options, 'id', 'fields' ({values, ids, sources, is_set} per query term), 'vars' or, with table=true, 'tags'/'pairs'/'components'. page = {offset, limit, returned, may_have_more}; when may_have_more is true, call again with offset += limit. Invalid queries return the FLECS parser error (with position) so the query can be fixed.
Inputs: query (required), doc, limit, table, +6 more. Returns: page, results, type_info
flecs_run_named_queryFlecs Run Named QueryARead-onlyIdempotent
[READ] Return what an existing named query, system or observer matches now.
Useful to check which entities a system processes. Same result format as flecs_query: {page, results, type_info?}.
Inputs: name (required), doc, limit, table, +7 more. Returns: page, results, type_info
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose: entity vs component retrieval, ad-hoc vs named query execution vs query explanation, world info vs stats vs pipeline stats, and list vs schema inspection. The descriptions explicitly clarify boundaries (e.g., use flecs_query to find entities, flecs_run_named_query for existing named queries), so misselection risk is low.
All tools use the flecs_ prefix and snake_case, with a consistent verb_noun pattern in nearly every case (get_world_info, get_entity, list_components, run_named_query, etc.). The one minor deviation is flecs_query, which is verb-only rather than verb_noun, but overall the convention remains predictable.
Eleven tools is well-scoped for a FLECS inspection server, covering world info, entities, components, queries, and statistics without redundancy. Each tool earns its place and the surface is neither thin nor bloated.
The read-only introspection surface is thorough: world info, entity/component retrieval, query execution, query explanation, type schemas, lists, and performance stats. However, mutation operations (e.g., creating entities, setting components, running systems) are absent, which could be a gap if the server is intended for more than read-only diagnostics.
Maintenance
Related MCP Connectors
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Search and inspect source-pinned agent skills, plugins and tools through a free public MCP.
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables live runtime inspection of any Python application, allowing MCP clients to query state, evaluate expressions, inspect objects, and read source code while the app runs.-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to drive the Unity Editor directly over HTTP, including scene and asset editing, diagnostics, play mode control, code execution, input simulation, and builds, with no separate MCP server process.339MIT
- AlicenseAqualityBmaintenanceEnables external agents like ChatGPT and Codex to discover and control local DesireCore instances through MCP, including status, screenshots, window listings, CDP queries, and optional high-privilege control.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to inspect and control a running WARUDO scene, including assets, character pose and IK, expressions, blueprints, camera, and captures, through an MCP client.16 npm10MIT