Koskamo

TCC Group MCP

A read-only MCP server operated by TCC Group that allows AI assistants to search, read, and access content from the tcc.group website, including pages, posts, navigation, and contact details, without requiring an account or sign-in.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

TCC Group MCP logo, by TCC GroupVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by TCC Group
MCP endpoint (Streamable HTTP)
https://mcp.tcc.group
Vendor documentation

What its tools do

18 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

18 of 18 have a description · 18 of 18 declare behavior hints · 12 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to tcc.group ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search and read website pages and posts
  • Access navigation and contact details
  • Retrieve published content for AI assistants

Source and maintenance

Vendor evidenceRegistry 1.4.0

Protocol and capabilities

Server
TCC MCP Server 1.3.0
MCP protocol negotiated in check
2025-03-26
Tools
18 advertised
Resources
4 advertised
Resource templates
5 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

This server is read-only. Use tools for filtered content access and resources for direct context payloads.

Tools

18 advertised

get_site_info — Get site information
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get site metadata and MCP server capabilities.

get_site_info input schema
{
  "type": "object",
  "properties": {}
}
get_site_info annotations
{
  "title": "Get site information",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_pages — List pages
Advertised by the server during the last successful anonymous check.
Advertised read-only

List published WordPress pages with pagination.

list_pages input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "maximum": 500,
      "minimum": 1,
      "description": "Integer value."
    },
    "per_page": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
