Skip to main content
Glama
MacKitchin

Informa Events Directory MCP Server

by MacKitchin

Informa Events Directory MCP Server

MCP server for querying and retrieving structured event data from the Informa Connect event directory.

Available Tools

Default (always available):

  1. get_informa_events Returns normalized events across all pages (API-first, HTML fallback).

  2. get_informa_events_page Returns a single directory page with normalized results.

  3. get_informa_events_by_date_range Returns normalized events constrained by dateFrom / dateTo.

  4. list_informa_event_facets Returns raw and simplified facet/filter metadata for the current query context.

  5. find_informa_event Finds one event by id, slug, url, or name.

  6. get_informa_event_detail Fetches one event page and extracts richer detail (JSON-LD event data, offers/pricing hints, contact hints, speaker extraction).

  7. get_informa_events_with_details Fetches directory events and bulk-enriches each with event-page details using configurable concurrency (including speaker extraction).

  8. get_informa_events_chunk Cursor-based chunked retrieval for large exports to avoid oversized single responses.

  9. get_informa_event_speakers Fetches one event page and returns speaker records only, with source selection (merged, jsonld, redux).

Feature-flagged (disabled by default):

  1. get_informa_discovery_suggestions (feature-flagged) Calls the discovery suggestions endpoint and returns raw JSON.

  2. search_informa_module_speakers (feature-flagged) Calls the discovery module speakers endpoint and returns raw JSON.

  3. search_informa_module_spex (feature-flagged) Calls the discovery module spex endpoint and returns raw JSON.

Related MCP server: Indico MCP Server

Core Retrieval Behavior

  • Primary data source: POST https://informaconnect.com/api/v1/discovery/hub-search/pages/events

  • Fallback source: parse window.__REDUX_STORE__ from HTML pages

  • API payload optimization:

    • includeFacets=false (default) sends a disabled facetsConfig to reduce payload size

    • includeFacets=true enables facet payloads when needed

  • Chunk export support:

    • get_informa_events_chunk returns hasMore + nextCursor

    • cursor can be passed back to continue where the previous chunk stopped

  • Pagination stop conditions:

    • Empty page

    • Reached reported totalPages

    • maxPages safety cap

    • Two consecutive pages with no new unique events

  • Retry/backoff for 429 and 5xx

  • Missing fields normalize to null or empty arrays

Normalized Event Output

Each normalized event includes (if available):

  • eventName

  • eventUrl

  • description

  • location.city

  • location.venue

  • location.country

  • startDate

  • endDate

  • eventType

  • subBrand

  • industryOrCategory

  • pricing (currently usually null in discovery responses)

  • contactInfo (currently usually null in discovery responses)

Plus additional enrichment fields (eventId, sectors, topics, deliveryTypes, etc.).

For detail tools, the event-detail payload also includes:

  • speakers[] (merged/deduped from JSON-LD performer and Redux speakers when available)

  • speakerSources (counts by source and total)

For speaker-only retrieval (get_informa_event_speakers), the response includes:

  • speakers[]

  • speakerCount

  • speakerSource (requested mode)

  • speakerSources (available totals by source)

  • eventMeta (event name, dates, and location)

When responseMode is set to "slim", each event is reduced to:

  • eventId

  • eventName

  • eventUrl

  • startDate

  • endDate

  • location

  • eventType

  • subBrand

  • sectors

  • topics

  • deliveryTypes

When responseMode is set to "summary", each event is reduced further to:

  • eventId

  • eventName

  • eventUrl

  • startDate

  • endDate

  • city

  • country

  • venue

  • eventType

  • subBrand

  • deliveryTypes

Install

npm install
npm run build

MCP Config Example

Use [mcp-config.example.json](/Users/william.kitchin/Library/Mobile Documents/com~apple~CloudDocs/Codex Projects/Informa Events Directory MCP Server/mcp-config.example.json).

Example:

{
  "mcpServers": {
    "informa-events-directory": {
      "command": "/absolute/path/to/informa-events-directory-mcp/build/index.js"
    }
  }
}

Example Calls

1) Full crawl

{
  "tool": "get_informa_events",
  "arguments": {
    "pageSize": 100,
    "maxPages": 50,
    "subBrandFilter": "Informa Connect",
    "eventTypeFilter": "EVENT",
    "requestedSortType": "DATE",
    "includeFacets": false,
    "responseMode": "slim"
  }
}

2) Single page fetch

{
  "tool": "get_informa_events_page",
  "arguments": {
    "page": 2,
    "pageSize": 20
  }
}

3) Date-range query

{
  "tool": "get_informa_events_by_date_range",
  "arguments": {
    "dateFrom": "2026-08-01",
    "dateTo": "2026-08-31",
    "pageSize": 100,
    "maxPages": 20,
    "countryFilter": "US",
    "responseMode": "slim"
  }
}

4) Find an event by slug

{
  "tool": "find_informa_event",
  "arguments": {
    "identifier": "imn-btr-spring",
    "identifierType": "slug",
    "includeDetail": true
  }
}

