当前位置: 首页 > backend >正文

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: 系统初始化

  1. 程序启动

  2. 设置环境变量

  3. 配置DashScope API

  4. 初始化Qwen Agent

  5. 配置Windows MCP工具

  6. 创建Assistant实例

  7. 启动Web界面

阶段2: 用户交互流程

  1. 用户输入查询

  2. Qwen Agent分析

  3. 制定执行计划

  4. 按步骤执行Windows MCP工具

  5. 每个工具执行后等待

  6. 验证执行结果

  7. 继续下一步或重试

核心功能模块

1. init_agent_service() - 助手初始化

  • 配置LLM模型 (qwen-max, 30秒超时, 重试3次)

  • 配置Windows MCP工具 (使用uv包管理器)

2. app_gui() - Web界面启动

  • 预设智能查询提示

  • 包含9个常用股票查询示例

3. test_stock_query() - 测试功能

  • 测试贵州茅台(600519)查询流程

智能等待机制设计

等待时机分类

  1. 浏览器启动等待: 3秒

  2. 页面导航等待: 5-8秒

  3. 查询执行等待: 3-5秒

  4. 工具执行等待: 1-3秒

等待策略原理

  • 页面加载等待: 股票网站需要时间加载JavaScript和CSS

  • 数据查询等待: 股票数据需要从服务器获取,图表需要时间渲染

  • 工具执行等待: 确保每个Windows MCP工具执行完成

股票查询执行流程

标准11步操作流程

  1. Launch-Tool: 启动Chrome浏览器 → 等待3秒

  2. Shortcut-Tool: 按Ctrl+L聚焦地址栏 → 等待1秒

  3. Type-Tool: 输入股票网站URL → 等待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秒

支持的股票网站

网站优先级

  1. 东方财富网 (⭐⭐⭐⭐⭐) - 数据全面,更新及时

  2. 新浪财经 (⭐⭐⭐⭐) - 界面简洁,加载快速

  3. 腾讯财经 (⭐⭐⭐⭐) - 数据准确,图表丰富

  4. 雪球 (⭐⭐⭐) - 社区活跃,分析深入

股票信息获取范围

基础行情数据

  • 当前价格、涨跌幅、成交量

  • 开盘价、最高价、最低价

  • 市盈率、市净率、市值

技术分析数据

  • 分时图、K线图链接

  • 技术指标数据

  • 历史价格走势

错误处理机制

失败重试策略

  1. 操作失败检测

  2. 状态重新分析

  3. 坐标调整重试

常见问题处理

  • 页面加载不完整: 增加等待时间到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

总结

这个股票行情助手的核心设计理念是:

  1. 智能决策: 使用Qwen Agent进行任务分析和规划

  2. 稳定执行: 通过Windows MCP工具执行具体操作

  3. 时序控制: 每个操作后强制等待,确保稳定性

  4. 错误恢复: 失败时重新分析状态,调整策略重试

  5. 用户友好: 提供预设查询和详细的操作指导

虽然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/

  • 特点: 社区活跃,分析深入

  • 推荐指数: ⭐⭐⭐

http://www.xdnf.cn/news/18866.html

相关文章:

  • 金仓数据库文档系统全面升级:用户体验焕然一新
  • SqlHelper类的方法详细解读和使用示例
  • 人工智能和机器学习如何改善机器人技术
  • 应变片与分布式光纤传感:核心差异与选型指南
  • 深入解析 Chromium Mojo IPC:跨进程通信原理与源码实战
  • 【开发配置】GitLab CR(Code Review)规则配置清单
  • 钉钉 AI 硬件:DingTalk A1
  • Java文件的组织方式
  • 用户体验设计 | 从UX到AX:人工智能如何重构交互范式?
  • 趣味学习Rust基础篇(用Rust做一个猜数字游戏)
  • 化学分析原理与算法、数据库。
  • 本地搭建 Redis/MySQL 并配置国内镜像加速(Docker/原生安装 | macOS/Linux/Windows)
  • 【Git】多人协作
  • k8sday18 HELM
  • AI编写测试用例
  • 【微服务】SpringBoot 整合 Easy-Es 实战操作详解
  • 深入探索Vue:前端开发的强大框架
  • 字母异位词分组,leetCode热题100,C++实现
  • 嵌入式学习day38
  • 搭建域服务器
  • spring-ai-alibaba使用
  • 第18章|变量:把数据装进“盒子”的正确方式
  • 机器学习 TF-IDF方法
  • 【docker apoc 部署的neo4j安装apoc插件】
  • MySQL 面试题系列(五)
  • 【Kafka】重点概念和架构总结
  • Python 入门操作指南
  • 如何在 Docker 和AKS上使用 IIS
  • iOS技术之通过Charles抓包http、https数据
  • 【Linux】基本指令学习3