内容
# Tableau 代理工作区
该工作区运行一个本地的 Tableau 自动化堆栈,包含三个层:
1. Docker 中的 Tableau MCP 服务器,端口为 `7777`
2. FastAPI 后端,端口为 `7778`
3. Streamlit 聊天界面,端口为 `7779`
后端可以:
1. 列出 Tableau 仪表板、视图和数据源
2. 从雅虎财经生成股票市场分析
3. 将股票数据源发布到 Tableau
4. 将工作簿克隆到 Tableau 以显示仪表板对象
5. 从工作簿或单个视图生成 Markdown 和 PowerPoint 报告
6. 通过 `/agent/chat` 运行聊天式编排流程
## 工作区文件
核心文件:
1. [agent_api.py](f:/tableau/agent_api.py):FastAPI 后端和代理编排
2. [streamlit_app.py](f:/tableau/streamlit_app.py):聊天界面
3. [api_start.sh](f:/tableau/api_start.sh):启动 Docker、API 和界面
4. [docker-compose.yaml](f:/tableau/docker-compose.yaml):Tableau MCP 容器
5. [env.list](f:/tableau/env.list):Tableau 服务器、站点和 PAT 设置
6. [config/config.json](f:/tableau/config/config.json):Litellm 端点和模型配置
支持脚本:
1. [mcp_start.sh](f:/tableau/mcp_start.sh):仅启动 Tableau MCP 容器
2. [mcp_down.sh](f:/tableau/mcp_down.sh):仅停止 Tableau MCP 容器
3. [stock_tableau_agent.py](f:/tableau/stock_tableau_agent.py):独立的股票代理脚本
4. [tableau_dashboard_briefing_agent.py](f:/tableau/tableau_dashboard_briefing_agent.py):独立的仪表板简报脚本
本地文件,仅在本地忽略:
1. [env.list](f:/tableau/env.list):此机器的真实 Tableau PAT 和服务器值
2. [config/config.json](f:/tableau/config/config.json):此机器的真实 Litellm 端点和 API 密钥
清理后的示例文件提交到仓库:
1. [env.example](f:/tableau/env.example)
2. [config/config.example.json](f:/tableau/config/config.example.json)
参考文档:
1. [TABLEAU_MCP_GUIDE.md](f:/tableau/TABLEAU_MCP_GUIDE.md)
## 先决条件
1. Docker Desktop 运行中
2. 名称为 `MCP` 的 Conda 环境
3. 在 [env.list](f:/tableau/env.list) 中配置了 Tableau PAT
4. 在 [config/config.json](f:/tableau/config/config.json) 中配置了 Litellm 端点
如果您将此仓库克隆到新机器:
1. 将 [env.example](f:/tableau/env.example) 复制到 `env.list`
2. 将 [config/config.example.json](f:/tableau/config/config.example.json) 复制到 `config/config.json`
3. 在本地填写真实的 Tableau PAT 和 Litellm 值
## Tableau MCP 客户端设置
有关完整的 Tableau 端设置、PAT 生成步骤和 GitHub Copilot 与 Claude Code 的客户端连接示例,请参阅 [TABLEAU_MCP_GUIDE.md](f:/tableau/TABLEAU_MCP_GUIDE.md)。
该指南涵盖:
1. 在 Tableau Cloud 中启用个人访问令牌
2. 为 `ai_forest` 创建 PAT
3. 通过 `stdio` 连接 Tableau MCP
4. 通过 Docker/HTTP 连接 Tableau MCP
5. 将 MCP 服务器连接到 VS Code GitHub Copilot
6. 在 Claude Code 或另一个 MCP 客户端中重用相同的连接详细信息
对于此仓库,工作默认连接是:
1. Tableau MCP 端点:`http://localhost:7777/tableau-mcp`
2. VS Code MCP 配置文件:[f:/tableau/.vscode/mcp.json](f:/tableau/.vscode/mcp.json)
3. Tableau 服务器设置源:[env.list](f:/tableau/env.list)
在 `MCP` 环境中安装 Python 依赖项:
```bash
python -m pip install -r requirements.txt
```
## 启动所有内容
运行:
```bash
bash api_start.sh
```
它所做的:
1. 在 `7777` 上启动 Tableau MCP Docker 服务
2. 在 `7778` 上启动 FastAPI 后端
3. 在 `7779` 上启动 Streamlit 界面
打开:
1. API 健康状态:`http://localhost:7778/health`
2. Streamlit 界面:`http://localhost:7779`
## 主要 API 端点
目录端点:
1. `GET /health`
2. `GET /meta/options`
3. `GET /dashboards`
4. `GET /views`
5. `GET /datasources`
生成端点:
1. `POST /dashboards/stock-market`
2. `POST /dashboards/briefing`
3. `POST /views/briefing-comprehensive`
4. `POST /agent/chat`
## 聊天界面使用
Streamlit 界面将自然语言提示发送到 `/agent/chat`。
示例提示:
1. `显示您的仪表板和视图`
2. `显示您的数据源`
3. `总结工作簿样本并生成 PPT`
4. `为视图 Executive Summary 创建报告`
5. `为 AAPL 生成股票仪表板,时间范围 3 个月,每小时,并发布它`
界面在可用时返回可下载的工件,例如:
1. `.pptx`
2. `.md`
3. `.csv`
4. `.png`
5. `.txt`
## 股票仪表板流程
`POST /dashboards/stock-market` 执行以下操作:
1. 解析请求的股票代码并始终添加标准普尔 500 基线
2. 拉取雅虎财经时间序列数据
3. 计算移动平均线和每小时买入/卖出样式摘要
4. 生成图表和 CSV
5. 发布 Tableau 数据源
6. 可选地克隆或发布工作簿,以便存在可见的 Tableau 仪表板对象
重要发布行为:
1. 仅数据源发布不会在 Tableau 视图或首页显示
2. 必须发布或克隆工作簿才能显示仪表板对象
3. 如果 `workbook_template_path` 无效,后端可以回退到 `source_workbook_id`
## 报告流程
工作簿级报告:
1. 使用 Tableau MCP 拉取工作簿中的每个视图
2. 获取视图图像和视图数据
3. 使用 Litellm 配置的模型分析视觉效果和数据
4. 生成 Markdown 和 PowerPoint 输出
视图级报告:
1. 拉取一个 Tableau 视图图像及其数据
2. 从提取的数据中生成额外图表
3. 使用模型生成分析笔记和适合儿童的解释
4. 保存综合 PPT 和 Markdown 文件
## 输出文件
生成的工件通常写入:
1. `outputs/stock_market_api/...`
2. `outputs/dashboard_briefing_api/...`
3. `outputs/view_briefing_api/...`
## 故障排除
如果界面未打开:
1. 在 `http://localhost:7778/health` 处确认后端健康状态
2. 重新运行 `bash api_start.sh`
3. 确保 Docker Desktop 运行中
4. 确保 `MCP` conda 环境存在于 `E:\Program Files\anaconda3\envs\MCP`
如果股票仪表板未在 Tableau 视图中显示:
1. 检查是否仅发布了数据源
2. 在 API 响应中查看 `dashboard.publish_status`
3. 如有需要,提供有效的 `source_workbook_id` 或工作簿模板路径
如果报告生成成功但内容较弱:
1. 确认 [config/config.json](f:/tableau/config/config.json) 指向正确的 Litellm 模型
2. 对更丰富的 PPT 使用工作簿级报告