5) Fetch event detail page

{
  "tool": "get_informa_event_detail",
  "arguments": {
    "slug": "imn-btr-spring",
    "includeDirectoryRecord": true
  }
}

Detail response includes detail.speakers and detail.speakerSources when speaker metadata is present on the event page.

6) Bulk enrich many events with detail pages

{
  "tool": "get_informa_events_with_details",
  "arguments": {
    "pageSize": 20,
    "maxPages": 5,
    "detailMaxEvents": 40,
    "detailConcurrency": 3,
    "stopOnDetailError": false
  }
}

7) Cursor-based chunk retrieval

{
  "tool": "get_informa_events_chunk",
  "arguments": {
    "pageSize": 100,
    "chunkPages": 2,
    "requestedSortType": "DATE",
    "responseMode": "summary",
    "includeFacets": false
  }
}

Then continue with returned nextCursor:

{
  "tool": "get_informa_events_chunk",
  "arguments": {
    "cursor": "<nextCursor-from-previous-response>",
    "chunkPages": 2
  }
}

8) Suggestions endpoint (feature-flagged)

{
  "tool": "get_informa_discovery_suggestions",
  "arguments": {
    "searchInput": "biotech",
    "pageSize": 5
  }
}

9) Event speakers (single event)

{
  "tool": "get_informa_event_speakers",
  "arguments": {
    "slug": "pharma-forum",
    "speakerSource": "merged"
  }
}

10) Speakers module endpoint (feature-flagged)

{
  "tool": "search_informa_module_speakers",
  "arguments": {
    "speakers": [
      {
        "siteId": "example-site-id",
        "contentType": "SPEAKER",
        "displayType": "LIST"
      }
    ]
  }
}

11) Spex module endpoint (feature-flagged)

{
  "tool": "search_informa_module_spex",
  "arguments": {
    "spexs": [{ "eventId": "c8b90e9b-548d-44a5-823f-f01ed5d08c13" }]
  }
}

Useful Query Parameters

  • includeFacets (boolean, default false): include discovery facets in API responses

  • responseMode ("full" | "slim" | "summary", default "full"): control event payload size

  • countryFilter (string | string[]): alias merged into locationFilter

  • deliveryTypeFilter (string | string[]): e.g. "PHYSICAL", "VIRTUAL", "ON_DEMAND"

  • sectorsFilter, topicsFilter, locationFilter: facet-driven filtering inputs

  • cursor + chunkPages: resume and control chunk-sized retrieval with get_informa_events_chunk

  • speakerSource ("merged" | "jsonld" | "redux"): source selection for get_informa_event_speakers

Speaker Retrieval Notes

  • get_informa_event_speakers is the recommended tool when you only need speaker data.

  • Speaker extraction works from event-page HTML, not directory listing API pages.

  • Source priority for quality is typically JSON-LD performer, then Redux speakers.

  • speakerSource="merged" returns deduped speakers from both sources.

Response Metadata Notes

For multi-page tools (get_informa_events, get_informa_events_by_date_range, get_informa_events_with_details), response metadata includes:

  • totalResultsReported and apiReportedTotalCount

  • totalPagesReported and apiReportedTotalPages

  • isComplete (whether retrieval completed naturally vs. capped by maxPages)

Optional Environment Variables

INFORMA_ENTRY_URL="https://informaconnect.com/events/?subBrands%5B0%5D=Informa%20Connect&availableSubBrands%5B0%5D=Informa%20Connect&requestedSortType=FEATURED&page=1&count=20&searchInput=&type%5B0%5D=EVENT"
INFORMA_ORIGIN="https://informaconnect.com"
INFORMA_DEFAULT_PAGE_SIZE=20
INFORMA_DEFAULT_MAX_PAGES=200
INFORMA_REQUEST_TIMEOUT_MS=15000
INFORMA_MAX_RETRIES=4
INFORMA_ENABLE_SUGGESTIONS_TOOL=false
INFORMA_ENABLE_MODULE_TOOLS=false

Set INFORMA_ENABLE_SUGGESTIONS_TOOL=true and/or INFORMA_ENABLE_MODULE_TOOLS=true to expose the optional discovery tools.

Limitations

  • Discovery API is unofficial and may change.

  • Some event metadata (pricing/contact) is not consistently present in discovery payloads.

  • Facet metadata may be empty for some query contexts.

  • HTML fallback relies on Redux state being embedded in the page.

  • Anti-bot/CDN protections can affect reliability at higher request volume.

  • modules/speakers request shape is not publicly documented and may return 422 unless exact speaker payload objects are provided.

  • Speaker extraction quality depends on event-page metadata consistency; JSON-LD performer is usually the cleanest source.

  • search_informa_module_speakers is included for experimentation, but event-page speaker extraction is currently the more reliable path.

Available Tools

2 tools
get_informa_event_speakersB

