内容
# 线上洞察
**一款将工厂现场数据转化为持续改进洞察的MCP服务器**
线上洞察赋予AI助手与持续改进工程师相同的工具包——OEE数学、停机帕累托分析、SPC控制图和产量损失美元——通过Anthropic的[模型上下文协议](https://modelcontextprotocol.io)公开。询问它 *"为什么3号生产线正在减速?"* 它不会猜测:它会拉取控制图,找到西方电气违规,检查停机日志,并提供证据。
由一位持续改进/运营效率实践者([marcoaguzmanjr.com](https://www.marcoaguzmanjr.com))构建,旨在将工厂现场的DMAIC纪律引入AI工具:模型报告的每个数字都追溯到[plant/analytics.py](plant/analytics.py)中的一个公式。
---
## 你可以问它
```
> /daily_huddle line-1 # 3分钟一级会议简报,从实时数据构建
> /dmaic line-2 # 完整的定义-测量-分析-改进-控制调查
> /a3_report line-3 # 一页A3问题解决报告
> 为什么@line-3正在减速? # @-提及生产线以注入其KPI快照
> 哪一个班次在2号生产线上有质量问题, 每年损失多少?
```
这种交流可以产生(下面的每个数字都是实际工具在演示数据集上返回的内容):
> **你:** 哪一个班次在2号生产线上有质量问题?
>
> **克劳德:** *(调用 `get_oee` 并 `line_id=line-2, group_by=shift)*
> C班次。其质量率为96.8%,而A和B班次约为98.8% —— 大约是3倍的废料。 *(调用 `get_yield_loss`)* 按标准成本计算,这大约是**48万美元**,在整个生产线中,C班次占比最大。
> 值得检查C班次的不同之处:人员配置、换型时间还是设备设置在白天支持时间之外漂移?
## 应用的三个MCP基本要素
| 基本要素 | 线上洞察公开的内容 |
|---|---|
| **工具** (模型控制) | `get_oee` · `pareto_downtime` · `spc_analysis` · `get_yield_loss` · `log_action` · `list_actions` · `close_action` |
| **资源** (应用控制) | `plant://overview` · `plant://lines` · `plant://lines/{id}` KPI快照 · `plant://reason-codes` |
| **提示** (用户控制) | `/daily_huddle` · `/dmaic` · `/a3_report` |
分离很重要:分析生活在**工具**中,因此模型可以自由地链接它们;用户选择引入的上下文(@-提及的生产线)来自**资源**;而具有定义形状的多步骤持续改进仪式(DMAIC,A3)作为**提示**发布,以便每次运行方式相同。
```mermaid
flowchart LR
U[你] --> CLI[聊天CLI<br/>提示工具包]
CLI --> C[克劳德<br/>Anthropic API]
C <-->|MCP标准输入输出| S[线上洞察MCP服务器<br/>FastMCP]
S --> A[analytics.py<br/>OEE · 帕累托 · SPC · 产量美元]
A --> D[(production_log.csv<br/>停机日志.csv)]
S --> R[(action_register.json)]
```
## 演示数据集讲述了一个故事
`data/`包含一个调味品工厂的三条生产线的90天种子记录(可复制,810条生产记录,约2300个停机事件)。其中隐藏了三个问题——与实际工厂中寻找的模式相同:
1. **2号生产线因换型而损失可用性** —— 一个原因代码承担了约52%的所有停机分钟。帕累托分析立即发现了它。
2. **2号生产线,C班次有质量问题** —— 废料率约为其他班次的3倍(盖帽扭矩漂移)。在生产线平均值中不可见;按班次分组时立即显现。
3. **3号生产线正在恶化,而不是损坏** —— 填充头轴承磨损在最后三周内拖累了性能。没有单个不良天;SPC图表捕捉到了中心线以下的运行和LCL以下的级联点,这些点将被“昨日损失前三名”报告忽略。
随时重新生成相同的数据:`python -m plant.data_gen` (种子)。
## 快速开始
需要Python 3.10+和[Anthropic API密钥](https://console.anthropic.com)。
```bash
git clone https://github.com/marcoaguzman/linesight.git && cd linesight
python3 -m venv .venv && source .venv/bin/activate
pip install "anthropic>=0.51.0" "mcp[cli]>=1.8.0" "prompt-toolkit>=3.0.51" "python-dotenv>=1.1.0"
cp .env.example .env # 然后添加你的ANTHROPIC_API_KEY
python main.py
```
或者使用 [uv](https://docs.astral.sh/uv/):`uv sync`,在`.env`中设置`USE_UV=1`,然后`uv run main.py`。
### 在没有API密钥的情况下验证
烟雾测试通过实际的MCP标准输入输出连接驱动每个工具、资源和提示——不需要Anthropic密钥:
```bash
python scripts/smoke_test.py # 18项检查,应该全部通过
```
### 从克劳德桌面使用
线上洞察是一个标准的MCP服务器,因此任何MCP客户端都可以托管它。对于克劳德桌面,请在 `claude_desktop_config.json` 中添加:
```json
{
"mcpServers": {
"linesight": {
"command": "/absolute/path/to/linesight/.venv/bin/python",
"args": ["/absolute/path/to/linesight/mcp_server.py"]
}
}
}
```
## 项目结构
```
linesight/
├── mcp_server.py # MCP服务器:7种工具,4种资源,3种提示
├── mcp_client.py # 通用MCP标准输入输出客户端
├── main.py # 聊天CLI入口
├── core/ # 聊天循环,克劳德包装器,工具调度,终端UI
├── plant/
│ ├── analytics.py # OEE,帕累托图,XmR控制图,产量损失数学
│ ├── store.py # 基于CSV的数据层(交换为历史学家/MES)
│ └── data_gen.py # 种子演示数据生成器
├── data/ # 演示数据集(已提交,可复制)
└── scripts/smoke_test.py
```
将演示CSV替换为实际的历史学家或MES连接只需更改`plant/store.py` —— MCP接口保持不变。
## 致谢
聊天客户端脚手架(`core/`,`mcp_client.py`)改编自[Anthropic的MCP课程](https://anthropic.skilljar.com/introduction-to-model-context-protocol)中的项目;工厂领域——服务器,分析,数据集——是原创作品。