Skip to content

Conversation

@sshekhar1
Copy link
Contributor

@sshekhar1 sshekhar1 commented Oct 6, 2025

Tests ran successfully for newly added tools.

(venv) root@pe07-ubuntu-0018:~/tdmcp/new/teradata-mcp-server# python tests/run_mcp_tests.py "python -m teradata_mcp_server --profile dataScientist" "tests/cases/tdvs_test_cases.json"
✓ Loaded 10 tools from tests/cases/tdvs_test_cases.json
✓ Total test cases loaded for 10 tools
Starting MCP server: python -m teradata_mcp_server --profile dataScientist
  Starting server process...
  Server process started, establishing MCP session...
  Initializing MCP protocol...


╭────────────────────────────────────────────────────────────────────────────╮
│                                                                            │
│        _ __ ___  _____           __  __  _____________    ____    ____     │
│       _ __ ___ .'____/___ ______/ /_/  |/  / ____/ __ \  |___ \  / __ \    │
│      _ __ ___ / /_  / __ `/ ___/ __/ /|_/ / /   / /_/ /  ___/ / / / / /    │
│     _ __ ___ / __/ / /_/ (__  ) /_/ /  / / /___/ ____/  /  __/_/ /_/ /     │
│    _ __ ___ /_/    \____/____/\__/_/  /_/\____/_/      /_____(*)____/      │
│                                                                            │
│                                                                            │
│                                FastMCP  2.0                                │
│                                                                            │
│                                                                            │
│                 🖥️  Server name:     teradata-mcp-server                    │
│                 📦 Transport:       STDIO                                  │
│                                                                            │
│                 🏎️  FastMCP version: 2.12.4                                 │
│                 🤝 MCP SDK version: 1.16.0                                 │
│                                                                            │
│                 📚 Docs:            https://gofastmcp.com                  │
│                 🚀 Deploy:          https://fastmcp.cloud                  │
│                                                                            │
╰────────────────────────────────────────────────────────────────────────────╯


[10/07/25 09:17:49] INFO     Starting MCP server 'teradata-mcp-server' with transport 'stdio'                                                   server.py:1502
✓ Connected to MCP server
✓ Discovered 37 available tools
✓ Found test cases for 10 tools

✓ Tools with tests: tdvs_ask, tdvs_create, tdvs_destroy, tdvs_get_details, tdvs_get_health, tdvs_grant_user_permission, tdvs_list, tdvs_revoke_user_permission, tdvs_similarity_search, tdvs_update
⚠ Tools without tests: base_columnDescription, base_databaseList, base_readQuery, base_tableAffinity, base_tableDDL, base_tableList, base_tablePreview, base_tableUsage, fs_createDataset, fs_featureStoreContent, fs_getAvailableDatasets, fs_getAvailableEntities, fs_getDataDomains, fs_getFeatureDataModel, fs_getFeatures, fs_isFeatureStorePresent, qlty_columnSummary, qlty_distinctCategories, qlty_missingValues, qlty_negativeValues, qlty_rowsWithMissingValues, qlty_standardDeviation, qlty_univariateStatistics, rag_Execute_Workflow, sql_Analyze_Cluster_Stats, sql_Execute_Full_Pipeline, sql_Retrieve_Cluster_Queries

Running 10 test cases...
────────────────────────────────────────────────────────────
  Running tdvs_get_health:test_get_vs_health... PASS (2.79s)
  Running tdvs_create:test_vs_create... ⚠PASS (7.03s)
  Running tdvs_get_details:test_vs_get_details... PASS (5.78s)
  Running tdvs_list:test_vs_list... PASS (2.41s)
  Running tdvs_update:test_vs_update... ⚠PASS (7.84s)
  Running tdvs_similarity_search:test_vs_similarity_search... PASS (4.66s)
  Running tdvs_ask:test_vs_ask... PASS (7.33s)
  Running tdvs_grant_user_permission:test_vs_grant_user_permission... PASS (2.07s)
  Running tdvs_revoke_user_permission:test_vs_revoke_user_permission... PASS (2.15s)
  Running tdvs_destroy:test_vs_destroy... PASS (1.63s)

────────────────────────────────────────────────────────────
Tests completed

================================================================================
WARNING DETAILS
================================================================================
  ⚠ tdvs_create:test_vs_create - Empty result set

  ⚠ tdvs_update:test_vs_update - Empty result set


================================================================================
PERFORMANCE
================================================================================
Total Time: 43.70s
Average Time: 4.37s per test

================================================================================
TEST REPORT
================================================================================
Total Tests: 10
Passed: 10
Failed: 0
Warnings: 2
Success Rate: 100.0%
Detailed results saved to: var/test-reports/test_report_20251007_091833.json

--- MCP Server Log Output ---
(venv) root@pe07-ubuntu-0018:~/tdmcp/new/teradata-mcp-server#

@remi-td
Copy link
Collaborator

remi-td commented Oct 6, 2025

  • Please make this optional (in the .toml file) as it contains a dependency on teradatagenai which is heavy and only useful for specific use cases. In the app startup conditionally optionally load the teradatagenai if required in the profile (check the logic for EFS and EVS - check app.py lines 58 - 91)
  • Please also have a look at the current EVS implementation and consider consolidating the functionality. Check with @xuhaibintd for more info.

@xuhaibintd
Copy link
Contributor

Hi @remi-td , Should I continue the modification of EVS, or did you have new plan?

I'm converting EVS from using teradatagenai to a pure SQL approach. However, I've encountered a problem:
When using teradatagenai, similarity queries work perfectly and return unique answer. However, when using SQL functions, the similarities are all 1, preventing me from obtaining the correct answer. The product team is helping to identify the root cause.
I will continue to complete the conversion of this module as soon as possible and will keep you updated on my progress.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the teradataml.create_context() approach here won't work in case of a multi-user setup... When we tun the MCP server with a communication proxy (eg. AUTH_MODE=basic as explained here https://github.com/Teradata/teradata-mcp-server/blob/main/docs/server_guide/SECURITY.md), the conn_url/conn_username are the service user's (proxy) and not the end-user.
You need to reuse the TDConn() object to get the connection (with the appropriate proxy settings) to impersonate the end-user and avoid re-creating a connection (and context) every time.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that you need the sysdba ie. admin user name here, not the dbc... For a small test instance, we would use the dbc user, but in a production scenario, these would be two different database users.

Copy link
Contributor Author

@sshekhar1 sshekhar1 Oct 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Modified dbc_user and dbc_password to sysdba_user and sysdba_password

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so this means one PEM file for everyone, shared at the server level? With every MCP server user getting the same access level?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we followed the similar approach for now, as it was present for existing tool for evs.

Copy link
Collaborator

@remi-td remi-td left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we will need to figure out the connection mechanism so this also works in multi-user.
We also need a doc and an explanation on the above current limitation

@remi-td remi-td merged commit 373c7f6 into Teradata:main Oct 7, 2025
vilashjagani pushed a commit that referenced this pull request Oct 10, 2025
* Adding VectorStore tools

* Adding testcases

* Making teradata_vectorstore tools optional

* Updated testcases for Teradata VectorStore tools

* Updated vs tool names with tdvs_ prefix and updated tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants