tdsql-mcp 1.3.7__tar.gz → 1.3.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/PKG-INFO +1 -1
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/pyproject.toml +1 -1
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/src/tdsql_mcp/server.py +17 -15
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/.env.example +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/.gitignore +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/CLAUDE.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/README.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/docs/architecture.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/requirements.txt +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/README.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/SKILL.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/aggregate-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ai-text-analytics.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/association-analysis.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/authorization-objects.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/bit-byte-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/byom-model-loading.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/byom-scoring.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/catalog-views.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/conditional.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-cleaning.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-exploration.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-prep.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-types-casting.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/date-time.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/embeddings.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/fit-transform-pattern.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/geospatial.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/guidelines.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/hypothesis-testing.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/index.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/json-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/llm-providers.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ml-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ml-patterns.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/model-evaluation.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/numeric-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/path-analysis.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/query-tuning.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/sql-basics.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/string-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/text-analytics.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-concepts.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-data-prep.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-diagnostics.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-dsp.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-estimation.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-forecasting.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-formula-rules.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-utility.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/utility-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/vector-search.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/window-functions.md +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/src/tdsql_mcp/__init__.py +0 -0
- {tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tdsql-mcp
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.9
|
|
4
4
|
Summary: MCP server for Teradata Vantage — SQL execution and native analytics function reference for AI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/ksturgeon-td/tdsql-mcp
|
|
6
6
|
Project-URL: Repository, https://github.com/ksturgeon-td/tdsql-mcp
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tdsql-mcp"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.9"
|
|
8
8
|
description = "MCP server for Teradata Vantage — SQL execution and native analytics function reference for AI agents"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -23,9 +23,10 @@ mcp = FastMCP(
|
|
|
23
23
|
"You are working with a Teradata Vantage database. "
|
|
24
24
|
"IMPORTANT: Always prefer native Teradata table operators over hand-written SQL equivalents. "
|
|
25
25
|
"Teradata Vantage has built-in distributed functions for analytics, ML, data preparation, "
|
|
26
|
-
"text processing, and vector search
|
|
27
|
-
"
|
|
28
|
-
"
|
|
26
|
+
"text processing, and vector search that run across all AMPs in parallel. "
|
|
27
|
+
"Do NOT write manual SQL for analytics, ML, data preparation, or search operations — "
|
|
28
|
+
"Teradata has native distributed functions for most of these; always load guidelines and "
|
|
29
|
+
"the relevant syntax topic first. "
|
|
29
30
|
"CRITICAL: Never write native table operator syntax (nPath, TD_XGBoost, TD_HNSW, UAF functions, "
|
|
30
31
|
"AI_* functions, etc.) from training knowledge — training data for these functions is frequently "
|
|
31
32
|
"incomplete or incorrect. Always call get_syntax_help to load authoritative syntax before writing "
|
|
@@ -353,11 +354,14 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
353
354
|
"""Parse a Teradata connection URI into a teradatasql.connect() kwargs dict.
|
|
354
355
|
|
|
355
356
|
URI format:
|
|
356
|
-
teradata://user:password@host[:port][/database][?param=value&...]
|
|
357
|
+
teradata://[user:password@]host[:port][/database][?param=value&...]
|
|
358
|
+
|
|
359
|
+
user and password are optional — omit them for authentication methods that
|
|
360
|
+
don't use inline credentials (e.g. logmech=BROWSER, logmech=KRB5).
|
|
357
361
|
|
|
358
362
|
URI components map to teradatasql parameters:
|
|
359
|
-
user → user
|
|
360
|
-
password → password
|
|
363
|
+
user → user (optional)
|
|
364
|
+
password → password (optional)
|
|
361
365
|
host → host
|
|
362
366
|
port → dbs_port (Teradata default: 1025)
|
|
363
367
|
/path → database
|
|
@@ -377,7 +381,7 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
377
381
|
params: dict[str, Any] = {}
|
|
378
382
|
|
|
379
383
|
if not parsed.hostname:
|
|
380
|
-
raise ValueError("URI is missing a hostname. Expected: teradata://user:password@host
|
|
384
|
+
raise ValueError("URI is missing a hostname. Expected: teradata://host/database or teradata://user:password@host/database")
|
|
381
385
|
|
|
382
386
|
params["host"] = parsed.hostname
|
|
383
387
|
|
|
@@ -400,11 +404,6 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
400
404
|
for key, values in parse_qs(parsed.query, keep_blank_values=True).items():
|
|
401
405
|
params[key] = values[0]
|
|
402
406
|
|
|
403
|
-
if not params.get("user"):
|
|
404
|
-
raise ValueError("URI is missing a username. Expected: teradata://user:password@host/...")
|
|
405
|
-
if not params.get("password"):
|
|
406
|
-
raise ValueError("URI is missing a password. Expected: teradata://user:password@host/...")
|
|
407
|
-
|
|
408
407
|
return params
|
|
409
408
|
|
|
410
409
|
|
|
@@ -423,11 +422,14 @@ def main() -> None:
|
|
|
423
422
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
424
423
|
epilog=(
|
|
425
424
|
"Connection URI format:\n"
|
|
426
|
-
" teradata://user:password@host[:port][/database][?param=value&...]\n\n"
|
|
425
|
+
" teradata://[user:password@]host[:port][/database][?param=value&...]\n\n"
|
|
426
|
+
"Credentials are optional — omit them for browser or Kerberos auth.\n\n"
|
|
427
427
|
"Examples:\n"
|
|
428
428
|
" teradata://alice:s3cr3t@myhost/mydb\n"
|
|
429
429
|
" teradata://alice:s3cr3t@myhost:1025/mydb?logmech=LDAP&encryptdata=true\n"
|
|
430
|
-
" teradata://alice:s3cr3t@myhost/mydb?logon_timeout=30&sslmode=VERIFY-FULL\n
|
|
430
|
+
" teradata://alice:s3cr3t@myhost/mydb?logon_timeout=30&sslmode=VERIFY-FULL\n"
|
|
431
|
+
" teradata://myhost/mydb?logmech=BROWSER\n"
|
|
432
|
+
" teradata://myhost/mydb?logmech=KRB5\n\n"
|
|
431
433
|
"Any teradatasql connection parameter can be added as a query-string argument.\n"
|
|
432
434
|
"See: https://github.com/Teradata/python-driver#connection-parameters"
|
|
433
435
|
),
|
|
@@ -464,7 +466,7 @@ def main() -> None:
|
|
|
464
466
|
parser.error(
|
|
465
467
|
"A connection URI is required.\n"
|
|
466
468
|
"Set DATABASE_URI env var or pass --uri.\n"
|
|
467
|
-
"Format: teradata://user:password@host/database"
|
|
469
|
+
"Format: teradata://[user:password@]host/database[?logmech=BROWSER]"
|
|
468
470
|
)
|
|
469
471
|
|
|
470
472
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/aggregate-functions.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ai-text-analytics.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/association-analysis.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/authorization-objects.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/bit-byte-functions.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/byom-model-loading.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-exploration.md
RENAMED
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-types-casting.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/fit-transform-pattern.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/hypothesis-testing.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/model-evaluation.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/numeric-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/string-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-formula-rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/utility-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.7 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/window-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|