Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ services:
context: .
args:
- ENABLE_FS_MODULE=${ENABLE_FS_MODULE:-false}
- ENABLE_EVS_MODULE=${ENABLE_EVS_MODULE:-false}
- ENABLE_TDVS_MODULE=${ENABLE_TDVS_MODULE:-false}
- ENABLE_TDML_MODULE=${ENABLE_TDML_MODULE:-false}
image: teradata-mcp-server:latest
Expand All @@ -24,7 +23,6 @@ services:
context: .
args:
- ENABLE_FS_MODULE=${ENABLE_FS_MODULE:-false}
- ENABLE_EVS_MODULE=${ENABLE_EVS_MODULE:-false}
- ENABLE_TDVS_MODULE=${ENABLE_TDVS_MODULE:-false}
- ENABLE_TDML_MODULE=${ENABLE_TDML_MODULE:-false}
image: teradata-mcp-server:latest
Expand Down
10 changes: 5 additions & 5 deletions docs/developer_guide/DEVELOPER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ uv python install # ensure a compatible Python is available
uv sync # create venv and install project deps
```

> Tip: add extras for full dev (feature store, EVS) if you use them:
> Tip: add extras for full dev (feature store, tdvs) if you use them:
```bash
uv sync --extra fs --extra tdvs
```
Expand Down Expand Up @@ -306,7 +306,7 @@ teradata-mcp-server/
├─ __init__.py # Package metadata + CLI entry main()
├─ __main__.py # Allows `python -m teradata_mcp_server`
├─ server.py # Slim entrypoint; parses CLI/env and runs app
├─ app.py # App factory: logging, middleware, tools, YAML, EVS/EFS wiring
├─ app.py # App factory: logging, middleware, tools, YAML, tdvs/EFS wiring
├─ utils.py # Logging setup, response formatting, config loaders
├─ middleware.py # Shared RequestContextMiddleware (stdio fast‑path + HTTP/SSE)
├─ config/ # Packaged default profiles.yml
Expand All @@ -318,12 +318,12 @@ teradata-mcp-server/
├─ utils/
│ ├─ __init__.py # JSON helpers, auth header parsing, exports queryband
+ │ └─ queryband.py # Build Teradata QueryBand from request context
├─ base/ ... # Tool groups (base, dba, sec, qlty, rag, fs, evs, ...)
└─ fs/evs/... # Optional extras; imported only if profile enables them
├─ base/ ... # Tool groups (base, dba, sec, qlty, rag, fs, tdvs, ...)
└─ fs/... # Optional extras; imported only if profile enables them
```

Notes:
- EFS (fs) and EVS (evs) modules are optional. They are loaded only if your profile enables tools with prefixes `fs_*` or `evs_*`. Missing dependencies result in a warning; the rest of the server continues to operate.
- EFS (fs) and tdvs (tdvs) modules are optional. They are loaded only if your profile enables tools with prefixes `fs_*` or `tdvs_*`. Missing dependencies result in a warning; the rest of the server continues to operate.
- Logging writes to a per‑user file location by default for HTTP/SSE transports; console logging is disabled for stdio to avoid polluting MCP protocol streams. Override with `LOG_DIR` or `NO_FILE_LOGS=1`.
- Handles errors and response formatting
- Reconnects when needed
Expand Down
6 changes: 3 additions & 3 deletions docs/server_guide/INSTALLATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ We recommend `uv` or `pipx` to install teradata-mcp-server as a CLI tool. They p
uv tool install "teradata-mcp-server"

# With optional Enterprise Feature Store and Vector Store
uv tool install "teradata-mcp-server[fs,evs]"
uv tool install "teradata-mcp-server[fs,tdvs]"
```

If the tool's path isn't resolved add it to your shell using `uv tool update-shell` and restart the terminal.
Expand All @@ -51,7 +51,7 @@ python -m pipx ensurepath
pipx install "teradata-mcp-server"

# With optional Enterprise Feature Store and Vector Store
pipx install "teradata-mcp-server[fs,evs]"
pipx install "teradata-mcp-server[fs,tdvs]"
```

### Usage
Expand Down Expand Up @@ -167,7 +167,7 @@ pip install --upgrade pip
pip install teradata-mcp-server

