Skip to main content
Glama
handaas

Exhibition Big Data MCP Server

by handaas
README.md
# 展会行业情报

[该MCP服务提供企业关键词模糊搜索、企业参展记录、展会场馆、展会搜索、参展商筛选及展会参展企业等展会大数据查询功能。](https://www.handaas.com/)


## 主要功能

- 🔍 企业关键词模糊搜索
- 📋 企业参展记录查询
- 🏟️ 展会场馆搜索
- 🎪 展会搜索
- 🏢 参展商筛选
- 📊 展会参展企业查询

## 环境要求

- Python 3.10+
- 依赖包:python-dotenv, requests, mcp

## 本地快速启动

### 1. 克隆项目
```bash
git clone https://github.com/handaas/exhibition-mcp-server
cd exhibition-mcp-server
```

### 2. 创建虚拟环境&安装依赖

```bash
python -m venv mcp_env && source mcp_env/bin/activate
pip install -r requirements.txt -c constraints.txt
```

### 3. 环境配置

复制环境变量模板并配置:

```bash
cp .env.example .env
```

编辑 `.env` 文件,配置以下环境变量:

```env
INTEGRATOR_ID=your_integrator_id
SECRET_ID=your_secret_id
SECRET_KEY=your_secret_key
```

### 4. streamable-http启动服务

```bash
python server/mcp_server.py streamable-http
```

服务将在 `http://localhost:8000` 启动。

#### 支持启动方式 stdio 或 sse 或 streamable-http

### 5. Cursor / Cherry Studio MCP配置

```json
{
  "mcpServers": {
    "handaas-exhibition-mcp-server": {
      "type": "streamableHttp",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
```

## STDIO版安装部署

### 设置Cursor / Cherry Studio MCP配置

```json
{
  "mcpServers": {
    "exhibition-mcp-server": {
      "command": "uv",
      "args": ["run", "mcp", "run", "{workdir}/server/mcp_server.py"],
      "env": {
        "PATH": "{workdir}/mcp_env/bin:$PATH",
        "PYTHONPATH": "{workdir}/mcp_env",
        "INTEGRATOR_ID": "your_integrator_id",
        "SECRET_ID": "your_secret_id",
        "SECRET_KEY": "your_secret_key"
      }
    }
  }
}
```

## 使用官方Remote服务

### 1. 直接设置Cursor / Cherry Studio MCP配置

```json
{
  "mcpServers": {
    "exhibition-mcp-server":{
      "type": "streamableHttp",
      "url": "https://mcp.handaas.com/exhibition/exhibition_bigdata?token={token}"
      }
  }
}
```

### 注意:integrator_id、secret_id、secret_key及token需要登录 https://www.handaas.com/ 进行注册开通平台获取


## 可用工具

### 1. exhibition_bigdata_fuzzy_search
**功能**: 企业关键词模糊查询

根据提供的企业名称、人名、品牌、产品、岗位等关键词模糊查询相关企业列表。

**参数**:
- `matchKeyword` (必需): 匹配关键词 - 查询各类信息包含匹配关键词的企业
- `pageIndex` (可选): 分页开始位置 - 默认从1开始
- `pageSize` (可选): 每页数量 - 默认50条,最多50条

**返回值**:
- `total`: 总数
- `resultList`: 企业列表
  - `name`: 企业名称
  - `nameId`: 企业ID
  - `address`: 注册地址
  - `foundTime`: 成立时间
  - `enterpriseType`: 企业主体类型
  - `legalRepresentative`: 法定代表人
  - `operStatus`: 经营状态
  - `regCapitalCoinType`: 注册资本币种
  - `regCapitalValue`: 注册资本金额
  - `homepage`: 企业官网
  - `catchReason`: 命中原因

### 2. exhibition_bigdata_exhibition_participation
**功能**: 查询企业参展记录

通过输入企业的标识信息(如企业名称、统一社会信用代码、企业ID或注册号),返回该企业参加展会的详细信息。

**参数**:
- `matchKeyword` (必需): 企业名称/注册号/统一社会信用代码/企业ID
- `pageIndex` (可选): 页码 - 默认从1开始
- `pageSize` (可选): 分页大小 - 一页最多获取50条数据,默认10条
- `keywordType` (可选): 主体类型 - 枚举值:`name`(企业名称)、`nameId`(企业ID)、`regNumber`(注册号)、`socialCreditCode`(统一社会信用代码)

**返回值**:
- `total`: 总数
- `resultList`: 参展记录列表
  - `fairName`: 展会名称
  - `fairBeginTime`: 开展时间
  - `fairEndTime`: 闭展时间
  - `fairPavilion`: 展馆名称
  - `fairDesc`: 展会描述
  - `fairLogo`: 展会Logo
  - `isOpen`: 是否开展

### 3. exhibition_bigdata_exhibition_venue_search
**功能**: 搜索展会场馆

按省市地区和可选关键词搜索展会场馆信息。

**参数**:
- `pavilionRegion` (必需): 场馆所在省市 - 不可多选,例如 `福建省,厦门市`;直辖市可传 `北京`
- `matchKeyword` (可选): 场馆名称或简介关键词
- `pageIndex` (可选): 页码 - 默认从1开始
- `pageSize` (可选): 每页数量 - 默认10条,最多50条

**返回值**:
- `total`: 总数
- `resultList`: 场馆列表
  - `_id`: 场馆ID
  - `pavilionName`: 场馆名称
  - `pavilionAddress`: 场馆地址
  - `pavilionScale`: 展览面积
  - `pavilionHomepage`: 官网链接
  - `pavilionContact`: 联系方式(contactType: 1=固定电话,2=邮箱,5=传真)
  - `fairCount`: 展会数

### 4. exhibition_bigdata_exhibition_search
**功能**: 搜索展会

按展会名称或展品范围关键词搜索展会,也用于取得下一步查询参展企业所需的展会ID。

**参数**:
- `matchKeyword` (可选): 展会名称或展品范围关键词
- `pageIndex` (可选): 页码 - 默认从1开始
- `pageSize` (可选): 每页数量 - 默认50条,最多50条

**返回值**:
- `total`: 总数
- `resultList`: 展会列表
  - `_id`: 展会ID
  - `fairName`: 展会名称
  - `fairBeginTime`: 开展时间
  - `fairEndTime`: 闭展时间
  - `fairPavilion`: 展馆地址
  - `fairDesc`: 展会描述
  - `fairLogo`: 展会Logo

### 5. exhibition_bigdata_exhibitor_search
**功能**: 筛选参展商

按企业关键词、地区、展会行业、参展时间或参展次数筛选参展商。

**参数**:
- `matchKeyword` (可选): 企业名称关键词
- `fairRegion` (可选): 展商所在省市 - 不可多选,例如 `福建省,厦门市`
- `fairIndustries` (可选): 单个展会专题 - 例如 `教育/职业培训/商业`
- `fairBeginTimes` (可选): 参展开始时间 - 格式 `yyyy-mm-dd`
- `fairEndTimes` (可选): 参展结束时间 - 格式 `yyyy-mm-dd`
- `fairFilter` (可选): 参展次数枚举 - `5场以下`、`5-10场`、`10-20场`、`20-50场`、`50-100场`、`100场以上`
- `pageIndex` (可选): 页码 - 默认从1开始
- `pageSize` (可选): 每页数量 - 默认10条,最多50条

**返回值**:
- `total`: 总数
- `resultList`: 参展商列表
  - `name`: 企业名称
  - `nameId`: 企业ID
  - `enterpriseInfo`: 企业信息(含经营状态、规模、地址、行业、注册资本等)
  - `fairCount`: 参展记录数
  - `latestFair`: 最新参展展会信息
  - `latestFairBeginTime`: 最新参展时间

### 6. exhibition_bigdata_exhibition_exhibitors
**功能**: 查询展会参展企业

通过展会ID查询该展会的参展企业列表。需要先调用展会搜索获取展会ID。

**参数**:
- `matchKeyword` (必需): 展会ID - 不能为空白字符串
- `pageIndex` (可选): 页码 - 默认从1开始
- `pageSize` (可选): 每页数量 - 范围1~50,默认50

**返回值**:
- `total`: 参展企业总数
- `resultList`: 参展企业列表
  - `name`: 企业名称
  - `nameId`: 企业ID

## 使用注意事项

1. **企业全称要求**: 在调用需要企业全称的接口时,需要先调用关键词模糊查询企业接口进行补全后,再调用该接口。
2. **展会ID获取**: 查询展会参展企业需要先通过展会搜索获取展会`_id`,不能直接传展会名称。
3. **分页参数**: 各分页工具均支持`pageSize`,并将其传递给查询接口。企业关键词模糊查询、展会搜索和参展企业查询默认每页50条;参展记录、场馆搜索和参展商搜索默认每页10条,一页最多50条。连续翻页时请保持每页数量一致。
4. **错误处理**: 所有接口都包含错误处理,查询失败时会返回相应的错误信息;调用HandaaS上游接口的HTTP请求超时时间为30秒。

## 使用提问示例

### exhibition_bigdata_fuzzy_search (企业关键词模糊搜索)
1. 帮我查找包含"华为"关键词的参展企业信息
2. 搜索与"医疗器械"相关的企业列表
3. 查询名称中包含"广交会"的参展公司

### exhibition_bigdata_exhibition_participation (企业参展记录查询)
1. 华为参加过哪些展会?
2. 查询腾讯科技有限公司的参展历史
3. 字节跳动参加过什么展会?

### exhibition_bigdata_exhibition_venue_search (展会场馆搜索)
1. 上海有哪些展会场馆?
2. 查询广州的展会场馆信息
3. 北京国家会议中心附近有哪些场馆?

### exhibition_bigdata_exhibition_search (展会搜索)
1. 搜索"进博会"相关的展会
2. 有哪些关于人工智能的展会?
3. 查询2025年上海的展会

### exhibition_bigdata_exhibitor_search (参展商筛选)
1. 深圳有哪些教育行业的参展商?
2. 查询2025年参展次数在10场以上的企业
3. 筛选广州地区医疗器械行业的参展商

### exhibition_bigdata_exhibition_exhibitors (展会参展企业查询)
1. 进博会有哪些企业参展?
2. 查询CES 2025的参展企业名单
3. 广交会的参展企业有哪些?

## 测试验证

```bash
python -m py_compile server/mcp_server.py
python -m unittest discover -s tests -v
```

测试覆盖参数校验、分页边界、签名、上游异常和MCP工具注册;测试中的上游HTTP请求均使用模拟数据,不读取真实凭证。