Skip to content

fix(mcp): default the CTI Pipeline tool server to off - #32

Merged
HackedRico merged 1 commit into
mainfrom
fix/cti-pipeline-default-off
Aug 28, 2026
Merged

fix(mcp): default the CTI Pipeline tool server to off#32
HackedRico merged 1 commit into
mainfrom
fix/cti-pipeline-default-off

Conversation

@HackedRico

Copy link
Copy Markdown
Collaborator

Description

The CTI Pipeline MCP tool server was registered with default_enabled: True, so every new Plan and Execute session started with its checkbox ticked. That spawned the pipeline subprocess and merged its tools into the planner's toolset even on runs that never touched CTI.

It is now opt-in. MCP_METADATA in mcp_server.py declares default_enabled: False, and the two fallback registries that mirror that metadata (app/discovery/servers.py, app/workflows/plan_execute.py) match. The GUI seeds each workflow's default toggles from default_enabled, so the sidebar checkbox now starts unchecked; caldera_core stays on as the required server.

Nothing else about the server changes. It is still discovered, still listed under MCP Tool Servers, and the chat view still turns it on automatically when STIX files are selected for a Plan and Execute run. Saved per-workflow selections are untouched, so anyone who already had it ticked keeps it.

plan_execute.run() with no enabled_servers now defaults to ["caldera_core"] instead of ["caldera_core", "cti_pipeline"], matching what the GUI sends.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

  • pytest tests/test_discovery_and_tool_merge.py in a clean plugins root: both tests pass, confirming the metadata is still parsed without executing the module and that the registry keys are unchanged.
  • Loaded discover_mcp_servers against a plugins root whose mcp_server.py carries no MCP_METADATA, exercising the hardcoded fallback: {'caldera_core': True, 'cti_pipeline': False}.
  • Parsed MCP_METADATA out of mcp_server.py with ast.literal_eval the way discovery does: cti_pipeline default_enabled = False.
  • Ran the full tests/ suite before and after the change; the failing set is identical, all of it pre-existing and unrelated (missing optional deps and fixtures). tests/test_relation_extractor.py imports a module that does not exist on main and fails collection either way.

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation (none needed; PLUGIN_MCP.md already documents default_enabled as a per-server opt-in flag)
  • I have added tests that prove my fix is effective or that my feature works (the existing discovery tests cover the metadata path; the default itself is a one-value registration)

The CTI Pipeline server was ticked on for every new Plan and Execute
session, spawning the pipeline subprocess and loading its tools even when
the run never touched CTI. Ship it as an opt-in optional server instead:
the sidebar checkbox starts unchecked, and the chat view still turns it on
automatically when STIX files are selected.
@HackedRico
HackedRico merged commit a398528 into main Aug 28, 2026
3 checks passed
@HackedRico
HackedRico deleted the fix/cti-pipeline-default-off branch August 28, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant