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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。