Skip to content

Commit fb3fb64

Browse files
committed
Merge remote-tracking branch 'origin/main' into efs-cleanup-testing
2 parents 67316d9 + 49436dd commit fb3fb64

File tree

24 files changed

+298
-1543
lines changed

24 files changed

+298
-1543
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ We are providing groupings of tools and associated helpful prompts to support al
3737

3838
**Step 3.** - There are many client options availale, the [Client Guide](docs/client_guide/CLIENT_GUIDE.md) explains how to configure and run a sample of different clients.
3939

40+
<br>
41+
42+
[A Video Library](./docs/VIDEO_LIBRARY.md) has been curated to assist.
43+
44+
<br>
45+
46+
4047

4148
### Quick start with Claude desktop
4249
If you want to quickly evaluate the tool, we recommend using Claude desktop, the uv package manager and [Teradata Clearscape Experience](https://www.teradata.com/getting-started/demos/clearscape-analytics).
@@ -65,6 +72,10 @@ If you want to quickly evaluate the tool, we recommend using Claude desktop, the
6572
}
6673
```
6774

75+
## Contributing
76+
Please refer to the [Contributing](./docs/CONTRIBUTING.md) guide and the [Developer Guide](./docs/developer_guide/DEVELOPER_GUIDE.md).
77+
78+
6879
---------------------------------------------------------------------
6980
## Certification
7081
<a href="https://glama.ai/mcp/servers/@Teradata/teradata-mcp-server">

docs/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ Make sure you have setup your environment based on the Developer Guide in this r
1212
- Code structure should be maintained. The structure of the repo and files has been carefully crafted, and any deviations from that should be only done when agreed upon by the entire team.
1313

1414
## Design Guidelines
15-
- Refer to Developer Guide.
15+
- Refer to [Developer Guide](./developer_guide/DEVELOPER_GUIDE.md).

docs/GETTING_STARTED.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MCP Server - Getting Started
22

3-
![Getting Started](media/MCP.png)
3+
![Getting Started](media/MCP-quickstart.png)
44

55
This document will cover the process and options for getting the teradata-mcp-server up and running
66

@@ -10,8 +10,10 @@ Assumes that you have a running Teradata environment, you should have the follow
1010
3. user password - password for the corresponding user name
1111
4. database - On Teradata systems this is typically the same as you user name
1212

13-
## Step 0 - Installing git
14-
Refer to the [git](https://git-scm.com/) website for download and installation instructions for your environment.
13+
## Step 0 - Installing environment
14+
- Refer to the [git](https://git-scm.com/) website for download and installation instructions, git will be used to pull code from the github repository.
15+
- Refer to the [Installing uv](https://docs.astral.sh/uv/getting-started/installation/#standalone-installer) guide to assist with installing uv, uv is used to manage packages that are used.
16+
- Refer to the [Python.org](https://www.python.org/downloads/) for downloading and installing python 3.11 or greater.
1517

1618
## Step 1 - Download the Software
1719
Clone the mcp-server repository with:
@@ -51,14 +53,9 @@ Deployment Choice
5153

5254
The recommended choice will be to deploy Streamable-http in a docker container. [Jump to next section](#step-5---using-docker) for the docker option.
5355

54-
## Step 4 - Decide on the tools/prompts you want to be available (optional) to a profile
55-
56-
Open the [configure_tools.yaml](../configure_tools.yml) file. The first level of the structure is the profile name, then the module name, then allmodule/tools/prompts
57-
58-
For each module if you set allmodule to True then all tools and prompts will be visible unless you explicitly set the tool/prompt name to False. If the allmodule is set to False, then nothing will be visible unless you explicitly set the tool/prompt name to True.
59-
60-
If no profile is defined then the default profile will be "all" this will enable all tools and prompts.
56+
## Step 4 - Customizing the server (optional)
6157

58+
Refer to the [Customizing](CUSTOMIZING.md) instuctions
6259

6360
--------------------------------------------------------------------------------------
6461
## Step 5 - Using Docker

docs/VIDEO_LIBRARY.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Video Library
2+
3+
The video library is a curation of videos that the community believes would be valuable for new members.
4+
5+
## Demo's
6+
[DBA use cases](https://www.youtube.com/watch?v=CYUs1tRoO1M&t=14s) - this demo is a short overview of the server along with some simple DBA use cases.
7+
8+
9+
## Installation
10+
[Installing on a mac](https://youtu.be/bx6q3iL6K4A) - this is a longer video walking you through the steps to install the server on your mac.
11+
12+

docs/client_guide/CLIENT_GUIDE.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Working with MCP Clients
22

3-
![Getting Started](../media/MCP.png)
3+
![Getting Started](../media/MCP-quickstart.png)
44

55
This documet will cover the process and options for getting a client tool to connect to the teradata-mcp-server. Note that you have many client options, we will cover some but not all.
66

@@ -10,19 +10,26 @@ The transport mode that the server is running needs to be the same as the client
1010

1111
If you configured the server as a Streamable-http transport mode then the client also needs to be configured as a streamable-http mode.
1212

13+
There are many client options that you can choose from, they each have different strengths, we have curated a small number so that you have examples.
1314

14-
## Clients
15+
## GUI Clients
1516

1617
- [Claude Desktop](./Claude_desktop.md)
1718
- [Microsoft Copilot](./Microsoft_copilot.md)
1819
- [Google AgentSpace](./Google_agentspace.md)
20+
- [Open WebUI](./Open_WebUI.md)
21+
- [teradata-trusted-data-agent](https://github.com/rgeissen/teradata-trusted-data-agent)
22+
23+
## Audio Client
24+
- [MCP Voice Client](../../test/MCP_VoiceClient/README.md)
25+
26+
## Code Clients
1927
- [Visual Studio Code](./Visual_Studio_Code.md)
2028
- [MCP Inspector](./MCP_Inspector.md) - For testing MCP server
2129
- [Code Agents](./Code_Agents.md) - Google ADK Agent & Pydanicai Agent
2230
- [REST API](./Rest_API.md)
23-
- [Open WebUI](./Open_WebUI.md)
2431
- [Google Gemini CLI](./Google_Gemini_CLI.md)
25-
- [MCP Web Client](../../test/MCP_WebClient/README.md)
32+
2633

2734

2835

docs/developer_guide/DEVELOPER_GUIDE.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,14 @@ Two guides have been created to show how to add tools and prompts:
123123
<br>
124124

125125
## Tools testing
126-
Every module will have at least one prompt that would be responsible for testing all of the tools in the module. The following template should be used in the module_objects.ylm file, the name of the testig prompt should be test_\<module name\>Tools:
126+
Every module will have at least one prompt that would be responsible for testing all of the tools in the module.
127+
128+
Use the tester profile to see the test prompts.
129+
130+
`uv run teradata-mcp-server --profile tester`
131+
132+
The following test prompt template should be modified and placed in the module_objects.ylm file (e.g. base_objects.yml), the name of the testig prompt should be test_\<module name\>Tools. (e.g. test_baseTools):
133+
127134

128135
```
129136
test_baseTools:
@@ -136,39 +143,54 @@ test_baseTools:
136143
137144
## Phase 0 - Get a list of databases
138145
- Get a list of databases from the user. Use the base_databaseList function to get the list. The tool should return a list of databases in the Teradata system.
146+
139147
## Phase 1 - Get the list of tables in each database
140148
- For the DBC database, get the list of tables. Use the base_tableList function to get the list. The tool should return a list of tables in the DBC database.
149+
141150
## Phase 2 - Create a test table in your default database
142151
- Create a customer table in your default database called test_customer, the table should have an Cust_id column. Use the base_writeQuery function to create the table. A test_customer table should be created.
143152
- Add 10 rows to the test_customer table. Use the base_writeQuery function to add the rows.
153+
144154
## Phase 3 - Test the query tool
145155
- test the query tool by running a query on the test_customer table. Use the base_readQuery function to run the query. The query should return the 10 rows you added in the previous phase.
146156
- test the query tool by running a query on the test_customer table with a filter. Use the base_readQuery function to run the query. The query should return only the rows that match the filter. (example of a filter is Cust_id > 5)
157+
147158
## Phase 4 - Test the table DDL tool
148159
- Get the DDL of the test_customer table. Use the base_tableDDL function to get the DDL. The tool should return the DDL of the test_customer table.
160+
149161
## Phase 5 - Test the column description tool
150162
- Get the column description of the test_customer table. Use the base_columnDescription function to get the columns description. The tool should return the column description of the test_customer table.
163+
151164
## Phase 6 - Test the table preview tool
152165
- Get the preview of the test_customer table. Use the base_tablePreview function to get the preview. The tool should return the first 5 rows of the test_customer table and the column information.
166+
153167
## Phase 7 - Test the table affinity tool
154168
- Get the table affinity of the test_customer table. Use the base_tableAffinity function to get the affinity. The tool should return the table affinity of the test_customer table.
169+
155170
## Phase 8 - Test the table usage tool
156171
- Get the table usage of the test_customer table. Use the base_tableUsage function to get the usage. The tool should return the table usage of the test_customer table.
172+
157173
## Phase 9 - Clean up
158174
- Drop the test_customer table. Use the base_writeQuery function to drop the table. The tool should return a success message.
175+
159176
## Communication guidelines:
160177
- Be concise but informative in your explanations
161178
- Clearly indicate which phase the process is currently in
162-
- summarize the success of the phase before moving to the next phase
179+
- summarize the success or any failure of the phase before moving to the next phase
163180
## Final output guidelines:
164181
- return in markdown results for all phases
165182
- Example:
166183
***Phase 0:*** list databases: Successful
167184
***Phase 1:*** list tables in DBC database: Successful
168-
***Phase 2:*** Create test_customer table: Successful
185+
***Phase 2:*** Create test_customer table: Failed
169186
170187
```
171188

189+
Before code is submitted, all test scripts should run with a successful outcome, this ensures that new code does not break old code. All new code needs to have test prompts added to the module test prompt.
190+
191+
You can run the test prompts via your client of choice.
192+
193+
172194
<br><br><br>
173195

174196
# Development Cycle

profiles.yml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
all:
2+
tool:
3+
- .*
4+
prompt:
5+
- ^(?!test_).*
6+
resource:
7+
- .*
8+
9+
tester:
210
tool:
311
- .*
412
prompt:
@@ -8,20 +16,20 @@ all:
816

917
dba:
1018
tool:
11-
- dba_*
12-
- base_*
13-
- sec_*
19+
- ^dba_*
20+
- ^base_*
21+
- ^sec_*
1422
prompt:
15-
- dba_*
23+
- ^dba_*
1624

1725
dataScientist:
1826
tool:
19-
- base_*
20-
- rag_*
21-
- fs_*
22-
- qlty_*
23-
- sec_userDbPermissions
24-
- dba_userSqlList
27+
- ^base_*
28+
- ^rag_*
29+
- ^fs_*
30+
- ^qlty_*
31+
- ^sec_userDbPermissions
32+
- ^dba_userSqlList
2533

2634
eda:
2735
tool:

src/teradata_mcp_server/tools/base/base_objects.yml

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,47 @@ test_baseTools:
2222
Perform the phases in order, and do not skip any phase.
2323
2424
## Phase 0 - Get a list of databases
25-
- Get a list of databases from the user. Use the base_databaseList function to get the list. The tool should return a list of databases in the Teradata system.
25+
- Get a list of databases from the user. Use the base_databaseList function to get the list. The tool should return a list of databases in the Teradata system, if no data is returned then fail this test.
2626
## Phase 1 - Get the list of tables in each database
27-
- For the DBC database, get the list of tables. Use the base_tableList function to get the list. The tool should return a list of tables in the DBC database.
27+
- For the DBC database, get the list of tables. Use the base_tableList function to get the list. The tool should return a list of tables in the DBC database, if no data is returned then fail this test.
2828
## Phase 2 - Create a test table in your default database
2929
- Create a customer table in your default database called test_customer, the table should have an Cust_id column. Use the base_writeQuery function to create the table. A test_customer table should be created.
3030
- Add 10 rows to the test_customer table. Use the base_writeQuery function to add the rows.
3131
## Phase 3 - Test the query tool
32-
- test the query tool by running a query on the test_customer table. Use the base_readQuery function to run the query. The query should return the 10 rows you added in the previous phase.
33-
- test the query tool by running a query on the test_customer table with a filter. Use the base_readQuery function to run the query. The query should return only the rows that match the filter. (example of a filter is Cust_id > 5)
32+
- test the query tool by running a query on the test_customer table. Use the base_readQuery function to run the query. The query should return the 10 rows you added in the previous phase, if no data is returned then fail this test.
33+
- test the query tool by running a query on the test_customer table with a filter. Use the base_readQuery function to run the query. The query should return only the rows that match the filter, if no data is returned then fail this test. (example of a filter is Cust_id > 5)
3434
## Phase 4 - Test the table DDL tool
35-
- Get the DDL of the test_customer table. Use the base_tableDDL function to get the DDL. The tool should return the DDL of the test_customer table.
35+
- Get the DDL of the test_customer table. Use the base_tableDDL function to get the DDL. The tool should return the DDL of the test_customer table, if no data is returned then fail this test.
3636
## Phase 5 - Test the column description tool
37-
- Get the column description of the test_customer table. Use the base_columnDescription function to get the columns description. The tool should return the column description of the test_customer table.
37+
- Get the column description of the test_customer table. Use the base_columnDescription function to get the columns description. The tool should return the column description of the test_customer table, if no data is returned then fail this test.
3838
## Phase 6 - Test the table preview tool
39-
- Get the preview of the test_customer table. Use the base_tablePreview function to get the preview. The tool should return the first 5 rows of the test_customer table and the column information.
39+
- Get the preview of the test_customer table. Use the base_tablePreview function to get the preview. The tool should return the first 5 rows of the test_customer table and the column information, if no data is returned then fail this test.
4040
## Phase 7 - Test the table affinity tool
41-
- Get the table affinity of the test_customer table. Use the base_tableAffinity function to get the affinity. The tool should return the table affinity of the test_customer table.
41+
- Get the table affinity of the test_customer table. Use the base_tableAffinity function to get the affinity. The tool should return the table affinity of the test_customer table, if no data is returned then fail this test.
4242
## Phase 8 - Test the table usage tool
43-
- Get the table usage of the test_customer table. Use the base_tableUsage function to get the usage. The tool should return the table usage of the test_customer table.
43+
- Get the table usage of the test_customer table. Use the base_tableUsage function to get the usage. The tool should return the table usage of the test_customer table, if no data is returned then fail this test.
4444
## Phase 9 - Clean up
4545
- Drop the test_customer table. Use the base_writeQuery function to drop the table. The tool should return a success message.
4646
## Communication guidelines:
4747
- Be concise but informative in your explanations
4848
- Clearly indicate which phase the process is currently in
49-
- summarize the success of the phase before moving to the next phase
50-
## Final output guidelines:
51-
- return in markdown results for all phases
52-
- Example:
53-
***Phase 0:*** list databases: Successful
54-
***Phase 1:*** list tables in DBC database: Successful
55-
***Phase 2:*** Create test_customer table: Successful
49+
- summarize the success or any failure of the phase before moving to the next phase
50+
## Final output guidelines:
51+
- return in markdown results for all phases as a table including the phase number, description, success or failure status, and a description of the outcome.
52+
- if a tool does not return any results, then fail that test and indicate it in the outcome.
53+
## Example output:
54+
- | Phase | Description | Status | Outcome |
55+
- |-------|-------------|--------|---------|
56+
- | 0 | Get a list of databases | Success | List of databases returned |
57+
- | 1 | Get the list of tables in DBC database | Success | List of tables returned |
58+
- | 2 | Create a test table in default database | Success | test_customer table created |
59+
- | 3 | Test the query tool on test_customer table | Success | 10 rows returned |
60+
- | 4 | Get the DDL of the test_customer table | Success | DDL returned |
61+
- | 5 | Get the column description of the test_customer table | Success | Column description returned |
62+
- | 6 | Get the preview of the test_customer table | Success | First 5 rows and column info returned |
63+
- | 7 | Get the table affinity of the test_customer table | Success | Table affinity returned |
64+
- | 8 | Get the table usage of the test_customer table | Success | Table usage returned |
65+
- | 9 | Drop the test_customer table | Success | Table dropped successfully |
5666
5767
5868
base_query:

0 commit comments

Comments
 (0)