fix: 修复mcp的时间查询问题,同时更新了中英文文档

This commit is contained in:
sansan
2025-11-18 07:03:23 +08:00
parent 2146bdda73
commit a450339ab7
10 changed files with 1870 additions and 60 deletions
+29 -29
View File
@@ -173,9 +173,12 @@ async def analyze_topic_trend(
- "viral": 异常热度检测(识别突然爆火的话题)
- "predict": 话题预测(预测未来可能的热点)
date_range: 日期范围(trend和lifecycle模式),可选
- **格式**: {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}
- **示例**: {"start": "2025-10-18", "end": "2025-10-25"}
- **说明**: AI需要根据用户的自然语言(如"最近7天")自动计算日期范围
- **格式**: {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}(必须是标准日期格式)
- **说明**: AI必须根据当前日期自动计算并填入具体日期,不能使用"今天"等自然语言
- **计算示例**:
- 用户说"最近7天" → AI计算: {"start": "2025-11-11", "end": "2025-11-17"}(假设今天是11-17
- 用户说"上周" → AI计算: {"start": "2025-11-11", "end": "2025-11-17"}(上周一到上周日)
- 用户说"本月" → AI计算: {"start": "2025-11-01", "end": "2025-11-17"}11月1日到今天)
- **默认**: 不指定时默认分析最近7天
granularity: 时间粒度(trend模式),默认"day"(仅支持 day,因为底层数据按天聚合)
threshold: 热度突增倍数阈值(viral模式),默认3.0
@@ -188,11 +191,15 @@ async def analyze_topic_trend(
**AI使用说明:**
当用户使用相对时间表达时(如"最近7天""过去一周""上个月"),
AI需要自动计算对应的日期范围并传递给 date_range 参数
AI必须根据当前日期(从环境 <env> 获取)计算出具体的 YYYY-MM-DD 格式日期
Examples:
- analyze_topic_trend(topic="人工智能", analysis_type="trend", date_range={"start": "2025-10-18", "end": "2025-10-25"})
- analyze_topic_trend(topic="特斯拉", analysis_type="lifecycle", date_range={"start": "2025-10-18", "end": "2025-10-25"})
**重要**date_range 不接受"今天""昨天"等自然语言,必须是 YYYY-MM-DD 格式!
Examples (假设今天是 2025-11-17):
- 用户:"分析AI最近7天的趋势"
→ analyze_topic_trend(topic="人工智能", analysis_type="trend", date_range={"start": "2025-11-11", "end": "2025-11-17"})
- 用户:"看看特斯拉本月的热度"
→ analyze_topic_trend(topic="特斯拉", analysis_type="lifecycle", date_range={"start": "2025-11-01", "end": "2025-11-17"})
- analyze_topic_trend(topic="比特币", analysis_type="viral", threshold=3.0)
- analyze_topic_trend(topic="ChatGPT", analysis_type="predict", lookahead_hours=6)
"""
@@ -415,14 +422,22 @@ async def search_news(
**AI使用说明:**
当用户使用相对时间表达时(如"最近7天""过去一周""最近半个月"),
AI需要自动计算对应的日期范围。计算规则:
- "最近7天"{"start": "今天-6天", "end": "今天"}
- "过去一周"{"start": "今天-6天", "end": "今天"}
- "最近30天"{"start": "今天-29天", "end": "今天"}
AI必须根据当前日期(从环境 <env> 获取)计算出具体的 YYYY-MM-DD 格式日期。
Examples:
- 今天的新闻: search_news(query="人工智能")
- 最近7天: search_news(query="人工智能", date_range={"start": "2025-10-18", "end": "2025-10-25"})
**重要**date_range 不接受"今天""昨天"等自然语言,必须是 YYYY-MM-DD 格式!
**计算规则**(假设从 <env> 获取今天是 2025-11-17):
- "今天" → 不传 date_range(默认查今天)
- "最近7天"{"start": "2025-11-11", "end": "2025-11-17"}
- "过去一周"{"start": "2025-11-11", "end": "2025-11-17"}
- "上周" → 计算上周一到上周日,如 {"start": "2025-11-11", "end": "2025-11-17"}
- "本月"{"start": "2025-11-01", "end": "2025-11-17"}
- "最近30天"{"start": "2025-10-19", "end": "2025-11-17"}
Examples (假设今天是 2025-11-17):
- 用户:"今天的AI新闻" → search_news(query="人工智能")
- 用户:"最近7天的AI新闻" → search_news(query="人工智能", date_range={"start": "2025-11-11", "end": "2025-11-17"})
- 精确日期: search_news(query="人工智能", date_range={"start": "2025-01-01", "end": "2025-01-07"})
- 模糊搜索: search_news(query="特斯拉降价", search_mode="fuzzy", threshold=0.4)
"""
@@ -640,27 +655,12 @@ def run_server(
if __name__ == '__main__':
import sys
import argparse
parser = argparse.ArgumentParser(
description='TrendRadar MCP Server - 新闻热点聚合 MCP 工具服务器',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
使用示例:
# STDIO 模式(用于 Cherry Studio
uv run python mcp_server/server.py
# HTTP 模式(适合远程访问)
uv run python mcp_server/server.py --transport http --port 3333
Cherry Studio 配置示例:
设置 > MCP Servers > 添加服务器
- 名称: TrendRadar
- 类型: STDIO
- 命令: [UV的完整路径]
- 参数: --directory [项目路径] run python mcp_server/server.py
详细配置教程请查看: README-Cherry-Studio.md
"""
)
+13 -13
View File
@@ -186,9 +186,9 @@ class AnalyticsTools:
Returns:
趋势分析结果字典
Examples:
- analyze_topic_trend_unified(topic="人工智能", analysis_type="trend", date_range={"start": "2025-10-18", "end": "2025-10-25"})
- analyze_topic_trend_unified(topic="特斯拉", analysis_type="lifecycle", date_range={"start": "2025-10-18", "end": "2025-10-25"})
Examples (假设今天是 2025-11-17):
- 用户:"分析AI最近7天的趋势" analyze_topic_trend_unified(topic="人工智能", analysis_type="trend", date_range={"start": "2025-11-11", "end": "2025-11-17"})
- 用户:"看看特斯拉本月的热度" analyze_topic_trend_unified(topic="特斯拉", analysis_type="lifecycle", date_range={"start": "2025-11-01", "end": "2025-11-17"})
- analyze_topic_trend_unified(topic="比特币", analysis_type="viral", threshold=3.0)
- analyze_topic_trend_unified(topic="ChatGPT", analysis_type="predict", lookahead_hours=6)
"""
@@ -270,10 +270,10 @@ class AnalyticsTools:
代码调用示例:
>>> tools = AnalyticsTools()
>>> # 分析7天趋势
>>> # 分析7天趋势(假设今天是 2025-11-17
>>> result = tools.get_topic_trend_analysis(
... topic="人工智能",
... date_range={"start": "2025-10-18", "end": "2025-10-25"},
... date_range={"start": "2025-11-11", "end": "2025-11-17"},
... granularity="day"
... )
>>> # 分析历史月份趋势
@@ -421,10 +421,10 @@ class AnalyticsTools:
- "分析各平台今天的热点分布"
代码调用示例:
>>> tools = AnalyticsTools()
>>> # 对比各平台(假设今天是 2025-11-17)
>>> result = tools.compare_platforms(
... topic="人工智能",
... date_range={"start": "2025-10-01", "end": "2025-10-11"}
... date_range={"start": "2025-11-08", "end": "2025-11-17"}
... )
>>> print(result['platform_stats'])
"""
@@ -668,10 +668,10 @@ class AnalyticsTools:
... topic="特斯拉",
... limit=10
... )
>>> # 分析一周内的特斯拉新闻,返回前10条按权重排序
>>> # 分析一周内的特斯拉新闻(假设今天是 2025-11-17
>>> result = tools.analyze_sentiment(
... topic="特斯拉",
... date_range={"start": "2025-10-06", "end": "2025-10-13"},
... date_range={"start": "2025-11-11", "end": "2025-11-17"},
... limit=10
... )
>>> print(result['ai_prompt']) # 获取生成的提示词
@@ -1355,9 +1355,9 @@ class AnalyticsTools:
- "分析各平台的发布时间规律"
代码调用示例:
>>> tools = AnalyticsTools()
>>> # 查看各平台活跃度(假设今天是 2025-11-17)
>>> result = tools.get_platform_activity_stats(
... date_range={"start": "2025-10-01", "end": "2025-10-11"}
... date_range={"start": "2025-11-08", "end": "2025-11-17"}
... )
>>> print(result['platform_activity'])
"""
@@ -1486,10 +1486,10 @@ class AnalyticsTools:
- "追踪'比特币'话题的热度变化"
代码调用示例:
>>> tools = AnalyticsTools()
>>> # 分析话题生命周期(假设今天是 2025-11-17)
>>> result = tools.analyze_topic_lifecycle(
... topic="人工智能",
... date_range={"start": "2025-10-18", "end": "2025-10-25"}
... date_range={"start": "2025-10-19", "end": "2025-11-17"}
... )
>>> print(result['lifecycle_stage'])
"""
+2 -2
View File
@@ -106,11 +106,11 @@ class DataQueryTools:
Returns:
搜索结果字典
Example:
Example (假设今天是 2025-11-17):
>>> tools = DataQueryTools()
>>> result = tools.search_news_by_keyword(
... keyword="人工智能",
... date_range={"start": "2025-10-01", "end": "2025-10-11"},
... date_range={"start": "2025-11-08", "end": "2025-11-17"},
... limit=50
... )
>>> print(result['total'])