# mcp-ted MCP server

TED MCP Server: Real-time EU public tenders access. https://www.lexsocket.ai/

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-lexsocket-mcp-ted
- Repository: https://github.com/lexsocket/mcp-ted

## Install
- Endpoint: https://mcp.lexsocket.ai/ted/
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: x-api-key (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://mcp.lexsocket.ai/ted/
- Header: x-api-key

## Tools
- search_ted - Search TED procurement notices using hybrid, full-text, or vector search.

Args:
    query: The search query string
    mode: Search mode - 'hybrid' (default), 'fts' (full-text/BM25), or 'vector' (semantic)
    limit: Maximum number of results (default: 10)
    fts_weight: Weight for full-text search in hybrid mode (0-1)
    vector_weight: Weight for vector search in hybrid mode (0-1)
    procurement_type: Filter by procurement type (e.g., 'open', 'restricted')
    country: Filter by country code (e.g., 'POL', 'FRA')
    cpv_code: Filter by CPV code (exact match in cpv_codes array)
    nuts_code: Filter by NUTS code prefix (e.g., 'FR', 'FR10', 'FR101')
    min_value: Minimum estimated value
    max_value: Maximum estimated value
    currency: Filter by currency code (e.g., 'EUR', 'GBP')
    published_after: Filter notices published after this date (ISO format, e.g., '2024-01-01')
    published_before: Filter notices published before this date (ISO format)
    deadline_after: Filter by submission deadline after this date (ISO format)
    deadline_before: Filter by submission deadline before this date (ISO format)

Returns:
    Search results with notice metadata and relevance scores Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_fts - Search TED notices using full-text search (BM25 via Tantivy).

Best for keyword matching and exact phrase searches.

Args:
    query: The search query string
    limit: Maximum number of results (default: 10)
    procurement_type: Filter by procurement type (optional)

Returns:
    Search results ranked by BM25 text relevance Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_semantic - Search TED notices using semantic vector search.

Best for conceptual queries and finding related tenders.

Args:
    query: The search query (natural language)
    limit: Maximum number of results (default: 10)
    country: Filter by country code (optional)

Returns:
    Search results ranked by semantic similarity Endpoint: https://mcp.lexsocket.ai/ted/
- get_ted_notice - Get a specific TED notice by its notice ID.

Args:
    notice_id: The notice UUID

Returns:
    Full notice content including XML or error if not found Endpoint: https://mcp.lexsocket.ai/ted/
- get_ted_stats - Get statistics about the TED notices database.

Returns:
    Database statistics including row count, storage info, and embedding service status Endpoint: https://mcp.lexsocket.ai/ted/
- find_similar_ted_tenders - Find TED tenders similar to a given notice using its stored embedding vector.

No external API call needed — uses the vector already stored in the database.

Args:
    notice_id: The notice UUID to find similar tenders for
    limit: Maximum number of results (default: 10)
    country: Filter by country code (optional)
    cpv_code: Filter by CPV code (optional)
    nuts_code: Filter by NUTS code prefix (optional)

Returns:
    Similar tenders ranked by cosine similarity Endpoint: https://mcp.lexsocket.ai/ted/
- browse_tenders_by_deadline - Browse TED tenders by submission deadline.

Returns tenders sorted by deadline (ascending). If no date range is specified,
defaults to deadlines from today onwards.

Args:
    after: Show deadlines after this date (ISO format, default: today)
    before: Show deadlines before this date (ISO format, optional)
    country: Filter by country code (optional)
    cpv_code: Filter by CPV code (optional)
    nuts_code: Filter by NUTS code prefix (optional)
    procurement_type: Filter by procurement type (optional)
    limit: Maximum number of results (default: 20)

Returns:
    Tenders sorted by deadline ascending Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_by_buyer - Search TED notices by contracting authority / buyer name.

Uses full-text search on the contracting_party_name field.

Args:
    buyer_name: Name (or partial name) of the buyer / contracting authority
    country: Filter by country code (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Notices matching the buyer name Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_by_cpv - Search TED notices by CPV (Common Procurement Vocabulary) code.

Supports both exact codes (e.g., '45000000') and prefix matching (e.g., '45').
Optionally combine with a text query for hybrid search.

Args:
    cpv_code: CPV code — exact (e.g., '45000000') or prefix (e.g., '45')
    query: Optional text query to combine with CPV filter (enables hybrid search)
    country: Filter by country code (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Notices matching the CPV code Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_by_nuts - Search TED notices by NUTS (Nomenclature of Territorial Units for Statistics) code.

Supports prefix matching: 'FR' matches all of France, 'FR10' matches Ile-de-France, etc.

Args:
    nuts_code: NUTS code prefix (e.g., 'FR', 'FR10', 'DE300')
    query: Optional text query to combine with NUTS filter (enables hybrid search)
    country: Filter by country code (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Notices matching the NUTS code Endpoint: https://mcp.lexsocket.ai/ted/
- search_ted_by_value_range - Search TED notices by estimated contract value range.

Args:
    min_value: Minimum estimated value (optional)
    max_value: Maximum estimated value (optional)
    currency: Currency code (default: 'EUR')
    query: Optional text query to combine with value filter (enables hybrid search)
    country: Filter by country code (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Notices within the specified value range Endpoint: https://mcp.lexsocket.ai/ted/
- get_ted_statistics - Get aggregated statistics about TED notices.

Args:
    group_by: Field to group by — one of: 'procurement_type', 'currency', 'nuts_code_main', 'country'
    country: Filter by country code before aggregating (optional)
    limit: Maximum number of groups to return (default: 20)

Returns:
    Counts grouped by the specified field Endpoint: https://mcp.lexsocket.ai/ted/
- search_tenders - Search below-threshold procurement tenders across FR, GB, DE, ES, IT, NL, IE, PT, DK, PL, and AT.

Uses hybrid search combining full-text (BM25) and vector (semantic) search with RRF.

Args:
    query: Search query string
    mode: Search mode — 'hybrid' (default), 'fts' (full-text/BM25), or 'vector' (semantic)
    limit: Maximum results (default: 10)
    fts_weight: Weight for full-text search in hybrid mode (0-1)
    vector_weight: Weight for vector search in hybrid mode (0-1)
    country: Filter by country — 'FR', 'GB'/'UK', 'DE', 'ES', 'IT', 'NL', 'IE', 'PT', 'DK', 'PL', 'AT'
    status: Filter by status — 'active', 'awarded', 'cancelled'
    cpv_code: Filter by CPV code (exact match in cpv_codes array)
    nuts_code: Filter by NUTS code prefix (e.g., 'FR', 'FR10', 'DE300')
    source: Filter by data source — 'BOAMP', 'Contracts Finder', 'oeffentlichevergabe.de', 'PLACSP', 'ANAC', 'TenderNed', 'eTenders', 'BASE', 'udbud.dk', 'ezamowienia.gov.pl', 'ausschreibungen.usp.gv.at'
    min_value: Minimum estimated value
    max_value: Maximum estimated value
    currency: Filter by currency code (e.g., 'EUR', 'GBP')
    published_after: Filter by publication date after this date (ISO format, e.g., '2025-01-01')
    published_before: Filter by publication date before this date (ISO format)
    deadline_after: Filter by submission deadline after this date (ISO format)
    deadline_before: Filter by submission deadline before this date (ISO format)

Returns:
    Search results with tender metadata and relevance scores Endpoint: https://mcp.lexsocket.ai/ted/
- get_tender - Get a specific tender by its ID.

Args:
    tender_id: The tender identifier (e.g. 'FR-12345' or 'GB-abc-def')

Returns:
    Full tender record including raw JSON, or error if not found Endpoint: https://mcp.lexsocket.ai/ted/
- get_open_opportunities - Get currently open/active procurement tenders. Useful for bid/no-bid analysis.

Args:
    query: Optional keyword search
    country: Country filter — 'FR', 'GB'/'UK', 'DE', 'ES', 'IT', 'NL', 'IE', 'PT', 'DK', 'PL', 'AT', or None for all
    cpv_code: Optional CPV code filter
    limit: Maximum results (default: 10)

Returns:
    Active tenders matching the criteria Endpoint: https://mcp.lexsocket.ai/ted/
- get_stats - Get statistics about the national tenders database.

Returns:
    Database statistics including row count, storage info, and embedding service status Endpoint: https://mcp.lexsocket.ai/ted/
- find_similar_tenders - Find tenders similar to a given tender using its stored embedding vector.

No external API call needed — uses the vector already stored in the database.

Args:
    tender_id: The tender ID to find similar tenders for
    limit: Maximum number of results (default: 10)
    country: Filter by country code (optional)
    cpv_code: Filter by CPV code (optional)
    nuts_code: Filter by NUTS code prefix (optional)

Returns:
    Similar tenders ranked by cosine similarity Endpoint: https://mcp.lexsocket.ai/ted/
- browse_by_deadline - Browse tenders by submission deadline.

Returns tenders sorted by deadline (ascending). If no date range is specified,
defaults to deadlines from today onwards.

Args:
    after: Show deadlines after this date (ISO format, default: today)
    before: Show deadlines before this date (ISO format, optional)
    country: Filter by country code (optional)
    cpv_code: Filter by CPV code (optional)
    nuts_code: Filter by NUTS code prefix (optional)
    status: Filter by status (optional)
    source: Filter by data source (optional)
    limit: Maximum number of results (default: 20)

Returns:
    Tenders sorted by deadline ascending Endpoint: https://mcp.lexsocket.ai/ted/
- search_by_buyer - Search tenders by contracting authority / buyer name.

Uses full-text search on the buyer_name field.

Args:
    buyer_name: Name (or partial name) of the buyer / contracting authority
    country: Filter by country code (optional)
    status: Filter by status (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Tenders matching the buyer name Endpoint: https://mcp.lexsocket.ai/ted/
- search_by_cpv - Search tenders by CPV (Common Procurement Vocabulary) code.

Supports exact codes (e.g., '45000000'). Optionally combine with a text query for hybrid search.

Args:
    cpv_code: CPV code (e.g., '45000000')
    query: Optional text query to combine with CPV filter (enables hybrid search)
    country: Filter by country code (optional)
    status: Filter by status (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Tenders matching the CPV code Endpoint: https://mcp.lexsocket.ai/ted/
- search_by_nuts - Search tenders by NUTS (Nomenclature of Territorial Units for Statistics) code.

Supports prefix matching: 'FR' matches all of France, 'FR10' matches Ile-de-France, etc.

Args:
    nuts_code: NUTS code prefix (e.g., 'FR', 'FR10', 'DE300')
    query: Optional text query to combine with NUTS filter (enables hybrid search)
    country: Filter by country code (optional)
    status: Filter by status (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Tenders matching the NUTS code Endpoint: https://mcp.lexsocket.ai/ted/
- search_by_value_range - Search tenders by estimated contract value range.

Args:
    min_value: Minimum estimated value (optional)
    max_value: Maximum estimated value (optional)
    currency: Currency code (default: 'EUR')
    query: Optional text query to combine with value filter (enables hybrid search)
    country: Filter by country code (optional)
    status: Filter by status (optional)
    limit: Maximum number of results (default: 10)

Returns:
    Tenders within the specified value range Endpoint: https://mcp.lexsocket.ai/ted/
- get_tender_statistics - Get aggregated statistics about national tenders.

Args:
    group_by: Field to group by — one of: 'country', 'status', 'source', 'currency', 'nuts_code_main'
    country: Filter by country code before aggregating (optional)
    status: Filter by status before aggregating (optional)
    limit: Maximum number of groups to return (default: 20)

Returns:
    Counts grouped by the specified field Endpoint: https://mcp.lexsocket.ai/ted/

## Resources
- lexsocket://info - Information about the LexSocket unified search service. MIME type: text/plain

## Prompts
Not captured

## Metadata
- Owner: io.github.lexsocket
- Version: 1.0.7
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jan 23, 2026
- Source: https://registry.modelcontextprotocol.io
