Gtc
FreeNot checkedMCP server exposing insurance terms and conditions from the NN SOAP API, enabling querying, searching, comparing, and retrieving document text.
About
MCP server exposing insurance terms and conditions from the NN SOAP API, enabling querying, searching, comparing, and retrieving document text.
README
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
dateFromandmodDateranges - can restrict results to documents active on a given date
- filters by
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.
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
}
Installing Gtc
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/kszpakowski/gtc-mcpFAQ
Is Gtc MCP free?
Yes, Gtc MCP is free — one-click install via Unyly at no cost.
Does Gtc need an API key?
No, Gtc runs without API keys or environment variables.
Is Gtc hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Gtc in Claude Desktop, Claude Code or Cursor?
Open Gtc on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Gtc with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