Fetch an individual event page and return only structured speaker records (JSON-LD performer + Redux speakers).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoEvent slug path (e.g. 'pharma-forum').
entryUrlNoEntry URL used for HTML fallback pagination.https://informaconnect.com/events/?subBrands%5B0%5D=Informa%20Connect&availableSubBrands%5B0%5D=Informa%20Connect&requestedSortType=FEATURED&page=1&count=20&searchInput=&type%5B0%5D=EVENT
eventUrlNoAbsolute event URL.
speakerSourceNoSpeaker source selection: merged (deduped), jsonld-only, or redux-only.merged
maxPagesSearchNoMax pages scanned when includeDirectoryRecord is true.
forceHtmlFallbackNoSkip API and parse directory pages from embedded Redux state.
includeDirectoryRecordNoAttempt to match this event in discovery index and return normalized record metadata.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. The description states it fetches and returns speaker records but does not mention any side effects, rate limits, authentication needs, or error conditions. Some behavioral hints are in parameter descriptions (e.g., forceHtmlFallback) but not in the main description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, well-structured with parenthetical detail. No superfluous words, directly conveys the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 7 parameters and no output schema, the description does not explain the return format, pagination, or how parameters affect output. It lacks completeness for an effective agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add any extra meaning beyond what the parameter descriptions provide; it only states the overall purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states the tool fetches an individual event page and returns only structured speaker records, specifying sources (JSON-LD performer + Redux speakers). This clearly distinguishes it from the sibling tool 'get_informa_events_with_details', which likely returns broader event details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus the sibling. The description implies it's for speaker data but does not state when not to use it or provide alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_informa_events_with_detailsB

Bulk-enrich directory events with event-page details (JSON-LD/offers/contact hints) using controlled concurrency.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToNoOptional upper bound ISO date (YYYY-MM-DD) applied after directory retrieval.
dateFromNoOptional lower bound ISO date (YYYY-MM-DD) applied after directory retrieval.
entryUrlNoEntry URL used for HTML fallback pagination.https://informaconnect.com/events/?subBrands%5B0%5D=Informa%20Connect&availableSubBrands%5B0%5D=Informa%20Connect&requestedSortType=FEATURED&page=1&count=20&searchInput=&type%5B0%5D=EVENT
maxPagesNoPagination safety cap.
pageSizeNoNumber of directory items per page.
startPageNoStarting page index.
monthFilterNoFilter by month facet values, e.g. 'March 2026'.
resultLimitNoOptional cap on directory events before detail enrichment.
searchInputNoKeyword query string.
responseModeNoOutput shape. 'slim' and 'summary' return reduced field sets.full
topicsFilterNoFilter by topic facet values.
countryFilterNoFriendly alias for country-level location filtering. Merged into locationFilter.
includeFacetsNoWhen true, request facet payloads from discovery API. Disable for smaller responses.
sectorsFilterNoFilter by sector facet values.
locationFilterNoFilter by location facet values.
subBrandFilterNoFilter by sub-brand(s).
detailMaxEventsNoMaximum number of events to enrich with detail pages.
eventTypeFilterNoFilter by type(s). Defaults to EVENT.
detailConcurrencyNoNumber of concurrent event-page detail fetches.
forceHtmlFallbackNoSkip API and parse directory pages from embedded Redux state.
requestedSortTypeNoSort order requested from discovery API.FEATURED
stopOnDetailErrorNoWhen true, stop remaining detail fetches after the first detail error.
deliveryTypeFilterNoFilter by delivery type values, e.g. PHYSICAL, VIRTUAL.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. Mentions 'controlled concurrency' but does not disclose potential side effects like rate limiting, failure modes, or data mutability. Lacks detail on behavior beyond a high-level summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single sentence with relevant keywords (bulk-enrich, JSON-LD, offers, contact hints, controlled concurrency). Efficient but could include brief additional context without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 23 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error handling, or detail enrichment process. Lacks completeness for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description does not add additional meaning beyond the schema; the schema already describes parameters well. No extra context provided by description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'bulk-enrich' and resource 'directory events' with explicit detail types (JSON-LD/offers/contact hints) and a distinguishing feature (controlled concurrency). Clearly differentiates from sibling 'get_informa_event_speakers' which focuses on speakers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no conditions for use, no prerequisites, and no mention of when not to use it. The description implies usage for enriching events but lacks explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.3.0
    • First observedget_informa_event_speakers
    • First observedget_informa_events_with_details

TDQS

B3.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one retrieves speakers for a specific event, the other bulk-enriches events with details. No overlap in functionality.

Naming Consistency5/5

Both tools follow a consistent 'get_informa_<resource>' pattern, using snake_case and clear descriptors ('event_speakers' vs 'events_with_details').

Tool Count2/5

With only 2 tools, the server feels underdeveloped for an events directory. Key operations like searching, filtering, or retrieving single events are missing, making it too sparse for the domain.

Completeness2/5

The server lacks fundamental operations for an events directory, such as listing all events, searching, or getting individual event details. The two tools cover only speaker retrieval and bulk enrichment, leaving major gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers