OpenEdge分析MCP服务器
连接QAD/OpenEdge数据库的Analytics Mart模式,提供分析数据 Read-Only MCP服务器是。
概要
此模型上下文协议(MCP)服务器旨在使LangGraph、ChatGPT等AI客户端可以用作域分析工具。
主要功能
- 只读的:只能查询数据,无写/修改操作
- 仅限Analytics:查询OEE、Scrap、Margin等分析指标
- 分离SQL模板:将SQL查询作为单独的文件进行管理,以便于维护
- 绑定参数:运行安全查询以防止SQL Injection
要求
- python:3.10以上
- ODBC驱动程序:需要安装OpenEdge ODBC驱动程序
- DSN设置:需要系统或用户ODBC DSN配置
安装方法
1.存储库克隆
git clone
cd openedge-analytics-mcp2.创建虚拟环境(建议)
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# 또는
.venv\Scripts\activate # Windows3.安装依赖性
pip install -r requirements.txt4.设置环境变量
cp .env.example .env.env 打开文件并将其修改为实际值:
ODBC_DSN=QAD_OPENEDGE_ANALYTICS
DB_USER=your_username
DB_PASSWORD=your_password
DB_TIMEOUT_SECONDS=30
ANALYTICS_SCHEMA=ANALYTICS_MARTMCP服务器启动
python -m mcp_server.server服务器通过标准输入/输出(stdin/stdout)与JSON-RPC协议进行通信。
可用的MCP工具
1. get_oee_trend
查看特定生产线的长期Overall Equipment Effectiveness(OEE)趋势。
参数: 名称类型必需说明 |------|------|------|------| | line_id 生产线ID(例如LINE_01) | from_date 查询开始日期(YYYY-MM-DD) | to_date 查询结束日期(YYYY-MM-DD)|
返回示例:
{
"line_id": "LINE_01",
"from_date": "2024-01-01",
"to_date": "2024-03-31",
"rows": [
{
"date": "2024-01-01",
"oee": 0.71,
"availability": 0.9,
"performance": 0.8,
"quality": 0.98
}
]
}2. get_scrap_summary
查看特定工厂的历史Scrap(不良)摘要。
参数: 名称类型必需说明 |------|------|------|------| | plant_id |string|O|工厂ID(例如PLANT_A)| | from_date 查询开始日期(YYYY-MM-DD) | to_date 查询结束日期(YYYY-MM-DD)| | group_by |string|O|分组标准(product/workcenter/operation)|
返回示例:
{
"plant_id": "PLANT_A",
"from_date": "2024-01-01",
"to_date": "2024-01-31",
"group_by": "product",
"rows": [
{
"group_key": "2AM051B",
"produced_qty": 1000,
"scrap_qty": 35,
"scrap_rate": 0.035
}
]
}3. get_margin_by_customer
查看特定时期内客户的收入/成本/利润摘要。
参数: 名称类型必需说明 |------|------|------|------| | period 查询时间(YYYY-MM、YYYYYQN、YYYYY) | customer_id |string|X|客户ID(如果没有,则为所有客户)|
返回示例:
{
"period": "2024-01",
"customer_id": null,
"rows": [
{
"customer_id": "BMW",
"sales_amount": 100000.0,
"cogs_amount": 72000.0,
"margin_amount": 28000.0,
"margin_rate": 0.28
}
]
}项目结构
openedge-analytics-mcp/
├── mcp_server/
│ ├── __init__.py
│ ├── server.py # MCP 서버 진입점
│ ├── config.py # 환경 설정 관리
│ ├── db/
│ │ ├── __init__.py
│ │ └── connection.py # ODBC 연결 관리
│ └── tools/
│ ├── __init__.py
│ ├── oee_tools.py # OEE 관련 툴
│ ├── scrap_tools.py # Scrap 관련 툴
│ └── margin_tools.py # Margin 관련 툴
├── sql_templates/
│ ├── oee_trend.sql
│ ├── scrap_summary.sql
│ └── margin_by_customer.sql
├── tests/
│ ├── __init__.py
│ ├── test_connection.py
│ └── test_oee_tool.py
├── .env.example
├── .gitignore
├── requirements.txt
└── README.md修改SQL模板
SQL模板 sql_templates/ 位于目录中。请根据实际QAD/OpenEdge方案进行修改:
- 修改表/视图名称
- 修改列名称
- 添加所需JOIN
- 添加过滤条件
方案名称为 {schema} 指定为placeholder。 .env的 ANALYTICS_SCHEMA 将被替换为值。
运行测试
pytest tests/ -vMCP客户端连接示例
Claude桌面设置
claude_desktop_config.json:
{
"mcpServers": {
"openedge-analytics": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/openedge-analytics-mcp"
}
}
}许可证
仅限内部使用
咨询
有关QAD/OpenEdge Analytics的问题,请与您的IT团队联系。
