Informa Events Directory MCP Server
Enables querying and retrieving structured event data from the Informa Connect event directory, with support for various filters, pagination, and speaker extraction.
README
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):
-
get_informa_eventsReturns normalized events across all pages (API-first, HTML fallback). -
get_informa_events_pageReturns a single directory page with normalized results. -
get_informa_events_by_date_rangeReturns normalized events constrained bydateFrom/dateTo. -
list_informa_event_facetsReturns raw and simplified facet/filter metadata for the current query context. -
find_informa_eventFinds one event byid,slug,url, orname. -
get_informa_event_detailFetches one event page and extracts richer detail (JSON-LD event data, offers/pricing hints, contact hints, speaker extraction). -
get_informa_events_with_detailsFetches directory events and bulk-enriches each with event-page details using configurable concurrency (including speaker extraction). -
get_informa_events_chunkCursor-based chunked retrieval for large exports to avoid oversized single responses. -
get_informa_event_speakersFetches one event page and returns speaker records only, with source selection (merged,jsonld,redux).
Feature-flagged (disabled by default):
-
get_informa_discovery_suggestions(feature-flagged) Calls the discovery suggestions endpoint and returns raw JSON. -
search_informa_module_speakers(feature-flagged) Calls the discovery module speakers endpoint and returns raw JSON. -
search_informa_module_spex(feature-flagged) Calls the discovery module spex endpoint and returns raw JSON.
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 disabledfacetsConfigto reduce payload sizeincludeFacets=trueenables facet payloads when needed
- Chunk export support:
get_informa_events_chunkreturnshasMore+nextCursor- cursor can be passed back to continue where the previous chunk stopped
- Pagination stop conditions:
- Empty page
- Reached reported
totalPages maxPagessafety cap- Two consecutive pages with no new unique events
- Retry/backoff for
429and5xx - Missing fields normalize to
nullor empty arrays
Normalized Event Output
Each normalized event includes (if available):
eventNameeventUrldescriptionlocation.citylocation.venuelocation.countrystartDateendDateeventTypesubBrandindustryOrCategorypricing(currently usuallynullin discovery responses)contactInfo(currently usuallynullin 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-LDperformerand Reduxspeakerswhen available)speakerSources(counts by source and total)
For speaker-only retrieval (get_informa_event_speakers), the response includes:
speakers[]speakerCountspeakerSource(requested mode)speakerSources(available totals by source)eventMeta(event name, dates, and location)
When responseMode is set to "slim", each event is reduced to:
eventIdeventNameeventUrlstartDateendDatelocationeventTypesubBrandsectorstopicsdeliveryTypes
When responseMode is set to "summary", each event is reduced further to:
eventIdeventNameeventUrlstartDateendDatecitycountryvenueeventTypesubBranddeliveryTypes
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, defaultfalse): include discovery facets in API responsesresponseMode("full" | "slim" | "summary", default"full"): control event payload sizecountryFilter(string | string[]): alias merged intolocationFilterdeliveryTypeFilter(string | string[]): e.g."PHYSICAL","VIRTUAL","ON_DEMAND"sectorsFilter,topicsFilter,locationFilter: facet-driven filtering inputscursor+chunkPages: resume and control chunk-sized retrieval withget_informa_events_chunkspeakerSource("merged" | "jsonld" | "redux"): source selection forget_informa_event_speakers
Speaker Retrieval Notes
get_informa_event_speakersis 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 Reduxspeakers. 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:
totalResultsReportedandapiReportedTotalCounttotalPagesReportedandapiReportedTotalPagesisComplete(whether retrieval completed naturally vs. capped bymaxPages)
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/speakersrequest shape is not publicly documented and may return422unless exact speaker payload objects are provided.- Speaker extraction quality depends on event-page metadata consistency; JSON-LD
performeris usually the cleanest source. search_informa_module_speakersis included for experimentation, but event-page speaker extraction is currently the more reliable path.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.