ASAM ODS odsbox jaquel MCP Server

io.github.totonga由 GitHub 账号 totonga 发布v1.8.3更新于 Oct 24, 2026

MCP server for ASAM ODS with Jaquel query tools, connection management, and data access

已验证STDIO仅桌面数据库数据与分析

概览

AI 生成的概览

面向 ASAM ODS 的本地 MCP 服务器,让助手连接 ODS 服务器、查看模式、校验并执行 Jaquel 查询、读取测量数据。

可以做什么
管理 ODS 连接:建立连接、通过环境变量连接、断开连接、查看连接状态与信息。查看模式:列出实体及关系、获取实体字段、探索 AoTest 到 AoMeasurement 的层级结构。构建与校验 Jaquel 查询:校验语法、生成通俗解释、生成查询骨架、列出查询模式与运算符文档、执行查询。访问测量数据:列出测量量、读取时间序列/子矩阵数据、生成 Python 取数脚本。生成分析辅助:测量对比用 Jupyter notebook、Matplotlib 可视化代码、统计对比与相关性分析。
适用场景
适用于处理 ASAM ODS 测量数据库的场景:希望助手探索模式、起草并检查 Jaquel 查询,或提取时间序列数据用于对比和可视化,而无需手写 API 调用。
运行要求
以 stdio 在本地运行,通常通过 uvx 从 PyPI 包启动(需要 Python/uv)。需要能访问 ASAM ODS 服务器的网络及其凭据:basic 模式使用 ODSBOX_MCP_URL、ODSBOX_MCP_USER、ODSBOX_MCP_PASSWORD;m2m 模式使用 ODSBOX_MCP_M2M_TOKEN_ENDPOINT、ODSBOX_MCP_M2M_CLIENT_ID、ODSBOX_MCP_M2M_CLIENT_SECRET;oidc 模式使用 ODSBOX_MCP_OIDC_CLIENT_ID 和 ODSBOX_MCP_OIDC_REDIRECT_URI。可选 [play] 附加包提供 pandas、matplotlib 和 scipy。
安装前请注意
涉及 ODS 凭据:ODSBOX_MCP_PASSWORD 和 ODSBOX_MCP_M2M_CLIENT_SECRET 可通过环境变量提供,或回退到 ods-pilot 钥匙串服务,请勿写入共享配置文件。查询会在真实 ODS 服务器上执行,大数据集可能耗时或负载较高,应使用过滤条件和行数限制。ODSBOX_MCP_VERIFY 可关闭 TLS 证书校验,会降低安全性。可选的 ODSBOX_STATS_ENABLED 会把工具调用统计写入本地 SQLite 数据库。

安装

在 SourceWeft 中

  1. 打开 控制台中的 ASAM ODS odsbox jaquel MCP Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

ASAM ODS Jaquel MCP Server

[PyPI version] [Apache 2.0 License] [Python] [Status] [Build Status] [Stars]

A Model Context Protocol (MCP) server for ASAM ODS with odsbox Jaquel query tools, ODS connection management, and measurement data access.


Overview

  • 🔌 Built-in ODS connection management
  • 🧰 MCP tools: schema inspection, query validation, direct ODS query execution and measurement data analysis
  • 🏗️ Entity hierarchy visualization (AoTest → AoMeasurement)
  • 🚀 Validate, explain and execute JAQueL queries for ASAM ODS
  • 📦 Bulk timeseries/submatrix data access and script generation
  • 📊 Automatic Jupyter notebook generation for measurement comparison
  • 📈 Matplotlib visualization code generation
  • 📉 Statistical measurement comparison and correlation analysis
  • 🔎 Measurement hierarchy exploration and discovery
  • 💡 Interactive starting prompts for guided workflows
  • 🤖 AI-guided bulk API learning with help_bulk_api tool
  • 📝 Comprehensive documentation and test suite

Documentation

Quick Start

Installation

Using uvx (Recommended)

The easiest way to use this MCP server is with uvx:

bash
uvx odsbox-jaquel-mcp@latest

This automatically installs and runs the server without managing virtual environments.

Using uv tool (persistent install)

For a persistent installation:

bash
uv tool install odsbox-jaquel-mcpodsbox-jaquel-mcp
Using project virtual environment
bash
uv venvsource .venv/bin/activate  # On Windows: .venv\Scripts\activateuv pip install odsbox-jaquel-mcp[play]

Note: The [play] extra includes optional data analysis and visualization dependencies (pandas, matplotlib, scipy) for working with Jupyter notebooks and data analysis.

Running the Server

The server runs on stdin/stdout and waits for MCP messages from an MCP client:

