事件数据查询服务器

Informa Events Directory MCP Server 是一个用于查询和检索结构化事件数据的服务器,支持多种查询工具和API优化。

  • by MacKitchin
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 MacKitchin/informa-events-directory-mcp-server

使用说明

Informa事件目录MCP服务器

MCP服务器,用于从Informa Connect事件目录查询和检索结构化事件数据。

可用工具

默认值(始终可用):

  1. get_informa_events 返回所有页面上的规范化事件(API-first,HTML回退)。

  2. get_informa_events_page 返回具有规范化结果的单个目录页。

  3. get_informa_events_by_date_range 返回受以下约束的规范化事件 dateFrom / dateTo.

  4. list_informa_event_facets 返回当前查询上下文的原始和简化的方面/过滤器元数据。

  5. find_informa_event 按以下方式查找一个事件 id, slug, url,或 name.

  6. get_informa_event_detail 获取一个事件页面并提取更丰富的细节(JSON-LD事件数据、报价/定价提示、联系人提示、说话者提取)。

  7. get_informa_events_with_details 获取目录事件,并使用可配置的并发性(包括说话者提取)用事件页面详细信息批量丰富每个事件。

  8. get_informa_events_chunk 基于游标的分块检索用于大型导出,以避免过大的单个响应。

  9. get_informa_event_speakers 获取一个事件页面,仅返回带有源选择的演讲者记录(merged, jsonld, redux).

标记的功能(默认情况下禁用):

  1. get_informa_discovery_suggestions (特征标记) 调用发现建议端点并返回原始JSON。

  2. search_informa_module_speakers (特征标记) 调用发现模块扬声器端点并返回原始JSON。

  3. search_informa_module_spex (特征标记) 调用发现模块spex端点并返回原始JSON。

核心检索行为

  • 主要数据来源: POST https://informaconnect.com/api/v1/discovery/hub-search/pages/events
  • 回退源:解析 window.__REDUX_STORE__ 来自HTML页面
  • API有效载荷优化:
    • includeFacets=false (默认)发送禁用 facetsConfig 减小有效载荷大小
    • includeFacets=true 在需要时启用方面有效载荷
  • Chunk出口支持:
    • get_informa_events_chunk 回报 hasMore + nextCursor
    • 光标可以传递回上一个块停止的位置继续
  • 分页停止条件:
    • 空白页
    • 已联系报告 totalPages
    • maxPages 安全帽
    • 连续两页,没有新的独特事件
  • 重试/回退 429 和 5xx
  • 缺少的字段将标准化为 null 或空数组

标准化事件输出

每个规范化事件包括(如果可用):

  • eventName
  • eventUrl
  • description
  • location.city
  • location.venue
  • location.country
  • startDate
  • endDate
  • eventType
  • subBrand
  • industryOrCategory
  • pricing (目前通常 null 在发现响应中)
  • contactInfo (目前通常 null 在发现响应中)

加上额外的富集区(eventId, sectors, topics, deliveryTypes等等)。

对于详细信息工具,事件详细信息有效载荷还包括:

  • speakers[] (从JSON-LD合并/重复数据删除 performer 以及Redux speakers 可用时)
  • speakerSources (按来源和总数统计)

仅用于说话者检索(get_informa_event_speakers),响应包括:

  • speakers[]
  • speakerCount
  • speakerSource (请求模式)
  • speakerSources (按来源分列的可用总数)
  • eventMeta (事件名称、日期和地点)

当 responseMode 设置为 "slim",每个事件简化为:

  • eventId
  • eventName
  • eventUrl
  • startDate
  • endDate
  • location
  • eventType
  • subBrand
  • sectors
  • topics
  • deliveryTypes

当 responseMode 设置为 "summary",每个事件进一步简化为:

  • eventId
  • eventName
  • eventUrl
  • startDate
  • endDate
  • city
  • country
  • venue
  • eventType
  • subBrand
  • deliveryTypes

安装

npm install
npm run build

MCP配置示例

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

例子:

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

示例通话

1) 完全爬行

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

2) 单页获取

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

3) 日期范围查询

{
  "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) 按slug查找事件

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

5) 获取事件详细信息页面

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

详细回复包括 detail.speakers 和 detail.speakerSources 当演讲者元数据出现在事件页面上时。

6) 通过详细页面丰富许多活动

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

7) 基于游标的块检索

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

然后继续返回 nextCursor:

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

8) 建议端点(已标记特征)

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

9) 活动演讲者(单次活动)

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

10) 扬声器模块端点(已标记功能)

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

11) Spex模块端点(特征标记)

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

有用的查询参数

  • includeFacets (boolean,默认值 false):在API响应中包含发现方面
  • responseMode ("full" | "slim" | "summary",默认值 "full"):控制事件有效负载大小
  • countryFilter (string | string[]):别名合并到 locationFilter
  • deliveryTypeFilter (string | string[]):例如。 "PHYSICAL", "VIRTUAL", "ON_DEMAND"
  • sectorsFilter, topicsFilter, locationFilter:面驱动的过滤输入
  • cursor + chunkPages:使用以下命令恢复和控制块大小的检索 get_informa_events_chunk
  • speakerSource ("merged" | "jsonld" | "redux"):源选择 get_informa_event_speakers

演讲者检索笔记

  • get_informa_event_speakers 当您只需要扬声器数据时,是推荐的工具。
  • 发言人提取工作从事件页面HTML,而不是列出API页面的目录。
  • 质量的源优先级通常是JSON-LD performer,然后是Redux speakers.
  • speakerSource="merged" 返回来自两个源的重复数据消除的扬声器。

响应元数据注释

用于多页工具(get_informa_events, get_informa_events_by_date_range, get_informa_events_with_details),响应元数据包括:

  • totalResultsReported 和 apiReportedTotalCount
  • totalPagesReported 和 apiReportedTotalPages
  • isComplete (检索是否自然完成,是否有上限 maxPages)

可选环境变量

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

集 INFORMA_ENABLE_SUGGESTIONS_TOOL=true 和 INFORMA_ENABLE_MODULE_TOOLS=true 以公开可选的发现工具。

局限性

  • Discovery API是非官方的,可能会更改。
  • 一些事件元数据(定价/联系)在发现有效载荷中并不一致。
  • 对于某些查询上下文,Facet元数据可能为空。
  • HTML回退依赖于页面中嵌入的Redux状态。
  • 反机器人/CDN保护会影响更高请求量下的可靠性。
  • modules/speakers 请求形状没有公开记录,可能会返回 422 除非提供精确的扬声器有效载荷对象。
  • 说话人提取质量取决于事件页面元数据的一致性;JSON-LD performer 通常是最干净的来源。
  • search_informa_module_speakers 包括用于实验,但事件页面说话者提取目前是更可靠的方法。