Windows MCP 踩坑经验 -- 今日股票行情助手
Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互-CSDN博客
上一篇博文 我安装了 MCP ,我想让 MCP 做一个简单的网页查询
今日股票行情助手使用指南
功能内容特性如下:,但是 根本不听话,网页输入后没有 执行 enter 哔哩啪啦的 一直执行 ...
原始代码如下:从代码逻辑与流程,还是值得记录学习,通过 ai agent 与 mcp 协作的方式
整体架构设计
技术栈组合
-
Qwen Agent (智能决策) + Windows MCP (系统操作) + Web UI (用户交互)
核心组件
-
LLM引擎: qwen-max模型
-
系统操作: Windows MCP工具集
-
用户界面: Web图形界面
-
等待机制: 智能时序控制
主要执行流程
阶段1: 系统初始化
-
程序启动
-
设置环境变量
-
配置DashScope API
-
初始化Qwen Agent
-
配置Windows MCP工具
-
创建Assistant实例
-
启动Web界面
阶段2: 用户交互流程
-
用户输入查询
-
Qwen Agent分析
-
制定执行计划
-
按步骤执行Windows MCP工具
-
每个工具执行后等待
-
验证执行结果
-
继续下一步或重试
核心功能模块
1. init_agent_service() - 助手初始化
-
配置LLM模型 (qwen-max, 30秒超时, 重试3次)
-
配置Windows MCP工具 (使用uv包管理器)
2. app_gui() - Web界面启动
-
预设智能查询提示
-
包含9个常用股票查询示例
3. test_stock_query() - 测试功能
-
测试贵州茅台(600519)查询流程
智能等待机制设计
等待时机分类
-
浏览器启动等待: 3秒
-
页面导航等待: 5-8秒
-
查询执行等待: 3-5秒
-
工具执行等待: 1-3秒
等待策略原理
-
页面加载等待: 股票网站需要时间加载JavaScript和CSS
-
数据查询等待: 股票数据需要从服务器获取,图表需要时间渲染
-
工具执行等待: 确保每个Windows MCP工具执行完成
股票查询执行流程
标准11步操作流程
-
Launch-Tool: 启动Chrome浏览器 → 等待3秒
-
Shortcut-Tool: 按Ctrl+L聚焦地址栏 → 等待1秒
-
Type-Tool: 输入股票网站URL → 等待1秒
-
Key-Tool: 按回车键执行导航 → 等待5-8秒
-
State-Tool: 分析页面结构 → 等待2秒
-
找到股票代码输入框位置 → 等待1秒
-
Click-Tool: 点击股票代码输入框 → 等待1秒
-
Type-Tool: 输入股票代码 → 等待1秒
-
Key-Tool: 按回车键执行查询 → 等待3-5秒
-
State-Tool: 获取股票信息 → 等待2秒
-
Scrape-Tool: 抓取详细数据 → 等待3秒
支持的股票网站
网站优先级
-
东方财富网 (⭐⭐⭐⭐⭐) - 数据全面,更新及时
-
新浪财经 (⭐⭐⭐⭐) - 界面简洁,加载快速
-
腾讯财经 (⭐⭐⭐⭐) - 数据准确,图表丰富
-
雪球 (⭐⭐⭐) - 社区活跃,分析深入
股票信息获取范围
基础行情数据
-
当前价格、涨跌幅、成交量
-
开盘价、最高价、最低价
-
市盈率、市净率、市值
技术分析数据
-
分时图、K线图链接
-
技术指标数据
-
历史价格走势
错误处理机制
失败重试策略
-
操作失败检测
-
状态重新分析
-
坐标调整重试
常见问题处理
-
页面加载不完整: 增加等待时间到8-10秒
-
查询结果为空: 增加查询等待时间到5-8秒
-
工具执行失败: 使用State-Tool检查状态,重新执行
设计亮点
1. 智能时序控制
-
每个操作都有明确的等待时间
-
根据操作类型动态调整等待策略
-
避免操作过快导致的失败
2. 动态页面分析
-
使用State-Tool分析页面结构
-
避免固定坐标定位
-
智能识别搜索框位置
3. 用户友好设计
-
预设智能查询提示
-
详细的执行步骤说明
-
完善的错误处理机制
代码优化建议
1. 等待时间参数化
WAIT_TIMES = {'browser_launch': 3,'page_navigation': 8,'query_execution': 5,'tool_execution': 2 }
2. 重试机制增强
def retry_with_backoff(operation, max_retries=3):for attempt in range(max_retries):try:return operation()except Exception as e:if attempt == max_retries - 1:raise etime.sleep(2 ** attempt) # 指数退避
3. 日志记录完善
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def log_operation(operation_name, wait_time):logger.info(f"执行操作: {operation_name}, 等待时间: {wait_time}秒")
系统提示词分析
核心设计理念
-
每个工具执行后必须等待执行结果
-
确保操作完成后再进行下一步
-
详细的11步操作流程说明
关键等待时机
-
页面导航后:等待5-8秒(页面加载)
-
查询执行后:等待3-5秒(数据加载)
-
工具执行后:等待1-3秒(操作完成)
注意事项强调
-
每个操作后必须等待,不要急于下一步
-
使用State-Tool确认页面状态后再操作
-
如果操作失败,重新分析页面状态
-
股票代码格式:沪市600xxx,深市000xxx,创业板300xxx
总结
这个股票行情助手的核心设计理念是:
-
智能决策: 使用Qwen Agent进行任务分析和规划
-
稳定执行: 通过Windows MCP工具执行具体操作
-
时序控制: 每个操作后强制等待,确保稳定性
-
错误恢复: 失败时重新分析状态,调整策略重试
-
用户友好: 提供预设查询和详细的操作指导
虽然Windows MCP工具有其局限性,但通过精心设计的等待机制和错误处理,仍然能够实现相对稳定的股票信息查询功能。
文件结构
stock_market_assistant.py ├── init_agent_service() # 助手初始化 ├── app_gui() # Web界面启动 ├── test_stock_query() # 测试功能 └── main() # 主程序入口
运行方式
if __name__ == '__main__':# 运行模式选择app_gui() # 图形界面模式(默认)# 或者运行测试模式# test_stock_query()
本文档详细分析了股票行情助手的代码逻辑流程,包括架构设计、执行流程、核心功能模块、智能等待机制、错误处理等各个方面。
"""今日股票行情助手使用Windows MCP工具获取股票信息,特别注意每个工具执行后的等待和衔接
"""import os
import dashscope
from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI# 配置 DashScope
dashscope.api_key = os.getenv('DASHSCOPE_API_KEY', '')
dashscope.timeout = 30def init_agent_service():"""初始化股票行情助手"""llm_cfg = {'model': 'qwen-max','timeout': 30,'retry_count': 3,}# 优化的系统提示 - 特别注意等待和衔接system = ('你是今日股票行情助手,使用Windows MCP工具获取股票信息。''重要:每个工具执行后必须等待执行结果,确保操作完成后再进行下一步!''标准操作流程(注意等待时间):''1. 启动Chrome浏览器 (Launch-Tool) → 等待3秒''2. 按Ctrl+L聚焦地址栏 (Shortcut-Tool) → 等待1秒''3. 输入股票网站URL (Type-Tool) → 等待1秒''4. 按回车键执行导航 (Key-Tool) → 等待5-8秒让页面完全加载''5. 使用State-Tool分析页面结构 → 等待2秒''6. 找到股票代码输入框位置 → 等待1秒''7. 点击股票代码输入框 (Click-Tool) → 等待1秒''8. 输入股票代码 (Type-Tool) → 等待1秒''9. 按回车键执行查询 (Key-Tool) → 等待3-5秒让查询结果加载''10. 使用State-Tool获取股票信息 → 等待2秒''11. 使用Scrape-Tool抓取详细数据 → 等待3秒''关键等待时机:''- 页面导航后:等待5-8秒(页面加载)''- 查询执行后:等待3-5秒(数据加载)''- 工具执行后:等待1-3秒(操作完成)''股票网站推荐:''- 东方财富网:https://www.eastmoney.com/''- 新浪财经:https://finance.sina.com.cn/''- 腾讯财经:https://finance.qq.com/''- 雪球:https://xueqiu.com/''股票信息包括:''- 当前价格、涨跌幅、成交量''- 开盘价、最高价、最低价''- 市盈率、市净率、市值''- 分时图、K线图链接''注意事项:''- 每个操作后必须等待,不要急于下一步''- 使用State-Tool确认页面状态后再操作''- 如果操作失败,重新分析页面状态''- 股票代码格式:沪市600xxx,深市000xxx,创业板300xxx')tools = [{"mcpServers": {"windows-mcp": {"command": "uv","args": ["--directory","C:/AI/Windows-MCP","run","main.py"]}}}]try:bot = Assistant(llm=llm_cfg,name='今日股票行情助手',description='实时股票信息查询与分析',system_message=system,function_list=tools,)print("今日股票行情助手初始化成功!")return botexcept Exception as e:print(f"助手初始化失败: {str(e)}")raisedef app_gui():"""启动Web界面"""try:print("正在启动股票行情Web界面...")bot = init_agent_service()chatbot_config = {'prompt.suggestions': ['帮我查询今日股票行情,使用智能页面分析方法,注意每个操作后等待执行结果','查询贵州茅台(600519)的实时股价和涨跌幅,确保每个步骤都等待完成','获取腾讯控股(00700)的股票信息,包括价格、成交量、市盈率等','查询比亚迪(002594)今日行情,注意页面加载和数据查询的等待时间','获取阿里巴巴(BABA)的股票数据,使用State-Tool分析页面结构','查询小米集团(01810)实时行情,确保每个工具执行后等待结果','获取特斯拉(TSLA)股票信息,注意操作间的衔接和等待','查询苹果(AAPL)今日股价,使用智能分析方法','获取微软(MSFT)股票数据,包括技术指标和财务数据','演示如何使用State-Tool分析股票网站页面结构']}print("股票行情Web界面准备就绪...")WebUI(bot, chatbot_config=chatbot_config).run()except Exception as e:print(f"启动失败: {str(e)}")def test_stock_query():"""测试股票查询功能"""try:print("正在测试股票查询功能...")bot = init_agent_service()# 测试查询query = '请帮我查询贵州茅台(600519)的今日股票行情。请严格按照以下步骤操作,每个步骤后都要等待执行结果:1) 启动Chrome浏览器 2) 打开东方财富网 3) 等待页面完全加载 4) 找到股票代码输入框 5) 输入600519 6) 执行查询 7) 等待结果加载 8) 获取股票信息'messages = [{'role': 'user', 'content': query}]print("开始执行股票查询测试...")for response in bot.run(messages):print('查询进度:', response)print("股票查询测试完成!")except Exception as e:print(f"测试过程中出错: {str(e)}")if __name__ == '__main__':# 运行模式选择app_gui() # 图形界面模式(默认)# 或者运行测试模式# test_stock_query()
保存本地md也不行
连续3次失败操作
最后推荐使用文本编辑器
竟然是让我自己黏贴
🎯 助手特点
这个股票行情助手专门针对Windows MCP工具的执行特点进行了优化,特别注意每个工具执行后的等待和衔接,确保操作的稳定性和成功率。
🔧 核心优化点
1. 等待机制优化
-
✅ 每个工具执行后强制等待
-
✅ 页面导航后等待5-8秒
-
✅ 查询执行后等待3-5秒
-
✅ 工具执行后等待1-3秒
2. 操作衔接优化
-
✅ 确保前一步完成后再执行下一步
-
✅ 使用State-Tool验证操作状态
-
✅ 失败时重新分析页面状态
3. 股票网站适配
-
✅ 支持多个主流股票网站
-
✅ 智能识别页面结构
-
✅ 动态定位输入框位置
🚀 标准操作流程
步骤1: 启动和导航
1. Launch-Tool: 启动Chrome浏览器等待: 3秒(浏览器启动完成) 2. Shortcut-Tool: 按Ctrl+L聚焦地址栏等待: 1秒(焦点确认) 3. Type-Tool: 输入股票网站URL等待: 1秒(输入完成) 4. Key-Tool: 按回车键执行导航等待: 5-8秒(页面完全加载)
步骤2: 页面分析和定位
5. State-Tool: 分析页面结构等待: 2秒(分析完成) 6. 识别股票代码输入框位置等待: 1秒(定位确认) 7. Click-Tool: 点击股票代码输入框等待: 1秒(点击完成)
步骤3: 执行股票查询
8. Type-Tool: 输入股票代码等待: 1秒(输入完成) 9. Key-Tool: 按回车键执行查询等待: 3-5秒(查询结果加载) 10. State-Tool: 获取股票信息等待: 2秒(信息获取) 11. Scrape-Tool: 抓取详细数据等待: 3秒(数据抓取完成)
💡 关键等待时机说明
为什么需要等待?
1. 浏览器启动等待 (3秒)
-
确保Chrome完全启动
-
避免后续操作失败
2. 页面导航等待 (5-8秒)
-
股票网站通常较大,加载时间长
-
确保所有JavaScript和CSS加载完成
-
避免在页面未完全加载时操作
3. 查询执行等待 (3-5秒)
-
股票数据需要从服务器获取
-
图表和实时数据需要时间渲染
-
确保查询结果完全显示
4. 工具执行等待 (1-3秒)
-
确保每个Windows MCP工具执行完成
-
避免操作冲突和失败
📊 支持的股票网站
1. 东方财富网
-
URL: 东方财富网:财经门户,提供专业的财经、股票、行情、证券、基金、理财、银行、保险、信托、期货、黄金、股吧、博客等各类财经资讯及数据
-
特点: 数据全面,更新及时
-
推荐指数: ⭐⭐⭐⭐⭐
2. 新浪财经
-
URL: 新浪财经_金融信息服务商
-
特点: 界面简洁,加载快速
-
推荐指数: ⭐⭐⭐⭐
3. 腾讯财经
-
URL: 腾讯网
-
特点: 数据准确,图表丰富
-
推荐指数: ⭐⭐⭐⭐
4. 雪球
-
URL: https://xueqiu.com/
-
特点: 社区活跃,分析深入
-
推荐指数: ⭐⭐⭐