Skip to main content
Glama

gtc-mcp

MCP server exposing insurance terms and conditions from the NN SOAP API.

What it provides

  • list_gtc_documents

    • returns document metadata

    • supports arbitrary metadata filters

    • supports substring or exact matching

    • supports sorting and limiting

  • get_gtc_document

    • fetches a document by id

    • extracts text from PDF content for agent use

    • truncates returned text by default and reports truncation metadata

  • find_gtc_document_context

    • returns a compact context block with matching metadata and truncated bodies

  • search_gtc_document_text

    • searches a document body for phrases

    • returns grep-like line context windows around matches

    • caps the total response size

  • search_gtc_documents

    • filters by prodCode, componentCode, typeName, withdrawn

    • filters by dateFrom and modDate ranges

    • can restrict results to documents active on a given date

  • diff_gtc_documents

    • compares two documents by extracted text

    • returns a unified diff and metadata for both files

  • resources

    • gtc://documents/{doc_id}

    • gtc://documents/{doc_id}/full

The flexible filters are intentional because the exact metadata schema comes from the SOAP API response. The live API currently exposes fields such as idBodyDoc, idHeadDoc, docName, docTitle, typeName, componentCode, prodCode, dateFrom, dateTo, regDate, modDate, and withdrawn.

Related MCP server: Insurance Wiki MCP Server

Install

python -m venv .venv
source .venv/bin/activate
pip install -e .

Run

gtc-mcp

Run with streamable HTTP:

gtc-mcp --transport streamable-http

Bind on all interfaces for container or homelab use:

gtc-mcp --transport streamable-http --host 0.0.0.0 --port 8000

Optional mount path for SSE:

gtc-mcp --transport sse --mount-path /mcp

Optional streamable HTTP path:

gtc-mcp --transport streamable-http --streamable-http-path /mcp

Optional override:

export GTC_WSDL="https://gtc.nn.pl/gtc/services/GtcServiceHttpPort?wsdl"

Document bodies are cached locally after the first fetch. Optional override:

export GTC_CACHE_DIR="/absolute/path/to/cache"

You can also set the transport defaults with environment variables:

export MCP_TRANSPORT="streamable-http"
export MCP_MOUNT_PATH="/mcp"
export MCP_HOST="0.0.0.0"
export MCP_PORT="8000"
export MCP_STREAMABLE_HTTP_PATH="/mcp"
export MCP_ALLOWED_HOSTS="gtc-mcp.gtc-mcp:8000"

If you run behind Kubernetes or another reverse proxy and see 421 Misdirected Request with Invalid Host header, set MCP_HOST=0.0.0.0 and provide the externally used hostnames in MCP_ALLOWED_HOSTS.

Container image

Build locally:

make docker-build

Publish to your Zot registry:

make docker-publish ZOT_REGISTRY=zot.example.lan:5000 IMAGE_TAG=latest

Build and push a multi-arch image for linux/amd64 and linux/arm64:

make docker-publishx ZOT_REGISTRY=zot.example.lan:5000 IMAGE_TAG=latest

You can override the target platforms if needed:

make docker-publishx ZOT_REGISTRY=zot.example.lan:5000 IMAGE_TAG=latest PLATFORMS=linux/amd64,linux/arm64

Run locally:

make docker-run

Example MCP configuration

{
  "mcpServers": {
    "gtc": {
      "command": "/absolute/path/to/gtc-mcp/.venv/bin/gtc-mcp"
    }
  }
}

Example tool calls

List documents where the product field contains travel:

{
  "filters": {
    "product": "travel"
  },
  "contains_match": true,
  "limit": 10
}

Get a document body:

{
  "doc_id": "12345",
  "max_text_chars": 6000
}

Get context for the agent:

{
  "filters": {
    "language": "pl",
    "product": "life"
  },
  "limit": 3,
  "max_text_chars_per_document": 2500,
  "max_result_chars": 7000
}

Search a document body for specific phrases with line context:

{
  "doc_id": "12345",
  "phrases": ["wyłączenia", "karencja"],
  "before_lines": 2,
  "after_lines": 3,
  "max_matches": 10,
  "max_result_chars": 6000
}

Compare two documents:

{
  "left_doc_id": "104352",
  "right_doc_id": "104356",
  "context_lines": 2,
  "max_diff_lines": 200
}

Find active documents for a product on March 11, 2026:

{
  "as_of_date": "2026-03-11",
  "prod_code": "FIR0",
  "withdrawn": 0,
  "limit": 10
}
F
license - not found
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server that enables searching and reading binary document files (PDF, DOCX, PPTX, XLSX, ODT, ODS, ODP, RTF, EPUB) using regex patterns and retrieving content by sections.
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server providing tools to search and retrieve insurance product information, coverage details, and compare policies from a pre-built knowledge graph of Belgian insurance products, with verbatim citations from source PDFs.
    10
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server providing 5 tools for hybrid search, clause retrieval, policy versioning, code lookup, and plan rider override queries over a synthetic medical-policy corpus.
  • A
    license
    A
    quality
    B
    maintenance
    Vendor-neutral MCP server for knowledge retrieval across repositories, offering stable tools for searching, getting, and listing documents with hybrid lexical and optional semantic search.
    3
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/kszpakowski/gtc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server