.vscode — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited .vscode (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- mcp-name: io.github.totonga/odsbox-jaquel-mcp -->
A Model Context Protocol (MCP) server for ASAM ODS with odsbox Jaquel query tools, ODS connection management, and measurement data access.
help_bulk_api toolPROMPTS.md for starting prompts documentationTOOLS_GUIDE.mdCHANGELOG.md#### Using uvx (Recommended)
The easiest way to use this MCP server is with uvx:
uvx odsbox-jaquel-mcp@latestThis automatically installs and runs the server without managing virtual environments.
#### Using uv tool (persistent install)
For a persistent installation:
uv tool install odsbox-jaquel-mcp
odsbox-jaquel-mcp#### Using project virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv 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.The server runs on stdin/stdout and waits for MCP messages from an MCP client:
# With uvx (auto-installs and runs)
uvx odsbox-jaquel-mcp@latest
# With uv tool (if installed)
odsbox-jaquel-mcp
# With project environment
uv run python -m odsbox_jaquel_mcpAdd to your MCP client configuration (e.g., Claude Desktop, VS Code):
{
"mcpServers": {
"ods-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["odsbox-jaquel-mcp@latest"]
}
}
}Or with uv tool:
{
"mcpServers": {
"ods-mcp": {
"type": "stdio",
"command": "odsbox-jaquel-mcp"
}
}
}| Variable | Default | Description |
|---|---|---|
ODSBOX_STATS_ENABLED | not 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_LEVEL | INFO | Controls 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_MODE | basic | Authentication mode for ods_connect_using_env: basic, m2m, or oidc |
ODSBOX_MCP_URL | not set | ODS server URL for ods_connect_using_env |
ODSBOX_MCP_USER | not set | ODS username (basic mode) |
ODSBOX_MCP_PASSWORD | not set | ODS password (basic mode; falls back to keyring) |
ODSBOX_MCP_M2M_TOKEN_ENDPOINT | not set | OAuth2 token endpoint (m2m mode) |
ODSBOX_MCP_M2M_CLIENT_ID | not set | Client ID (m2m mode) |
ODSBOX_MCP_M2M_CLIENT_SECRET | not set | Client secret (m2m mode; falls back to keyring) |
ODSBOX_MCP_OIDC_CLIENT_ID | not set | Client ID (oidc mode) |
ODSBOX_MCP_OIDC_REDIRECT_URI | not set | Redirect URI (oidc mode, e.g. http://127.0.0.1:1234) |
ODSBOX_MCP_VERIFY | true | TLS certificate verification (true/false) |
See TOOLS_GUIDE.md for the full list of authentication variables and keyring fallback details.
When ODSBOX_STATS_ENABLED=true is set, the server records tool call and resource read statistics to a local SQLite database:
~/.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.You can query the stats database directly:
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:
{
"mcpServers": {
"ods-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["odsbox-jaquel-mcp@latest"],
"env": {
"ODSBOX_STATS_ENABLED": "true",
"FASTMCP_LOG_LEVEL": "WARNING"
}
}
}
}git clone https://github.com/totonga/odsbox-jaquel-mcp.git
cd odsbox-jaquel-mcp
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv sync --all-extras --group dev# Run server locally
uv run python -m odsbox_jaquel_mcp
# Run tests
uv run pytest tests/
# or
python run_tests.py
# Code formatting and linting
ruff check .
ruff format .
# Build package
uv build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uvx odsbox-jaquel-mcp@latestPull requests and issues are welcome! Please:
This project is licensed under the Apache License 2.0. See LICENSE.
#### Connection Management
#### Schema Inspection
#### Query Building & Validation
#### Timeseries/Submatrix Data Access
#### Pattern & Example Library
Discover and use the server's capabilities through interactive guided prompts:
See PROMPTS.md for complete details on all starting prompts.
#### Not connected
{
"error": "Model not loaded",
"hint": "Connect to ODS server using 'ods_connect' tool first"
}Solution: Call ods_connect first
#### Invalid entity
{
"error": "Entity not found: InvalidEntity",
"available_entities": ["AoUnit", "AoMeasurement", ...]
}Solution: Use valid entity from available_entities
#### Invalid field
{
"valid": false,
"issues": ["Field 'invalid_field' not found"],
"suggestions": ["id", "name", "description"]
}Solution: Use one of the suggested fields
#### Connection failed
{
"success": false,
"error": "Connection refused",
"error_type": "ConnectionError"
}Solution: Check URL, server availability, firewall
$rowlimit appropriatelyverify_certificate: true for production
{width=300px}
Try with example server configuration using all three authentication modes via different env prefixes:
{
"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": []
}For issues or questions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.