ThreatConnect v3 MCP Server
Click on "Install 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., "@ThreatConnect v3 MCP ServerEnrich indicator 8.8.8.8"
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.
ThreatConnect v3 MCP Server
A Model Context Protocol server that gives an MCP-capable LLM client a small set of reliable, validated tools to drive ThreatConnect Case Management and Threat Intelligence through the v3 REST API.
It hides v3's HMAC authentication, retries, pagination, and error quirks behind typed tools so the model never hand-rolls HTTP or signing.
Tools
Tool | v3 call | What it does |
|
| Create a case (name/status/severity + optional nested artifacts, tags, attributes). |
|
| Partial update; nested associations honor |
|
| Create any indicator type; type→summary-field resolved automatically. |
|
| Attach one artifact to an existing case by |
|
| Attach many artifacts: one nested-append request, or concurrent POSTs with a per-item ledger. |
|
| Return TC's context: rating/confidence, tags, attributes, associations, observations, web link. |
|
| Escape hatch for arbitrary reads with TQL/fields — never writes. |
There is deliberately no generic write tool: unconstrained PUT/DELETE
against shared threat intel is too dangerous to hand an LLM.
Related MCP server: Threat.Zone MCP Server
Install
Requires Python 3.12+ and uv.
uv sync
cp .env.example .env # then fill in your credentialsConfiguration
Set these in .env (or the environment). HMAC is the primary auth path.
Variable | Required | Default | Notes |
| yes | — | e.g. |
| HMAC | — | API user access id. |
| HMAC | — | API user secret key (never logged). |
| token | — | Alternative to HMAC; used only if the HMAC pair is absent. |
| no | — | Default owner for owner-relative reads/writes. |
| no |
| Per-request timeout (seconds). |
| no |
| Retries on 429/5xx with backoff + jitter. |
| no |
| TLS verification. |
| no |
| Logs go to stderr, secret-redacted. |
Clock skew: the HMAC
Timestampmust be within five minutes of server time. Keep the host on NTP.
Run
uv run tc-mcp # stdio transportClaude Desktop / mcp.json
{
"mcpServers": {
"threatconnect": {
"command": "uv",
"args": ["--directory", "/abs/path/to/threat_connect_mcp", "run", "tc-mcp"]
}
}
}Inspect the tool surface
npx @modelcontextprotocol/inspector uv run tc-mcpDevelopment
uv run ruff check . # lint
uv run mypy src # types
uv run pytest -q # mocked unit/integration testsLive smoke test (gated)
The live tests are skipped unless credentials are present and -m live is
passed. A green test_signature proves the HMAC string-to-sign is correct
against your instance:
TC_BASE_URL=... TC_API_ACCESS_ID=... TC_API_SECRET_KEY=... \
uv run pytest -m live tests/test_live.pyDesign notes
Thin httpx client, not TcEx. TcEx assumes it runs inside the TC platform; a small signed
httpxclient is easier to test (golden HMAC vector) and has no hidden runtime assumptions."Dynamic" via schema introspection. Tools validate caller fields/types against the live
OPTIONS /v3/<endpoint>and/v3/artifactTypesdescriptors, so they track the API instead of a frozen copy. Validation degrades gracefully if a descriptor is unavailable — the API stays the final authority.TQL injection defense. Any caller value interpolated into a TQL clause (enrich-by-summary) is escaped and control characters are rejected.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/delonius22/threat_connect_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server