Skip to content

Other MCP Clients

Any client that supports remote MCP servers over HTTP can use TI Mindmap HUB. Key-based clients send your API key in the X-API-Key header (or as Authorization: Bearer tim_…). Clients that implement MCP OAuth can sign in instead — the server supports Dynamic Client Registration and accepts localhost / 127.0.0.1 redirect URIs used by IDEs and CLIs.

Setting Value
Endpoint https://mcp.ti-mindmap-hub.com/mcp
Transport Streamable HTTP (MCP spec 2025-11-25)
API key header X-API-Key: tim_… or Authorization: Bearer tim_…
OAuth discovery https://mcp.ti-mindmap-hub.com/.well-known/oauth-protected-resource
Key My Profile → MCP Server API Keys — see MCP Server API Keys

OpenAI Responses API

The Responses API mcp tool accepts a bearer value in the authorization field. Pass your API key there:

import os
from openai import OpenAI

client = OpenAI()

resp = client.responses.create(
    model="<model>",
    tools=[{
        "type": "mcp",
        "server_label": "ti_mindmap_hub",
        "server_description": "Cyber threat intelligence: reports, IOCs, CVEs, ATT&CK, STIX, briefings, knowledge graph.",
        "server_url": "https://mcp.ti-mindmap-hub.com/mcp",
        "authorization": os.environ["TI_MINDMAP_API_KEY"],
        "allowed_tools": ["list_reports", "search_ioc", "search_cve", "get_latest_briefing"],
        "require_approval": "never",
    }],
    input="Summarise this week's ransomware reports.",
)
print(resp.output_text)

All listed tools are read-only. Keep require_approval at its default if you include submit_article.


Cursor

Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "ti-mindmap": {
      "url": "https://mcp.ti-mindmap-hub.com/mcp",
      "headers": {
        "X-API-Key": "tim_your_api_key_here"
      }
    }
  }
}

Restart Cursor and check the MCP settings page for the ti-mindmap server and its tools. To use OAuth instead of a key, omit headers; if your Cursor version supports MCP OAuth it will prompt you to sign in.


Claude Code

claude mcp add --transport http ti-mindmap https://mcp.ti-mindmap-hub.com/mcp \
  --header "X-API-Key: tim_your_api_key_here"

Run claude mcp list to verify, then ask for example: "Use ti-mindmap to get the latest weekly briefing."

To use OAuth instead, add the server without --header and run /mcp inside Claude Code to authenticate in the browser.


Claude Desktop (legacy bridge)

Claude now supports a native OAuth connector — see Claude Setup. If you need a local, key-based setup, use the stdio bridge mcp-bridge.js (requires Node.js 18+):

{
  "mcpServers": {
    "ti-mindmap": {
      "command": "node",
      "args": ["/path/to/mcp-bridge.js"],
      "env": {
        "TI_MINDMAP_API_KEY": "tim_your_api_key_here"
      }
    }
  }
}

Config file: %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS). Restart Claude Desktop afterwards.


Python (MCP SDK)

import asyncio, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = "https://mcp.ti-mindmap-hub.com/mcp"
HEADERS = {"X-API-Key": os.environ["TI_MINDMAP_API_KEY"]}

async def main():
    async with streamablehttp_client(URL, headers=HEADERS) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print([t.name for t in tools.tools])
            result = await session.call_tool(
                "list_reports", {"search": "ransomware", "time_range": "7d", "limit": 5}
            )
            print(result.content)

asyncio.run(main())

Raw HTTP

See MCP Server → Protocol Details for initialize and tools/call examples with curl-style requests.


Security Checklist

  • Never commit API keys; use environment variables or a secret store
  • Use one key per tool or environment so you can revoke them independently
  • Keys expire after 365 days — regenerate them from My Profile
  • Treat tool results as untrusted text from third-party reports