# With enterprise features
pip install "teradata-mcp-server[fs,evs]"
pip install "teradata-mcp-server[fs,tdvs]"
```

### Usage
Expand Down
21 changes: 1 addition & 20 deletions examples/app-testing-agent/test_prompt_objects.yml
Original file line number Diff line number Diff line change
Expand Up @@ -285,23 +285,4 @@ test_fsTools:
- |-------|-------------|--------|---------|
- | 0 | Set up test environment | Success | Test environment set up successfully |

test_evsTools:
type: prompt
description: "Test all the evs MCP tools. (prompt_type: reporting)"
prompt: |
You are a Tester who is an expert in testing the functionality of tools in the evs module. You will test all tools in the module.
## your role will work through the phases
Perform the phases in order, and do not skip any phase.

## Phase 0 - set up test environment

## Communication guidelines:
- Be concise but informative in your explanations
- Clearly indicate which phase the process is currently in
- summarize the success or any failure of the phase before moving to the next phase
## Final output guidelines:
- return in markdown results for all phases
- Example:
***Phase 0:*** list databases: Successful
***Phase 1:*** list tables in DBC database: Successful
***Phase 2:*** Create test_customer table: Failed

5 changes: 1 addition & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,7 @@ fs = [
"teradataml>=20.0.0.7",
"tdfs4ds>=0.2.4.0",
]
# Enterprise Vector Store functionality
evs = [
"teradatagenai>=20.0.0.0",
]

# Teradata Vector Store functionality
tdvs = [
"teradatagenai>=20.0.0.3"
Expand Down
10 changes: 0 additions & 10 deletions src/teradata_mcp_server/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ def create_mcp_app(settings: Settings):

# Feature flags from profiles
enableEFS = True if any(re.match(pattern, 'fs_*') for pattern in config.get('tool', [])) else False
enableEVS = True if any(re.match(pattern, 'evs_*') for pattern in config.get('tool', [])) else False
enableTDVS = True if any(re.match(pattern, 'tdvs_*') for pattern in config.get('tool', [])) else False

# Initialize TD connection and optional teradataml/EFS context
Expand Down Expand Up @@ -96,15 +95,6 @@ def create_mcp_app(settings: Settings):
logger.warning(f"Analytic functions are not available.")
enableEFS = False

# EVS connection (optional)
evs = None
if len(os.getenv("VS_NAME", "").strip()) > 0:
try:
evs = td.get_evs()
enableEVS = True
except Exception as e:
logger.error(f"Unable to establish connection to EVS, disabling: {e}")
enableEVS = False

# TeradataVectorStore connection (optional)
tdvs = None
Expand Down
18 changes: 0 additions & 18 deletions src/teradata_mcp_server/tools/evs/README.md

This file was deleted.

2 changes: 0 additions & 2 deletions src/teradata_mcp_server/tools/evs/__init__.py

This file was deleted.

Empty file.
Empty file.
57 changes: 0 additions & 57 deletions src/teradata_mcp_server/tools/evs/evs_tools.py

This file was deleted.

56 changes: 0 additions & 56 deletions src/teradata_mcp_server/tools/evs_connect.py

This file was deleted.

16 changes: 0 additions & 16 deletions src/teradata_mcp_server/tools/module_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class ModuleLoader:
MODULE_MAP = {
'base': 'teradata_mcp_server.tools.base',
'dba': 'teradata_mcp_server.tools.dba',
'evs': 'teradata_mcp_server.tools.evs',
'fs': 'teradata_mcp_server.tools.fs',
'qlty': 'teradata_mcp_server.tools.qlty',
'rag': 'teradata_mcp_server.tools.rag',
Expand Down Expand Up @@ -63,10 +62,6 @@ def determine_required_modules(self, config: dict) -> list[str]:
required_modules.add(prefix)
logger.info(f"Pattern '{pattern}' matches module '{prefix}'")

# Add EVS connection if EVS tools are needed
if 'evs' in required_modules:
required_modules.add('evs_connect')

self._required_modules = required_modules
return list(required_modules)

Expand Down Expand Up @@ -100,12 +95,6 @@ def load_module(self, module_name: str) -> Any | None:
self._loaded_modules['td_connect'] = td_connect
logger.info("Loaded td_connect module")
return td_connect
elif module_name == 'evs_connect':
# Use absolute import to avoid circular dependency
evs_connect = importlib.import_module('teradata_mcp_server.tools.evs_connect')
self._loaded_modules['evs_connect'] = evs_connect
logger.info("Loaded evs_connect module")
return evs_connect
else:
logger.warning(f"Unknown module: {module_name}")
return None
Expand All @@ -121,11 +110,6 @@ def load_module(self, module_name: str) -> Any | None:
logger.warning("Feature Store module not available - required packages not installed. Install with: uv sync --extra fs or pip install -e .[fs]")
else:
logger.warning("Feature Store module not available - module missing or packages not installed. Install with: uv sync --extra fs or pip install -e .[fs]")
elif module_name == 'evs':
if 'teradatagenai' in error_msg:
logger.warning("Enterprise Vector Store module not available - required packages not installed. Install with: uv sync --extra evs or pip install -e .[evs]")
else:
logger.warning("Enterprise Vector Store module not available - module missing or packages not installed. Install with: uv sync --extra evs or pip install -e .[evs]")
else:
logger.error(f"Failed to load module {module_name}: {e}")
return None
Expand Down
2 changes: 1 addition & 1 deletion tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ Currently available modules:
- `core_test_cases.json` foundational test cases, default and mandatory cases for system integration testing.
- `rag_test_cases.json` for RAG test cases.
- `fs_test_cases.json` for Teradata Enterprise Feature Store testing.
- `evs_test_cases.json` for Teradata Enterprise Vector Store testing.


To specific modules, specify the module name in second position. eg.:
```bash
Expand Down
13 changes: 0 additions & 13 deletions tests/cases/evs_test_cases.json

This file was deleted.

9 changes: 0 additions & 9 deletions tests/cases/test_cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -205,15 +205,6 @@
"parameters": {}
}
],
"evs_similarity_search": [
{
"name": "test_search",
"parameters": {
"question": "What is machine learning?",
"top_k": 3
}
}
],
"rag_executeWorkflow": [
{
"name": "test_rag_query",
Expand Down
1 change: 0 additions & 1 deletion tests/run_mcp_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,6 @@ async def main():
print(" python tests/run_mcp_tests.py 'uv run teradata-mcp-server'")
print(" python tests/run_mcp_tests.py 'uv run teradata-mcp-server' tests/cases/core_test_cases.json")
print(" python tests/run_mcp_tests.py 'uv run teradata-mcp-server' tests/cases/core_test_cases.json tests/cases/fs_test_cases.json")
print(" python tests/run_mcp_tests.py 'uv run teradata-mcp-server' tests/cases/evs_test_cases.json --verbose")
sys.exit(1)

server_command = sys.argv[1].split()
Expand Down
Loading