Alongside the expected malware and indicator searches, it exposes connectors, status templates, marking definitions and group membership — the parts that tell you whether the intelligence you are reading is current and who it may be shared with. That makes it as useful for auditing an OpenCTI deployment as for querying one. Everything here reads; nothing writes back to the platform.
An MCP server that fronts an OpenCTI instance, turning its GraphQL API into named tools an assistant can call. It covers the intelligence itself (reports, malware, indicators of compromise, threat actors, attack patterns, campaigns) as well as the housekeeping around it (users, groups, connectors, status templates, files, labels and marking definitions).
- The most recent threat intelligence reports, and any single report pulled by its id — `get_latest_reports`, `get_report_by_id`
- Free-text search across malware, indicators of compromise and threat actors, each with a result count you choose — `search_malware`, `search_indicators`, `search_threat_actors`
- STIX objects read directly: attack patterns listed, and a campaign fetched by name — `list_attack_patterns`, `get_campaign_by_name`
- Who is on the platform and what they can see: users listed or fetched by id, and groups listed with their members — `list_users`, `get_user_by_id`, `list_groups`
- Platform state for operators: the connectors feeding data in, and the status templates workflows use — `list_connectors`, `list_status_templates`
- Files listed and fetched by id, plus the reference data that governs sharing — labels and marking definitions — `list_files`, `get_file_by_id`, `list_labels`, `list_marking_definitions`
Access to an OpenCTI instance and an API token from it: `OPENCTI_URL` and `OPENCTI_TOKEN`. Node.js 16 or higher. The npm package name is `opencti-server` (0.1.0) and it is marked private, so install from a clone with `npm install` and `npm run build`, or let the Smithery installer write the client entry. The token carries whatever that OpenCTI account can read, including its users and groups — issue a dedicated one rather than reusing an analyst's.
One command plus a key — npx -y @smithery/cli install opencti-server --client claude, then supply credentials