bash
# With uvx (auto-installs and runs)uvx odsbox-jaquel-mcp@latest
# With uv tool (if installed)odsbox-jaquel-mcp
# With project environmentuv run python -m odsbox_jaquel_mcp

Configuration for MCP Clients

Add to your MCP client configuration (e.g., Claude Desktop, VS Code):

json
{  "mcpServers": {    "ods-mcp": {      "type": "stdio",      "command": "uvx",      "args": ["odsbox-jaquel-mcp@latest"]    }  }}

Or with uv tool:

json
{  "mcpServers": {    "ods-mcp": {      "type": "stdio",      "command": "odsbox-jaquel-mcp"    }  }}

Environment Variables

VariableDefaultDescription
ODSBOX_STATS_ENABLEDnot set (disabled)Set to 1, true, or yes to enable tool and resource call monitoring. Statistics are persisted to a SQLite database (odsbox-jaquel-mcp-stats.db) for cross-session tracking.
FASTMCP_LOG_LEVELINFOControls the server-side log level (DEBUG, INFO, WARNING, ERROR, CRITICAL). With stdio transport all logs go to stderr, which MCP clients may display as warnings. Set to WARNING to reduce noise.
ODSBOX_MCP_MODEbasicAuthentication mode for ods_connect_using_env: basic, m2m, or oidc
ODSBOX_MCP_URLnot setODS server URL for ods_connect_using_env
ODSBOX_MCP_USERnot setODS username (basic mode)
ODSBOX_MCP_PASSWORDnot setODS password (basic mode; falls back to keyring, checking ods-pilot first)
ODSBOX_MCP_M2M_TOKEN_ENDPOINTnot setOAuth2 token endpoint (m2m mode)
ODSBOX_MCP_M2M_CLIENT_IDnot setClient ID (m2m mode)
ODSBOX_MCP_M2M_CLIENT_SECRETnot setClient secret (m2m mode; falls back to keyring, checking ods-pilot first)
ODSBOX_MCP_OIDC_CLIENT_IDnot setClient ID (oidc mode)
ODSBOX_MCP_OIDC_REDIRECT_URInot setRedirect URI (oidc mode, e.g. http://127.0.0.1:1234)
ODSBOX_MCP_VERIFYtrueTLS certificate verification (true/false)

See TOOLS_GUIDE.md for the full list of authentication variables and keyring fallback details.

Secrets are looked up in the ods-pilot keyring service first using <service>::<username> records, then in the legacy direct service lookup if no entry is found.

Usage Monitoring

When ODSBOX_STATS_ENABLED=true is set, the server records tool call and resource read statistics to a local SQLite database:

  • Location: ~/.local/share/odsbox-jaquel-mcp/odsbox-jaquel-mcp-stats.db (Linux/macOS) or %APPDATA%\odsbox-jaquel-mcp\odsbox-jaquel-mcp-stats.db (Windows), with fallback to the system temp directory.
  • Tracked per tool: call count, error count, total execution time (ms), last called timestamp.
  • Tracked per resource: read count, error count, total execution time (ms), last read timestamp.
  • Cross-process safe: uses SQLite WAL mode, so multiple concurrent MCP sessions can write safely.

You can query the stats database directly:

bash
sqlite3 ~/.local/share/odsbox-jaquel-mcp/odsbox-jaquel-mcp-stats.db \  "SELECT name, calls, errors, total_ms FROM tool_stats ORDER BY calls DESC"

Example MCP client configuration with monitoring enabled:

json
{  "mcpServers": {    "ods-mcp": {      "type": "stdio",      "command": "uvx",      "args": ["odsbox-jaquel-mcp@latest"],      "env": {        "ODSBOX_STATS_ENABLED": "true",        "FASTMCP_LOG_LEVEL": "WARNING"      }    }  }}

Development

Setup

bash
git clone https://github.com/totonga/odsbox-jaquel-mcp.gitcd odsbox-jaquel-mcpuv venvsource .venv/bin/activate  # On Windows: .venv\Scripts\activateuv sync --all-extras --group dev

Common Tasks

bash
# Run server locallyuv run python -m odsbox_jaquel_mcp
# Run testsuv run pytest tests/# orpython run_tests.py
# Code formatting and lintingruff check .ruff format .
# Build packageuv build
# Test with MCP Inspectornpx @modelcontextprotocol/inspector uvx odsbox-jaquel-mcp@latest

Contributing

Pull requests and issues are welcome! Please:

  • Follow PEP8 and use type hints
  • Add/maintain tests for new features
  • Update documentation as needed

License

This project is licensed under the Apache License 2.0. See LICENSE.

Links

Features

Core MCP Tools

Connection Management
  • ods_connect - Establish ODS connection
  • ods_connect_using_env - Establish ODS connection using environment variables
  • ods_disconnect - Close ODS connection
  • ods_get_connection_info - Get connection status
Schema Inspection
  • schema_get_entity - Get all fields for entity
  • schema_list_entities - List all entities with relationships
  • schema_test_to_measurement_hierarchy - Get ASAM ODS test hierarchy structure
Query Building & Validation
  • query_validate - Check query syntax and structure
  • query_describe - Get plain English explanation
  • query_execute - Execute query on ODS server
Timeseries/Submatrix Data Access
  • data_get_quantities - List measurement quantities for submatrix
  • data_read_submatrix - Read timeseries data from submatrix
  • data_generate_fetcher_script - Generate Python scripts for data fetching
Pattern & Example Library
  • query_generate_skeleton - Generate query skeleton (basic query) for entity
  • query_get_pattern - Get template for common patterns
  • query_list_patterns - List available patterns
  • query_get_operator_docs - Learn about operators

Starting Prompts

Discover and use the server's capabilities through interactive guided prompts:

  • ODS Server Connection - Set up and manage connections
  • Validate a Jaquel Query - Learn query validation
  • Explore Query Patterns - Find common query templates
  • Bulk Data Access - Master the 3-step Bulk API workflow
  • Measurement Analysis - Compare measurements and visualize data

See PROMPTS.md for complete details on all starting prompts.

Error Handling

Common Errors and Solutions

Not connected
json
{  "error": "Model not loaded",  "hint": "Connect to ODS server using 'ods_connect' tool first"}

Solution: Call ods_connect first

Invalid entity
json
{  "error": "Entity not found: InvalidEntity",  "available_entities": ["AoUnit", "AoMeasurement", ...]}

Solution: Use valid entity from available_entities

Invalid field
json
{  "valid": false,  "issues": ["Field 'invalid_field' not found"],  "suggestions": ["id", "name", "description"]}

Solution: Use one of the suggested fields

Connection failed
json
{  "success": false,  "error": "Connection refused",  "error_type": "ConnectionError"}

Solution: Check URL, server availability, firewall

Troubleshooting

Issue: Tools not discovered

  • Ensure mcp>=0.1.0 is installed
  • Check ToolsCapability is set in ServerCapabilities
  • Restart MCP client

Issue: Schema tools fail

  • Ensure ODS server is accessible
  • Check username/password
  • Verify network connectivity
  • Review server logs

Issue: Queries timeout

  • Increase request_timeout in connect
  • Reduce $rowlimit
  • Check ODS server performance

Performance Tips

  1. Use specific filters - Avoid querying all records
  2. Limit rows - Always use $rowlimit appropriately
  3. Select attributes - Only retrieve needed columns/attributes
  4. Index awareness - Filter on indexed fields first
  5. Connection reuse - Keep connection open when possible
  6. Cache schemas - Schema inspection is cached

Security Notes

  • Credentials are only held in memory during connection
  • Connection is cleaned up on disconnect
  • No credentials stored in config files
  • Use HTTPS with verify_certificate: true for production

Install in VSCode

[install in VSCode]{width=300px}

Try with example server configuration using all three authentication modes via different env prefixes:

json
{	"servers": {		"ods": {			"type": "stdio",			"command": "uvx",			"args": [				"odsbox-jaquel-mcp@latest"			],			"env": {				"ODSBOX_MCP_URL": "https://docker.peak-solution.de:10032/api",				"ODSBOX_MCP_USER": "Demo",				"ODSBOX_MCP_PASSWORD": "mdm",				"ODSBOX_MCP2_MODE": "m2m",				"ODSBOX_MCP2_URL": "https://ods.example.com/api",				"ODSBOX_MCP2_M2M_TOKEN_ENDPOINT": "https://auth.example.com/realms/myrealm/protocol/openid-connect/token",				"ODSBOX_MCP2_M2M_CLIENT_ID": "my-service-client",				"ODSBOX_MCP3_MODE": "oidc",				"ODSBOX_MCP3_URL": "https://ods.example.com/api",				"ODSBOX_MCP3_OIDC_CLIENT_ID": "my-oidc-client",				"ODSBOX_MCP3_OIDC_REDIRECT_URI": "http://127.0.0.1:1234"			}		}	},	"inputs": []}

Support

For issues or questions:

  1. Check the error message and hints
  2. Review the documentation

来源:README.md,提交 f64da5b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.8.3最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。