list_pages annotations
{
  "title": "List pages",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_posts — List posts, insights and case studies
Advertised by the server during the last successful anonymous check.
Advertised read-only

List published posts, insights, or case studies, optionally filtered by taxonomy.

list_posts input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "maximum": 500,
      "minimum": 1,
      "description": "Integer value."
    },
    "term": {
      "type": "string",
      "description": "Optional taxonomy term slug."
    },
    "type": {
      "enum": [
        "post",
        "insight",
        "case-study"
      ],
      "type": "string",
      "default": "post",
      "description": "The public post type to query."
    },
    "per_page": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Integer value."
    },
    "taxonomy": {
      "enum": [
        "category",
        "post_tag",
        "sector",
        "solution"
      ],
      "type": "string",
      "description": "Optional taxonomy filter."
    }
  }
}
list_posts annotations
{
  "title": "List posts, insights and case studies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_taxonomy_terms — List taxonomy terms
Advertised by the server during the last successful anonymous check.
Advertised read-only

List published taxonomy terms with counts.

list_taxonomy_terms input schema
{
  "type": "object",
  "properties": {
    "taxonomy": {
      "enum": [
        "category",
        "post_tag",
        "sector",
        "solution"
      ],
      "type": "string",
      "default": "category",
      "description": "The taxonomy to enumerate."
    }
  }
}
list_taxonomy_terms annotations
{
  "title": "List taxonomy terms",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_content — Search site content
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search public pages, posts, insights, and case studies.

search_content input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Search phrase."
    },
    "per_page": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
search_content annotations
{
  "title": "Search site content",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_page_content_with_schema — Get page content and schema
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full page textual content and published JSON-LD schema for grounded evaluation.

get_page_content_with_schema input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Absolute page URL."
    },
    "slug": {
      "type": "string",
      "description": "Page slug or path (for example: redress-and-remediation)."
    },
    "page_id": {
      "type": "integer",
      "default": 0,
      "maximum": 99999999,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
get_page_content_with_schema annotations
{
  "title": "Get page content and schema",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_enriched_page_contexts — Search enriched page contexts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search site content and return top matching page contexts enriched with full text and JSON-LD schema.

search_enriched_page_contexts input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Search phrase."
    },
    "top_n": {
      "type": "integer",
      "default": 3,
      "maximum": 10,
      "minimum": 1,
      "description": "Integer value."
    },
    "per_page": {
      "type": "integer",
      "default": 15,
      "maximum": 50,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
search_enriched_page_contexts annotations
{
  "title": "Search enriched page contexts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_citation_links — Get citation links
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return clean source links and markdown citation bullets for a query context.

get_citation_links input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Search phrase used to collect source links."
    },
    "top_n": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "Integer value."
    },
    "per_page": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
get_citation_links annotations
{
  "title": "Get citation links",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_schema_context — Get organisation schema context
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the sitewide Organization schema context.

get_schema_context input schema
{
  "type": "object",
  "properties": {}
}
get_schema_context annotations
{
  "title": "Get organisation schema context",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_navigation — Get site navigation
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the primary navigation structure.

get_navigation input schema
{
  "type": "object",
  "properties": {}
}
get_navigation annotations
{
  "title": "Get site navigation",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_team_directory — Get team directory
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the published, featured team member directory (Core-managed People profiles). Read-only and published-only, like every other tool.

get_team_directory input schema
{
  "type": "object",
  "properties": {}
}
get_team_directory annotations
{
  "title": "Get team directory",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_person_profile — Get team member profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one published team member profile and its schema.org Person JSON-LD by slug.

get_person_profile input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "The person's slug: the fragment of their url in get_team_directory, such as jane-example in /meet-the-team/#jane-example."
    }
  }
}
get_person_profile annotations
{
  "title": "Get team member profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_media_assets — Search media assets
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search public, active Core-managed Media Assets eligible for this website and return safe delivery variants plus schema.org MediaObject JSON-LD. Private and management records are never returned.

search_media_assets input schema
{
  "type": "object",
  "properties": {
    "kind": {
      "enum": [
        "image",
        "video",
        "audio",
        "document",
        "other"
      ],
      "type": "string",
      "description": "Optional kind of asset to return; every kind when omitted."
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Optional asset title or description search phrase."
    },
    "cursor": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional opaque cursor returned by the previous page."
    },
    "page_size": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Integer value."
    }
  }
}
search_media_assets annotations
{
  "title": "Search media assets",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_documents — Search documents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the public documents (PDF files) that this website publishes and return each as a document card with its schema.org node. Filter by topic or sector (slugs), by the address of a page on this website to find the documents related to it, or search by phrase. Call get_document to open one document by its id. Only published, open documents appear, and none may be available.

search_documents input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "Integer value."
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional search phrase."
    },
    "topic": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      "maxLength": 80,
      "description": "Optional topic slug."
    },
    "sector": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      "maxLength": 80,
      "description": "Optional sector slug."
    },
    "page_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "Optional address of a page on this website: only documents related to that page are returned."
    }
  },
  "additionalProperties": false
}
search_documents output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "available",
    "reasonCode",
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "card",
          "schemaOrg"
        ],
        "properties": {
          "card": {
            "type": "object",
            "description": "The document's DocumentCard v1: its id, title, summary, file, preview image, page and contact addresses and the rest of the contract (ADR-002). Its id is the id that get_document and get_document_carousel take."
          },
          "links": {
            "type": "object",
            "description": "The card's page and contact addresses with the campaign parameters of this surface."
          },
          "schemaOrg": {
            "type": "object",
            "description": "The card's schema.org node."
          },
          "matchedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "semanticConfidence": {
            "type": "number",
            "maximum": 1,
            "minimum": 0
          }
        }
      },
      "description": "The documents, each as a card."
    },
    "message": {
      "type": "string",
      "description": "Why there are no documents, in plain words, when there are none."
    },
    "available": {
      "type": "boolean",
      "description": "False when the documents cannot be read now (reasonCode says why); true for every other answer, one with no documents included."
    },
    "reasonCode": {
      "type": "string",
      "description": "A stable code that says why the documents cannot be read, and an empty string when they can."
    },
    "schemaVersion": {
      "type": "integer",
      "description": "The version of the shape of this answer: 1."
    }
  }
}
search_documents annotations
{
  "title": "Search documents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_document — Get document
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one public document card, with its schema.org node, by the id that search_documents returns. A document that does not exist or is not published for this website returns the same not-found answer.

get_document input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
      "description": "The document id."
    }
  },
  "additionalProperties": false
}
get_document output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "available",
    "reasonCode",
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "card",
          "schemaOrg"
        ],
        "properties": {
          "card": {
            "type": "object",
            "description": "The document's DocumentCard v1: its id, title, summary, file, preview image, page and contact addresses and the rest of the contract (ADR-002). Its id is the id that get_document and get_document_carousel take."
          },
          "links": {
            "type": "object",
            "description": "The card's page and contact addresses with the campaign parameters of this surface."
          },
          "schemaOrg": {
            "type": "object",
            "description": "The card's schema.org node."
          },
          "matchedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "semanticConfidence": {
            "type": "number",
            "maximum": 1,
            "minimum": 0
          }
        }
      },
      "description": "The documents, each as a card."
    },
    "message": {
      "type": "string",
      "description": "Why there are no documents, in plain words, when there are none."
    },
    "available": {
      "type": "boolean",
      "description": "False when the documents cannot be read now (reasonCode says why); true for every other answer, one with no documents included."
    },
    "reasonCode": {
      "type": "string",
      "description": "A stable code that says why the documents cannot be read, and an empty string when they can."
    },
    "schemaVersion": {
      "type": "integer",
      "description": "The version of the shape of this answer: 1."
    }
  }
}
get_document annotations
{
  "title": "Get document",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_contact_options — Get contact options
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get how a person can contact this organisation: the address of its contact page, the enquiry routes that page offers, and the email address, telephone number and office hours the site publishes. Use it when a person asks how to get in touch. A fact the site does not publish is left out, and hours and routes are stated as the site publishes them, not as a promise of availability or of a response time. Takes no arguments, accepts no personal data and sends nothing: the person completes any enquiry on the contact page themselves.

get_contact_options input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_contact_options output schema
{
  "type": "object",
  "required": [
    "schemaVersion"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the organisation."
    },
    "email": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "telephone": {
      "type": "string"
    },
    "contactPage": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The address of the contact page, the address a person is handed to."
        },
        "title": {
          "type": "string"
        }
      }
    },
    "officeHours": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "days",
          "opens",
          "closes"
        ],
        "properties": {
          "days": {
            "type": "string"
          },
          "opens": {
            "type": "string"
          },
          "closes": {
            "type": "string"
          }
        }
      }
    },
    "sourceLinks": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "enquiryRoutes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    "schemaVersion": {
      "type": "integer",
      "description": "The version of the shape of this answer: 1."
    },
    "citationGuidance": {
      "type": "string"
    },
    "sourceLinksMarkdown": {
      "type": "string"
    },
    "citationRenderInstruction": {
      "type": "string"
    }
  }
}
get_contact_options annotations
{
  "title": "Get contact options",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_document_carousel — Show documents as cards
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when a person wants to see documents that search_documents or get_document returned: it shows up to three of them as a carousel of cards, each with the document's title, summary, size, number of pages and preview image, a button that opens the PDF and a link to contact the organisation. Pass the id of each document to show, taken from the id of its card, at most three. A document that is not published for this website is left out, and when none can be shown the answer is the one get_document gives for a document that is not found. Do not use it to find documents: call search_documents for that. A client that does not show cards receives the same answer as text.

get_document_carousel input schema
{
  "type": "object",
  "required": [
    "ids"
  ],
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "maxItems": 3,
      "minItems": 1,
      "description": "The id of each document to show, as search_documents and get_document give it: at most three."
    }
  },
  "additionalProperties": false
}
get_document_carousel output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "available",
    "reasonCode",
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "card",
          "schemaOrg"
        ],
        "properties": {
          "card": {
            "type": "object",
            "description": "The document's DocumentCard v1: its id, title, summary, file, preview image, page and contact addresses and the rest of the contract (ADR-002). Its id is the id that get_document and get_document_carousel take."
          },
          "links": {
            "type": "object",
            "description": "The card's page and contact addresses with the campaign parameters of this surface."
          },
          "schemaOrg": {
            "type": "object",
            "description": "The card's schema.org node."
          },
          "matchedFields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "semanticConfidence": {
            "type": "number",
            "maximum": 1,
            "minimum": 0
          }
        }
      },
      "description": "The documents, each as a card."
    },
    "message": {
      "type": "string",
      "description": "Why there are no documents, in plain words, when there are none."
    },
    "available": {
      "type": "boolean",
      "description": "False when the documents cannot be read now (reasonCode says why); true for every other answer, one with no documents included."
    },
    "reasonCode": {
      "type": "string",
      "description": "A stable code that says why the documents cannot be read, and an empty string when they can."
    },
    "schemaVersion": {
      "type": "integer",
      "description": "The version of the shape of this answer: 1."
    }
  }
}
get_document_carousel annotations
{
  "title": "Show documents as cards",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_contact_card — Show contact options as a card
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when a person asks how to get in touch with this organisation and would like to see it as a card: it shows the same facts as get_contact_options, which are the address of its contact page, the enquiry routes that page offers, and the email address, telephone number and office hours the site publishes, with a button that opens the contact page. A fact the site does not publish is left out, and hours and routes are stated as the site publishes them, not as a promise of availability or of a response time. Takes no arguments, accepts no personal data and sends nothing: the person completes any enquiry on the contact page themselves. A client that does not show cards receives the same answer as text.

get_contact_card input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_contact_card output schema
{
  "type": "object",
  "required": [
    "schemaVersion"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the organisation."
    },
    "email": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "telephone": {
      "type": "string"
    },
    "contactPage": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The address of the contact page, the address a person is handed to."
        },
        "title": {
          "type": "string"
        }
      }
    },
    "officeHours": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "days",
          "opens",
          "closes"
        ],
        "properties": {
          "days": {
            "type": "string"
          },
          "opens": {
            "type": "string"
          },
          "closes": {
            "type": "string"
          }
        }
      }
    },
    "sourceLinks": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "enquiryRoutes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    "schemaVersion": {
      "type": "integer",
      "description": "The version of the shape of this answer: 1."
    },
    "citationGuidance": {
      "type": "string"
    },
    "sourceLinksMarkdown": {
      "type": "string"
    },
    "citationRenderInstruction": {
      "type": "string"
    }
  }
}
get_contact_card annotations
{
  "title": "Show contact options as a card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

2 advertised

discover_site_structure

Advertised by the server during the last successful anonymous check.

Guide the model to inspect site info, navigation, and taxonomy terms.

No arguments advertised.

find_topic_content

Advertised by the server during the last successful anonymous check.

Guide the model to search the public site for a topic.

query
The topic or phrase to search for. (required)

Resources

4 advertised

Site Info

Advertised by the server during the last successful anonymous check.

Site metadata and supported capabilities.

Site Info URI
tcc://site-info

MIME type: application/json

Primary Navigation

Advertised by the server during the last successful anonymous check.

The main site navigation structure.

Primary Navigation URI
tcc://navigation

MIME type: application/json

Organization Schema

Advertised by the server during the last successful anonymous check.

Organization JSON-LD context.

Organization Schema URI
tcc://schema-context

MIME type: application/json

Document and contact cards

Advertised by the server during the last successful anonymous check.

The card view that get_document_carousel and get_contact_card show: an HTML view for a host that renders MCP Apps.

Document and contact cards URI
ui://tcc-mcp/cards-v1.html

MIME type: text/html;profile=mcp-app

Pages

Advertised by the server during the last successful anonymous check.

Paginated published pages.

Pages URI template
tcc://pages{?page,per_page}

MIME type: application/json

Posts

Advertised by the server during the last successful anonymous check.

Filtered public posts, insights, and case studies.

Posts URI template
tcc://posts{?type,page,per_page,taxonomy,term}

MIME type: application/json

Taxonomy Terms

Advertised by the server during the last successful anonymous check.

Taxonomy listings with counts.

Taxonomy Terms URI template
tcc://taxonomy-terms{?taxonomy}

MIME type: application/json

Search Results

Advertised by the server during the last successful anonymous check.

Search public site content.

Search Results URI template
tcc://search{?q,per_page}

MIME type: application/json

Documents

Advertised by the server during the last successful anonymous check.

Public document cards, filtered by topic, sector, related page or search phrase.

Documents URI template
tcc://documents{?topic,sector,page_url,query}

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2562 ms
95th percentile latency
2562 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2562 ms · metadata changed · 18 tool(s), 4 resource(s), 5 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http tcc-group-mcp https://mcp.tcc.group

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add tcc-group-mcp --url https://mcp.tcc.group

Cursor

Merge this server into .cursor/mcp.json in your project, then enable tcc-group-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "tcc-group-mcp": {
      "url": "https://mcp.tcc.group"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "tcc-group-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.tcc.group",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start tcc-group-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "tcc-group-mcp": {
      "type": "http",
      "url": "https://mcp.tcc.group"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http tcc-group-mcp https://mcp.tcc.group

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.tcc.group

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "tcc-group-mcp": {
      "serverUrl": "https://mcp.tcc.group"
    }
  }
}

Let your agent find its tools

Find servers like TCC Group MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run TCC Group MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing