datarobot-genai 0.2.22__py3-none-any.whl → 0.2.26__py3-none-any.whl
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.
- datarobot_genai/drmcp/core/dr_mcp_server.py +0 -3
- datarobot_genai/drmcp/core/mcp_instance.py +37 -103
- datarobot_genai/drmcp/core/tool_filter.py +10 -1
- datarobot_genai/drmcp/tools/clients/confluence.py +93 -1
- datarobot_genai/drmcp/tools/clients/gdrive.py +255 -0
- datarobot_genai/drmcp/tools/confluence/tools.py +67 -0
- datarobot_genai/drmcp/tools/gdrive/tools.py +66 -0
- datarobot_genai/drmcp/tools/predictive/project.py +45 -27
- datarobot_genai/drmcp/tools/predictive/training.py +160 -151
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/METADATA +1 -1
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/RECORD +15 -16
- datarobot_genai/drmcp/core/mcp_server_tools.py +0 -129
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/WHEEL +0 -0
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/entry_points.txt +0 -0
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/licenses/AUTHORS +0 -0
- {datarobot_genai-0.2.22.dist-info → datarobot_genai-0.2.26.dist-info}/licenses/LICENSE +0 -0
|
@@ -31,18 +31,17 @@ datarobot_genai/drmcp/core/config.py,sha256=69QDsVVSvjzv1uIHOjtQGzdg7_Ic4sA3vLA6
|
|
|
31
31
|
datarobot_genai/drmcp/core/config_utils.py,sha256=U-aieWw7MyP03cGDFIp97JH99ZUfr3vD9uuTzBzxn7w,6428
|
|
32
32
|
datarobot_genai/drmcp/core/constants.py,sha256=lUwoW_PTrbaBGqRJifKqCn3EoFacoEgdO-CpoFVrUoU,739
|
|
33
33
|
datarobot_genai/drmcp/core/credentials.py,sha256=PYEUDNMVw1BoMzZKLkPVTypNkVevEPtmk3scKnE-zYg,6706
|
|
34
|
-
datarobot_genai/drmcp/core/dr_mcp_server.py,sha256=
|
|
34
|
+
datarobot_genai/drmcp/core/dr_mcp_server.py,sha256=czcjbwhZAeW9EtG_Bys0GARPOuQulstkiU7FG48Q9bg,14118
|
|
35
35
|
datarobot_genai/drmcp/core/dr_mcp_server_logo.py,sha256=hib-nfR1SNTW6CnpFsFCkL9H_OMwa4YYyinV7VNOuLk,4708
|
|
36
36
|
datarobot_genai/drmcp/core/exceptions.py,sha256=eqsGI-lxybgvWL5w4BFhbm3XzH1eU5tetwjnhJxelpc,905
|
|
37
37
|
datarobot_genai/drmcp/core/logging.py,sha256=Y_hig4eBWiXGaVV7B_3wBcaYVRNH4ydptbEQhrP9-mY,3414
|
|
38
|
-
datarobot_genai/drmcp/core/mcp_instance.py,sha256=
|
|
39
|
-
datarobot_genai/drmcp/core/mcp_server_tools.py,sha256=odNZKozfx0VV38SLZHw9lY0C0JM_JnRI06W3BBXnyE4,4278
|
|
38
|
+
datarobot_genai/drmcp/core/mcp_instance.py,sha256=nt4gOlAQklMcqmohRIKovYcyhgLdb08NHMo28DBYmOk,18362
|
|
40
39
|
datarobot_genai/drmcp/core/routes.py,sha256=dqE2M0UzAyyN9vQjlyTjYW4rpju3LT039po5weuO__I,17936
|
|
41
40
|
datarobot_genai/drmcp/core/routes_utils.py,sha256=vSseXWlplMSnRgoJgtP_rHxWSAVYcx_tpTv4lyTpQoc,944
|
|
42
41
|
datarobot_genai/drmcp/core/server_life_cycle.py,sha256=WKGJWGxalvqxupzJ2y67Kklc_9PgpZT0uyjlv_sr5wc,3419
|
|
43
42
|
datarobot_genai/drmcp/core/telemetry.py,sha256=NEkSTC1w6uQgtukLHI-sWvR4EMgInysgATcvfQ5CplM,15378
|
|
44
43
|
datarobot_genai/drmcp/core/tool_config.py,sha256=5JCWO70ZH-K-34yS7vYJG2nl4i9UO_q_W9NCoWSXXno,3271
|
|
45
|
-
datarobot_genai/drmcp/core/tool_filter.py,sha256=
|
|
44
|
+
datarobot_genai/drmcp/core/tool_filter.py,sha256=yKQlEtzyIeXGxZJkHbK36QI19vmgQkvqmfx5cTo2pp4,3156
|
|
46
45
|
datarobot_genai/drmcp/core/utils.py,sha256=EvfpqKZ3tECMoxpIQ_tA_3rOgy6KJEYKC0lWZo_Daag,4517
|
|
47
46
|
datarobot_genai/drmcp/core/dynamic_prompts/__init__.py,sha256=y4yapzp3KnFMzSR6HlNDS4uSuyNT7I1iPBvaCLsS0sU,577
|
|
48
47
|
datarobot_genai/drmcp/core/dynamic_prompts/controllers.py,sha256=AGJlKqgHRO0Kd7Gl-Ulw9KYBgzjTTFXWBvOUF-SuKUI,5454
|
|
@@ -78,14 +77,14 @@ datarobot_genai/drmcp/test_utils/utils.py,sha256=esGKFv8aO31-Qg3owayeWp32BYe1CdY
|
|
|
78
77
|
datarobot_genai/drmcp/tools/__init__.py,sha256=0kq9vMkF7EBsS6lkEdiLibmUrghTQqosHbZ5k-V9a5g,578
|
|
79
78
|
datarobot_genai/drmcp/tools/clients/__init__.py,sha256=0kq9vMkF7EBsS6lkEdiLibmUrghTQqosHbZ5k-V9a5g,578
|
|
80
79
|
datarobot_genai/drmcp/tools/clients/atlassian.py,sha256=__M_uz7FrcbKCYRzeMn24DCEYD6OmFx_LuywHCxgXsA,6472
|
|
81
|
-
datarobot_genai/drmcp/tools/clients/confluence.py,sha256=
|
|
82
|
-
datarobot_genai/drmcp/tools/clients/gdrive.py,sha256=
|
|
80
|
+
datarobot_genai/drmcp/tools/clients/confluence.py,sha256=h_G0By_kDnJeWDT_d-IREsaZ5-0xB5GoLXOqblYP5MA,20706
|
|
81
|
+
datarobot_genai/drmcp/tools/clients/gdrive.py,sha256=e28XwX0C8E3nql85-_NbUEMB-4s0lsQ2f5spj9BgsgM,21455
|
|
83
82
|
datarobot_genai/drmcp/tools/clients/jira.py,sha256=Rm91JAyrNIqxu66-9rU1YqoRXVnWbEy-Ahvy6f6HlVg,9823
|
|
84
83
|
datarobot_genai/drmcp/tools/clients/s3.py,sha256=GmwzvurFdNfvxOooA8g5S4osRysHYU0S9ypg_177Glg,953
|
|
85
84
|
datarobot_genai/drmcp/tools/confluence/__init__.py,sha256=0kq9vMkF7EBsS6lkEdiLibmUrghTQqosHbZ5k-V9a5g,578
|
|
86
|
-
datarobot_genai/drmcp/tools/confluence/tools.py,sha256=
|
|
85
|
+
datarobot_genai/drmcp/tools/confluence/tools.py,sha256=_-ws65WLK8KZP_mKkf4yJ7ZunR8qdyoiMwHQX47MSMw,12362
|
|
87
86
|
datarobot_genai/drmcp/tools/gdrive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
datarobot_genai/drmcp/tools/gdrive/tools.py,sha256=
|
|
87
|
+
datarobot_genai/drmcp/tools/gdrive/tools.py,sha256=EvoEr3AEI-xRldwCTZHiQfBRHQfLtgHuojTx8mXhlU4,7074
|
|
89
88
|
datarobot_genai/drmcp/tools/jira/__init__.py,sha256=0kq9vMkF7EBsS6lkEdiLibmUrghTQqosHbZ5k-V9a5g,578
|
|
90
89
|
datarobot_genai/drmcp/tools/jira/tools.py,sha256=dfkqTU2HH-7n44hX80ODFacKq0p0LOchFcZtIIKFNMM,9687
|
|
91
90
|
datarobot_genai/drmcp/tools/predictive/__init__.py,sha256=WuOHlNNEpEmcF7gVnhckruJRKU2qtmJLE3E7zoCGLDo,1030
|
|
@@ -95,8 +94,8 @@ datarobot_genai/drmcp/tools/predictive/deployment_info.py,sha256=BGEF_dmbxOBJR0n
|
|
|
95
94
|
datarobot_genai/drmcp/tools/predictive/model.py,sha256=Yih5-KedJ-1yupPLXCJsCXOdyWWi9pRvgapXDlgXWJA,4891
|
|
96
95
|
datarobot_genai/drmcp/tools/predictive/predict.py,sha256=Qoob2_t2crfWtyPzkXMRz2ITZumnczU6Dq4C7q9RBMI,9370
|
|
97
96
|
datarobot_genai/drmcp/tools/predictive/predict_realtime.py,sha256=urq6rPyZFsAP-bPyclSNzrkvb6FTamdlFau8q0IWWJ0,13472
|
|
98
|
-
datarobot_genai/drmcp/tools/predictive/project.py,sha256=
|
|
99
|
-
datarobot_genai/drmcp/tools/predictive/training.py,sha256=
|
|
97
|
+
datarobot_genai/drmcp/tools/predictive/project.py,sha256=xC52UdYvuFeNZC7Y5MfXcvzTL70WwAacQXESr6rqN6s,3255
|
|
98
|
+
datarobot_genai/drmcp/tools/predictive/training.py,sha256=S9V7AlO6mAgIAJNww0g5agFOw4YqRiCsIGaRDJcOe4A,23991
|
|
100
99
|
datarobot_genai/langgraph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
100
|
datarobot_genai/langgraph/agent.py,sha256=DRnywmS9KDywyChtuIZZwNKbJs8BpC259EG_kxYbiQ8,15828
|
|
102
101
|
datarobot_genai/langgraph/mcp.py,sha256=iA2_j46mZAaNaL7ntXT-LW6C-NMJkzr3VfKDDfe7mh8,2851
|
|
@@ -111,9 +110,9 @@ datarobot_genai/nat/datarobot_llm_clients.py,sha256=Yu208Ed_p_4P3HdpuM7fYnKcXtim
|
|
|
111
110
|
datarobot_genai/nat/datarobot_llm_providers.py,sha256=aDoQcTeGI-odqydPXEX9OGGNFbzAtpqzTvHHEkmJuEQ,4963
|
|
112
111
|
datarobot_genai/nat/datarobot_mcp_client.py,sha256=35FzilxNp4VqwBYI0NsOc91-xZm1C-AzWqrOdDy962A,9612
|
|
113
112
|
datarobot_genai/nat/helpers.py,sha256=Q7E3ADZdtFfS8E6OQPyw2wgA6laQ58N3bhLj5CBWwJs,3265
|
|
114
|
-
datarobot_genai-0.2.
|
|
115
|
-
datarobot_genai-0.2.
|
|
116
|
-
datarobot_genai-0.2.
|
|
117
|
-
datarobot_genai-0.2.
|
|
118
|
-
datarobot_genai-0.2.
|
|
119
|
-
datarobot_genai-0.2.
|
|
113
|
+
datarobot_genai-0.2.26.dist-info/METADATA,sha256=7DMbKQ_9IV0Hmg8xCubJfPJ37C-TZ1-hr0RMgnsUUOQ,6301
|
|
114
|
+
datarobot_genai-0.2.26.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
115
|
+
datarobot_genai-0.2.26.dist-info/entry_points.txt,sha256=jEW3WxDZ8XIK9-ISmTyt5DbmBb047rFlzQuhY09rGrM,284
|
|
116
|
+
datarobot_genai-0.2.26.dist-info/licenses/AUTHORS,sha256=isJGUXdjq1U7XZ_B_9AH8Qf0u4eX0XyQifJZ_Sxm4sA,80
|
|
117
|
+
datarobot_genai-0.2.26.dist-info/licenses/LICENSE,sha256=U2_VkLIktQoa60Nf6Tbt7E4RMlfhFSjWjcJJfVC-YCE,11341
|
|
118
|
+
datarobot_genai-0.2.26.dist-info/RECORD,,
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# Copyright 2025 DataRobot, Inc.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
import logging
|
|
16
|
-
|
|
17
|
-
from .mcp_instance import dr_core_mcp_tool
|
|
18
|
-
from .mcp_instance import mcp
|
|
19
|
-
|
|
20
|
-
logger = logging.getLogger(__name__)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@dr_core_mcp_tool(tags={"mcp_server_tools", "metadata"})
|
|
24
|
-
async def get_all_available_tags() -> str:
|
|
25
|
-
"""
|
|
26
|
-
List all unique tags from all registered tools.
|
|
27
|
-
|
|
28
|
-
Returns
|
|
29
|
-
-------
|
|
30
|
-
A string containing all available tags, one per line.
|
|
31
|
-
"""
|
|
32
|
-
tags = await mcp.get_all_tags()
|
|
33
|
-
if not tags:
|
|
34
|
-
return "No tags found in any tools."
|
|
35
|
-
|
|
36
|
-
return "\n".join(sorted(tags))
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
@dr_core_mcp_tool(tags={"mcp_server_tools", "metadata", "discovery"})
|
|
40
|
-
async def list_tools_by_tags(tags: list[str] | None = None, match_all: bool = False) -> str:
|
|
41
|
-
"""
|
|
42
|
-
List tools filtered by tags.
|
|
43
|
-
|
|
44
|
-
Args:
|
|
45
|
-
tags: Optional list of tags to filter by. If None, returns all tools.
|
|
46
|
-
match_all: If True, tool must have all specified tags (AND logic).
|
|
47
|
-
If False, tool must have at least one tag (OR logic).
|
|
48
|
-
Only used when tags is provided.
|
|
49
|
-
|
|
50
|
-
Returns
|
|
51
|
-
-------
|
|
52
|
-
A formatted string listing tools that match the tag criteria.
|
|
53
|
-
"""
|
|
54
|
-
tools = await mcp.list_tools(tags=tags, match_all=match_all)
|
|
55
|
-
|
|
56
|
-
if not tools:
|
|
57
|
-
if tags:
|
|
58
|
-
logic = "all" if match_all else "any"
|
|
59
|
-
return f"No tools found with {logic} of the tags: {', '.join(tags)}"
|
|
60
|
-
else:
|
|
61
|
-
return "No tools found."
|
|
62
|
-
|
|
63
|
-
result = []
|
|
64
|
-
if tags:
|
|
65
|
-
logic = "all" if match_all else "any"
|
|
66
|
-
result.append(f"Tools with {logic} of the tags: {', '.join(tags)}")
|
|
67
|
-
else:
|
|
68
|
-
result.append("All available tools:")
|
|
69
|
-
|
|
70
|
-
result.append("")
|
|
71
|
-
|
|
72
|
-
for i, tool in enumerate(tools, 1):
|
|
73
|
-
tool_tags = []
|
|
74
|
-
if tool.annotations and hasattr(tool.annotations, "extra") and tool.annotations.extra:
|
|
75
|
-
tool_tags = tool.annotations.extra.get("tags", [])
|
|
76
|
-
|
|
77
|
-
result.append(f"{i}. {tool.name}")
|
|
78
|
-
result.append(f" Description: {tool.description}")
|
|
79
|
-
if tool_tags:
|
|
80
|
-
result.append(f" Tags: {', '.join(tool_tags)}")
|
|
81
|
-
result.append("")
|
|
82
|
-
|
|
83
|
-
return "\n".join(result)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
@dr_core_mcp_tool(tags={"mcp_server_tools", "metadata", "discovery"})
|
|
87
|
-
async def get_tool_info_by_name(tool_name: str) -> str:
|
|
88
|
-
"""
|
|
89
|
-
Get detailed information about a specific tool by name.
|
|
90
|
-
|
|
91
|
-
Args:
|
|
92
|
-
tool_name: The name of the tool to get information about.
|
|
93
|
-
|
|
94
|
-
Returns
|
|
95
|
-
-------
|
|
96
|
-
A formatted string with detailed information about the tool.
|
|
97
|
-
"""
|
|
98
|
-
all_tools = await mcp.list_tools()
|
|
99
|
-
|
|
100
|
-
for tool in all_tools:
|
|
101
|
-
if tool.name == tool_name:
|
|
102
|
-
result = [f"Tool: {tool.name}"]
|
|
103
|
-
result.append(f"Description: {tool.description}")
|
|
104
|
-
|
|
105
|
-
# Get tags
|
|
106
|
-
tool_tags = []
|
|
107
|
-
if tool.annotations and hasattr(tool.annotations, "extra") and tool.annotations.extra:
|
|
108
|
-
tool_tags = tool.annotations.extra.get("tags", [])
|
|
109
|
-
|
|
110
|
-
if tool_tags:
|
|
111
|
-
result.append(f"Tags: {', '.join(tool_tags)}")
|
|
112
|
-
else:
|
|
113
|
-
result.append("Tags: None")
|
|
114
|
-
|
|
115
|
-
# Get input schema info
|
|
116
|
-
if (
|
|
117
|
-
tool.inputSchema
|
|
118
|
-
and hasattr(tool.inputSchema, "properties")
|
|
119
|
-
and tool.inputSchema.properties
|
|
120
|
-
):
|
|
121
|
-
result.append("Parameters:")
|
|
122
|
-
for param_name, param_info in tool.inputSchema.properties.items():
|
|
123
|
-
param_type = param_info.get("type", "unknown")
|
|
124
|
-
param_desc = param_info.get("description", "No description")
|
|
125
|
-
result.append(f" - {param_name} ({param_type}): {param_desc}")
|
|
126
|
-
|
|
127
|
-
return "\n".join(result)
|
|
128
|
-
|
|
129
|
-
return f"Tool '{tool_name}' not found."
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|