information-mcp-server
by handaas
README.md
# 资讯大数据服务
[该 MCP 服务提供企业关键词搜索、全域资讯搜索、企业资讯、行业资讯、主题跟踪和企业动态监控能力,帮助用户开展行业研究、热点追踪、企业舆情和品牌声誉管理。](https://www.handaas.com/)
## 主要功能
- 🏢 企业简称与关键词搜索
- 🔍 全域资讯关键词检索
- 🏢 企业新闻舆情查询
- 🏭 行业与赛道资讯检索
- 🎯 政策、技术、品牌和事件主题跟踪
- 📊 企业资讯明细与情感统计监控
## 服务设计说明
- 服务按实际业务场景提供 6 个 Tool,不按上游 API 数量平铺工具。
- 用户只提供企业简称时,先用 `information_enterprise_search` 获取企业全称或稳定 ID。
- 搜索、行业和主题 Tool 复用同一个全域资讯搜索 Product ID,但保留不同场景语义。
- 上游资讯搜索结果由 MCP 层通过 `pageIndex` 和 `pageSize` 分页,默认每页 20 条,最大 50 条。
- 搜索结果默认不返回长正文;设置 `includeContent=true` 后,可通过 `contentMaxChars` 限制每条正文长度。
- `information_monitor` 通过 `view` 选择明细或统计,单次只访问一个 Product ID。
- 所有翻页响应的业务外层只包含 `total` 与 `resultList`。
## 环境要求
- Python 3.10+
- 依赖包:python-dotenv、requests、mcp
## 本地快速启动
### 1. 进入项目目录
```bash
cd information-mcp-server
```
### 2. 创建虚拟环境并安装依赖
```bash
python3 -m venv mcp_env
source mcp_env/bin/activate
pip install -r requirements.txt
```
### 3. 配置环境变量
复制环境变量模板:
```bash
cp .env.example .env
```
编辑 `.env` 文件:
```env
INTEGRATOR_ID=your_integrator_id
SECRET_ID=your_secret_id
SECRET_KEY=your_secret_key
HANDAAS_REQUEST_TIMEOUT=30
```
`HANDAAS_REQUEST_TIMEOUT` 为可选配置,单位为秒,默认值为 30。
### 4. 启动 Streamable HTTP 服务
```bash
python server/mcp_server.py streamable-http
```
服务默认地址为 `http://localhost:8000/mcp`。
也可以使用启动脚本:
```bash
./start_mcp_server.sh streamable-http
```
支持 `stdio`、`sse` 和 `streamable-http` 三种启动方式。
### 5. Cursor / Cherry Studio MCP 配置
```json
{
"mcpServers": {
"information-mcp-server": {
"type": "streamableHttp",
"url": "http://127.0.0.1:8000/mcp"
}
}
}
```
## STDIO 版安装部署
将 `{workdir}` 替换为 `information-mcp-server` 的绝对路径:
```json
{
"mcpServers": {
"information-mcp-server": {
"command": "{workdir}/mcp_env/bin/python",
"args": [
"{workdir}/server/mcp_server.py",
"stdio"
]
}
}
}
```
`INTEGRATOR_ID`、`SECRET_ID` 和 `SECRET_KEY` 需要登录 [HandaaS](https://www.handaas.com/) 注册并开通对接器后获取。真实凭据只应保存在本地 `.env` 或部署密钥中。
## 可用工具与 Product ID
| MCP Tool | 功能或视图 | Product ID |
|---|---|---|
| `information_enterprise_search` | 企业简称、品牌或产品关键词查询企业 | `675cea1f0e009a9ea37edaa1` |
| `information_search` | 全域资讯关键词与日期检索 | `6a60928a935bb6a5c6bbd68f` |
| `information_company_news` | 企业新闻舆情明细 | `66b485eadaf8c77fb249a455` |
| `information_industry_news` | 行业或赛道资讯检索 | `6a60928a935bb6a5c6bbd68f` |
| `information_topic` | 政策、技术、品牌或事件主题跟踪 | `6a60928a935bb6a5c6bbd68f` |
| `information_monitor` | `view=details` 企业资讯明细 | `66b485eadaf8c77fb249a455` |
| `information_monitor` | `view=statistics` 企业资讯情感统计 | `66b338e274bf098447db7efd` |
### 1. information_enterprise_search
**功能**:按企业简称、品牌、产品或其他关键词搜索候选企业。
**主要参数**:`matchKeyword` 必需;`pageIndex` 默认 1;`pageSize` 默认 10、最大 50。
**返回**:候选企业 `total/resultList`。确认企业后,将企业全称、企业 ID 或统一社会信用代码用于企业资讯和监控 Tool。
### 2. information_search
**功能**:按关键词搜索新闻资讯标题和正文。
**主要参数**:
- `matchKeyword`(必需):搜索关键词。
- `pubDateBegin`、`pubDateEnd`(可选):发布时间起始和截止条件。
- `pageIndex`(可选):MCP 返回页码,从 1 开始。
- `pageSize`(可选):每页数量,默认 20,最大 50。
- `includeContent`(可选):是否返回资讯正文,默认 `false`。
- `contentMaxChars`(可选):返回正文时每条最多保留的字符数,默认 1000,范围为 100–5000。
**返回**:`total` 和 `resultList`;结果可包含标题、来源、发布时间、资讯链接和按需截断的正文。
### 3. information_company_news
**功能**:查询指定企业的新闻舆情明细。
**主要参数**:
- `matchKeyword`(必需):企业名称、企业 ID、注册号或统一社会信用代码。
- `keywordType`(可选):企业标识类型,支持 `name`、`nameId`、`regNumber`、`socialCreditCode`。
- `pageIndex`(可选):页码,从 1 开始。
- `pageSize`(可选):每页数量,默认 50,最大 50。
- `sentimentLabel`(可选):`0` 负面、`1` 正面、`2` 中性、`3` 未知。
**返回**:`total` 和 `resultList`;结果可包含新闻简介、链接、来源、标题、发布时间、相关企业和情感标签。
### 4. information_industry_news
**功能**:按行业、赛道或产业关键词检索资讯,用于行业研究和市场动态分析。
**主要参数**:
- `matchKeyword`(必需):行业、赛道或产业关键词。
- `pubDateBegin`、`pubDateEnd`(可选):发布时间范围。
- `pageIndex`、`pageSize`(可选):页码和每页数量,`pageSize` 最大为 50。
- `includeContent`、`contentMaxChars`(可选):正文返回开关和正文长度上限。
**返回**:`total` 和 `resultList`。
### 5. information_topic
**功能**:跟踪政策、技术、品牌或热点事件等明确主题。
**主要参数**:
- `matchKeyword`(必需):具体主题或事件关键词。
- `pubDateBegin`、`pubDateEnd`(可选):主题观察时间范围。
- `pageIndex`、`pageSize`(可选):页码和每页数量,`pageSize` 最大为 50。
- `includeContent`、`contentMaxChars`(可选):正文返回开关和正文长度上限。
**返回**:`total` 和 `resultList`。
### 6. information_monitor
**功能**:监控企业资讯动态,可选择新闻事件明细或情感统计视图。
**主要参数**:
- `matchKeyword`(必需):企业名称、企业 ID、注册号或统一社会信用代码。
- `view`(可选):`details` 新闻事件明细;`statistics` 情感分布和趋势。默认 `statistics`。
- `keywordType`(可选):企业标识类型。
- `pageIndex`、`pageSize`(可选):仅 `details` 视图使用,`pageSize` 最大为 50。
- `sentimentLabel`(可选):仅 `details` 视图使用的情感筛选。
**返回**:明细视图返回 `total` 和 `resultList`;统计视图返回情感分布和趋势业务字段。
## 使用场景
1. **企业定位**:通过简称或品牌词确认企业全称与稳定标识。
2. **资讯检索**:按关键词聚合全域新闻标题、来源、时间和链接。
3. **行业研究**:跟踪行业、赛道和产业相关动态。
4. **主题跟踪**:持续观察政策、技术、品牌和热点事件。
5. **企业舆情**:查询企业相关新闻并按情感类别筛选。
6. **动态监控**:分析企业资讯情感分布和变化趋势。
7. **品牌声誉管理**:结合新闻明细和情感统计识别声誉风险。
## 使用注意事项
1. **简称处理**:企业简称无法直接查询时,先调用 `information_enterprise_search`。
2. **场景选择**:企业舆情使用 `information_company_news` 或 `information_monitor`;行业研究使用 `information_industry_news`。
3. **分页限制**:`pageIndex` 从 1 开始,`pageSize` 必须在 1 到 50 之间。
4. **正文控制**:默认不返回 `informationText`;需要正文时显式设置 `includeContent=true`。
5. **正文长度**:`contentMaxChars` 必须在 100 到 5000 之间。
6. **情感标签**:`0` 表示负面、`1` 表示正面、`2` 表示中性、`3` 表示未知。
7. **合法空结果**:关键词、时间或情感条件无匹配时可能返回 `total=0` 和空 `resultList`。
## 使用提问示例
### information_enterprise_search(企业关键词搜索)
1. “小米”对应哪些企业?
2. 用“格力”找到准确企业名称和企业 ID。
### information_search(资讯全文检索)
1. 搜索人工智能相关新闻,只看标题和来源。
2. 搜索新能源汽车资讯,并返回两条短正文。
### information_company_news(企业资讯查询)
1. 查询小米科技有限责任公司最近的企业新闻。
2. 查看珠海格力电器股份有限公司的负面舆情。
### information_industry_news(行业资讯检索)
1. 检索低空经济行业的最新资讯。
2. 人形机器人赛道最近有哪些行业动态?
### information_topic(资讯主题跟踪)
1. 持续跟踪人工智能大模型这一技术主题。
2. 跟踪消费品以旧换新政策相关事件。
### information_monitor(企业资讯动态监控)
1. 监控小米科技有限责任公司的舆情情感分布和趋势。
2. 查看北京京东世纪贸易有限公司的最新资讯事件明细。
## 测试验证
```bash
python -m py_compile server/mcp_server.py
python -m unittest discover -s tests -v
```
单元测试使用 Mock HTTP 响应,不调用真实 HandaaS 资讯接口。
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues