MCP server for Autodesk Flame — clip control, timelines, and effects with RAG search, anti-hallucination safety, and self-learning
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×3 in abrahamADSK/flame-mcp
- HIGH code analysis flagged dynamic code execution ×3 in abrahamADSK/flame-mcp
- HIGH code analysis flagged dynamic code execution ×4 in abrahamADSK/flame-mcp
tools
-
collect_media_paths
Collect filesystem paths for all clips in a library or reel
-
create_batch_group
Create a new empty Batch Group on the desktop
-
create_folder
Create a new folder inside a library
-
create_library
Create a new library in the active project workspace
-
create_reel
Create a new reel inside a library
-
create_reel_group
Create a new reel group inside a library
-
create_sequence
Create a new empty sequence in a Flame library/reel (optional duration in frames)
-
execute_plan
Run a structured JSON plan against Flame (F5b — preferred over execute_python for covered ops)
-
execute_python
Execute arbitrary Python code inside Flame with full API access
-
export_clip
Export a clip to disk via a Flame export preset (PyExporter, scheduled via idle event — never deadlocks Flame)
-
flame_wiretap_tree
Inspect the Wiretap IFFFS node tree at a given path
-
get_clip_metadata
Get detailed metadata for a specific clip (resolution, frame rate, duration, etc.)
-
get_flame_version
Return the running Flame version string
-
get_project_info
Return name, frame rate, resolution, bit depth of the active project
-
get_selected_clips
Return the clips currently selected in the Flame media panel or desktop
-
get_source_path
Get the filesystem source path of a clip, reel, or library
-
get_write_node_settings
Get the Write File node settings from the current Batch setup
-
import_clips
Import media from disk into a library (or a reel within it)
-
learn_pattern
Add a new working pattern to FLAME_API.md and rebuild the index
-
list_all_projects
List all Flame projects available on this workstation
-
list_batch_groups
List all batch groups in the active desktop with their reel counts
-
list_clips
List clips and sequences (with durations) in a library/reel, or across all libraries
-
list_desktop_reels
List the full desktop structure: reel groups, reels, and clip names
-
list_flame_logs
List all log files available in /opt/Autodesk/logs
-
list_libraries
List all libraries in the project with reel counts
-
list_reels
List reels in a library, or across all libraries
-
operation_history
Show the last N execute_python operations recorded this session
-
ping
Check whether the bridge to Autodesk Flame is reachable
-
read_flame_log
Read a Flame log file with optional tail/grep filtering
-
rename_segments
Rename a clip (all its segments) in a Flame library/reel
-
render_batch
Render the current Batch Group (Background Reactor by default; scheduled via idle event — never blocks Flame)
-
reset_session_stats
Zero the session stats counters immediately (idle auto-reset fires after 30 min inactivity)
-
resolve_concept
Fast static lookup: map a user concept to the correct API path and tool
-
search_flame_docs
Semantic RAG search over Flame API documentation — call before execute_python
-
session_stats
Show token usage and RAG savings for the current session
-
timeline_insert
Ripple-insert a source clip into a sequence's timeline
-
timeline_overwrite
Overwrite part of a sequence's timeline with a source clip
-
undo_last_operation
Undo the last undoable execute_python operation
analyzed commit ed3d817 · analyzer v17 · 2d ago
skills & prompt files 1
- agent-rulesabrahamADSK-flame-mcp-ed3d817/CLAUDE.md
danger signals3
- dynamic code executioneval()/exec()abrahamADSK-flame-mcp-ed3d817/hooks/flame_mcp_bridge.py:466
exec(compile(code, '<flame_mcp>', 'exec'), local_ns) - dynamic code execution__import__()abrahamADSK-flame-mcp-ed3d817/scripts/wiretap_sdk_smoke.py:145
WT = __import__(MODULE_NAME) - dynamic code executioneval()/exec()abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/_workspace_snapshot.py:40
exec (success or failure), guaranteeing the next list reflects reality.
filesystem 19
- fs abrahamADSK-flame-mcp-ed3d817/hooks/flame_mcp_bridge.py :233
with open(CRASH_RECOVERY_FILE) as f: - fs abrahamADSK-flame-mcp-ed3d817/scripts/check_adversarial_count.py :33
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/extract_patterns.py :20
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/fetch_github_patterns.py :27
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/fetch_transcripts.py :21
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/generate_settings.py :17
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/introspect_flame_api.py :77
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/invariant_types.py :37
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/scripts/verify_concepts.py :50
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/_ast_validate.py :73
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/_config.py :88
with open(config_path) as f: - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/_session_stats.py :68
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/concept_map.py :273
"api_path": "seq.open()", - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/journal.py :176
" with open(result_file, 'w') as f:\n" - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/rag/build_index.py :270
with open(doc_path, 'r', encoding='utf-8') as f: - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/rag/search.py :58
os.remove(rotated) - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/rag/validate_index.py :26
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/routing.py :52
from pathlib import Path - fs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :24
from pathlib import Path
shell / exec 4
- shell abrahamADSK-flame-mcp-ed3d817/hooks/flame_mcp_bridge.py :30
import subprocess - shell abrahamADSK-flame-mcp-ed3d817/scripts/fetch_transcripts.py :69
import subprocess - shell abrahamADSK-flame-mcp-ed3d817/scripts/invariant_types.py :35
import subprocess - shell abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :21
import subprocess
network 3
- net abrahamADSK-flame-mcp-ed3d817/hooks/flame_mcp_bridge.py :24
import socket - net abrahamADSK-flame-mcp-ed3d817/scripts/fetch_github_patterns.py :28
import urllib.request - net abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :16
import socket
secrets 2
- secrets abrahamADSK-flame-mcp-ed3d817/scripts/extract_patterns.py :147
api_key = os.environ.get("ANTHROPIC_API_KEY") - secrets abrahamADSK-flame-mcp-ed3d817/scripts/fetch_github_patterns.py :188
token = os.environ.get("GITHUB_TOKEN")
tool registrations 40
- sg_find abrahamADSK-flame-mcp-ed3d817/scripts/invariant_types.py :186
- list_libraries abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/_workspace_snapshot.py :143
- execute_python abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :692
- get_project_info abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :963
- list_libraries abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1106
- list_reels abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1148
- list_clips abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1186
- list_desktop_reels abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1280
- list_batch_groups abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1307
- list_all_projects abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1349
- get_clip_metadata abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1405
- get_selected_clips abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1457
- flame_wiretap_tree abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1489
- get_flame_version abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1554
- ping abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1565
- search_flame_docs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1584
- learn_pattern abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1673
- session_stats abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1796
- reset_session_stats abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1849
- list_flame_logs abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1887
- read_flame_log abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :1930
- execute_plan abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2065
- resolve_concept abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2164
- get_source_path abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2220
- rename_segments abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2287
- create_sequence abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2326
- render_batch abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2365
- export_clip abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2449
- create_library abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2558
- create_reel abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2578
- create_folder abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2602
- create_reel_group abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2626
- create_batch_group abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2674
- import_clips abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2693
- timeline_insert abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2840
- timeline_overwrite abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2874
- get_write_node_settings abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2930
- collect_media_paths abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :2957
- operation_history abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :3065
- undo_last_operation abrahamADSK-flame-mcp-ed3d817/src/flame_mcp/server.py :3084
declared dependencies 5
- mcp@>=1.26.0
- chromadb@>=0.6.0
- sentence-transformers@>=2.7.0
- rank-bm25@>=0.2
- pydantic@>=2.0