validate_sql_query
Validates SQL queries for safety, providing verification results and security checks when querying Japanese horse racing data.
Instructions
SQLクエリの安全性を検証
Args:
sql_query: 検証するSQLクエリ
Returns:
検証結果と安全性チェックInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sql_query | Yes |
Implementation Reference
- src/jvlink_mcp_server/server.py:439-465 (handler)The handler function for the validate_sql_query tool. It checks whether a given SQL query is safe by scanning for dangerous keywords (DROP, DELETE, UPDATE, etc.) and verifying it contains SELECT.
@mcp.tool() def validate_sql_query(sql_query: str) -> dict: """SQLクエリの安全性を検証 Args: sql_query: 検証するSQLクエリ Returns: 検証結果と安全性チェック """ dangerous_keywords = [ "DROP", "DELETE", "UPDATE", "INSERT", "CREATE", "ALTER", "TRUNCATE", "REPLACE", "MERGE", "GRANT", "REVOKE" ] query_upper = sql_query.upper() found_dangerous = [kw for kw in dangerous_keywords if kw in query_upper] is_safe = len(found_dangerous) == 0 and "SELECT" in query_upper return { "is_safe": is_safe, "query": sql_query, "dangerous_keywords_found": found_dangerous, "recommendation": "安全に実行可能" if is_safe else "危険なキーワードが含まれています", "can_execute": is_safe } - src/jvlink_mcp_server/server.py:439-439 (registration)Registration of validate_sql_query as an MCP tool via the @mcp.tool() decorator. The tool name defaults to the function name 'validate_sql_query'.
@mcp.tool() - Input schema: takes a single string parameter 'sql_query'. Output schema: returns a dict with is_safe (bool), query (str), dangerous_keywords_found (list), recommendation (str), can_execute (bool).
Args: sql_query: 検証するSQLクエリ Returns: 検証結果と安全性チェック """ dangerous_keywords = [ "DROP", "DELETE", "UPDATE", "INSERT", "CREATE", "ALTER", "TRUNCATE", "REPLACE", "MERGE", "GRANT", "REVOKE" ] query_upper = sql_query.upper() found_dangerous = [kw for kw in dangerous_keywords if kw in query_upper] is_safe = len(found_dangerous) == 0 and "SELECT" in query_upper return { "is_safe": is_safe, "query": sql_query, "dangerous_keywords_found": found_dangerous, "recommendation": "安全に実行可能" if is_safe else "危険なキーワードが含まれています", "can_execute": is_safe }