tdsql-mcp 1.3.8__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.8 → tdsql_mcp-1.3.9}/PKG-INFO +1 -1
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/pyproject.toml +1 -1
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/src/tdsql_mcp/server.py +13 -12
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/.env.example +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/.gitignore +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/CLAUDE.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/README.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/docs/architecture.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/requirements.txt +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/README.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/SKILL.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/aggregate-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ai-text-analytics.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/association-analysis.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/authorization-objects.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/bit-byte-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/byom-model-loading.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/byom-scoring.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/catalog-views.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/conditional.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-cleaning.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-exploration.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-prep.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-types-casting.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/date-time.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/embeddings.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/fit-transform-pattern.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/geospatial.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/guidelines.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/hypothesis-testing.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/index.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/json-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/llm-providers.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ml-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ml-patterns.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/model-evaluation.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/numeric-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/path-analysis.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/query-tuning.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/sql-basics.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/string-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/text-analytics.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-concepts.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-data-prep.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-diagnostics.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-dsp.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-estimation.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-forecasting.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-formula-rules.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/uaf-utility.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/utility-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/vector-search.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/window-functions.md +0 -0
- {tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/src/tdsql_mcp/__init__.py +0 -0
- {tdsql_mcp-1.3.8 → 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"
|
|
@@ -354,11 +354,14 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
354
354
|
"""Parse a Teradata connection URI into a teradatasql.connect() kwargs dict.
|
|
355
355
|
|
|
356
356
|
URI format:
|
|
357
|
-
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).
|
|
358
361
|
|
|
359
362
|
URI components map to teradatasql parameters:
|
|
360
|
-
user → user
|
|
361
|
-
password → password
|
|
363
|
+
user → user (optional)
|
|
364
|
+
password → password (optional)
|
|
362
365
|
host → host
|
|
363
366
|
port → dbs_port (Teradata default: 1025)
|
|
364
367
|
/path → database
|
|
@@ -378,7 +381,7 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
378
381
|
params: dict[str, Any] = {}
|
|
379
382
|
|
|
380
383
|
if not parsed.hostname:
|
|
381
|
-
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")
|
|
382
385
|
|
|
383
386
|
params["host"] = parsed.hostname
|
|
384
387
|
|
|
@@ -401,11 +404,6 @@ def _parse_uri(uri: str) -> dict[str, Any]:
|
|
|
401
404
|
for key, values in parse_qs(parsed.query, keep_blank_values=True).items():
|
|
402
405
|
params[key] = values[0]
|
|
403
406
|
|
|
404
|
-
if not params.get("user"):
|
|
405
|
-
raise ValueError("URI is missing a username. Expected: teradata://user:password@host/...")
|
|
406
|
-
if not params.get("password"):
|
|
407
|
-
raise ValueError("URI is missing a password. Expected: teradata://user:password@host/...")
|
|
408
|
-
|
|
409
407
|
return params
|
|
410
408
|
|
|
411
409
|
|
|
@@ -424,11 +422,14 @@ def main() -> None:
|
|
|
424
422
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
425
423
|
epilog=(
|
|
426
424
|
"Connection URI format:\n"
|
|
427
|
-
" 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"
|
|
428
427
|
"Examples:\n"
|
|
429
428
|
" teradata://alice:s3cr3t@myhost/mydb\n"
|
|
430
429
|
" teradata://alice:s3cr3t@myhost:1025/mydb?logmech=LDAP&encryptdata=true\n"
|
|
431
|
-
" 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"
|
|
432
433
|
"Any teradatasql connection parameter can be added as a query-string argument.\n"
|
|
433
434
|
"See: https://github.com/Teradata/python-driver#connection-parameters"
|
|
434
435
|
),
|
|
@@ -465,7 +466,7 @@ def main() -> None:
|
|
|
465
466
|
parser.error(
|
|
466
467
|
"A connection URI is required.\n"
|
|
467
468
|
"Set DATABASE_URI env var or pass --uri.\n"
|
|
468
|
-
"Format: teradata://user:password@host/database"
|
|
469
|
+
"Format: teradata://[user:password@]host/database[?logmech=BROWSER]"
|
|
469
470
|
)
|
|
470
471
|
|
|
471
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.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/aggregate-functions.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/ai-text-analytics.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/association-analysis.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/authorization-objects.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/bit-byte-functions.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → 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.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/data-exploration.md
RENAMED
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.8 → 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.8 → 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.8 → 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.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/model-evaluation.md
RENAMED
|
File without changes
|
{tdsql_mcp-1.3.8 → 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.8 → 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.8 → 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.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/utility-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
{tdsql_mcp-1.3.8 → tdsql_mcp-1.3.9}/skills/teradata-sql-analytics/syntax/window-functions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|