Skip to content

Commit facb69d

Browse files
AnujJhunjhunwalaestshyduwenxin99
authored
feat(dataplex): Add support for lookup context tool. (#2744)
Added support for lookup context tool in Dataplex. Fixes #2743 --------- Co-authored-by: Mateusz Nowak <matnow@google.com> Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
1 parent 18a85ea commit facb69d

File tree

11 files changed

+503
-45
lines changed

11 files changed

+503
-45
lines changed

cmd/internal/config_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1739,7 +1739,7 @@ func TestPrebuiltTools(t *testing.T) {
17391739
wantToolset: server.ToolsetConfigs{
17401740
"discovery": tools.ToolsetConfig{
17411741
Name: "discovery",
1742-
ToolNames: []string{"search_entries", "lookup_entry", "search_aspect_types"},
1742+
ToolNames: []string{"search_entries", "lookup_entry", "search_aspect_types", "lookup_context"},
17431743
},
17441744
},
17451745
},

cmd/internal/imports.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ import (
8585
_ "github.com/googleapis/genai-toolbox/internal/tools/cockroachdb/cockroachdbsql"
8686
_ "github.com/googleapis/genai-toolbox/internal/tools/couchbase"
8787
_ "github.com/googleapis/genai-toolbox/internal/tools/dataform/dataformcompilelocal"
88+
_ "github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexlookupcontext"
8889
_ "github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexlookupentry"
8990
_ "github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexsearchaspecttypes"
9091
_ "github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexsearchentries"

docs/DATAPLEX_README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,12 @@ Once configured, the MCP server will automatically provide Dataplex capabilities
4646

4747
The Dataplex MCP server provides the following tools:
4848

49-
| Tool Name | Description |
50-
|:----------------------|:-------------------------------------------------|
51-
| `search_entries` | Search for entries in Dataplex Catalog. |
52-
| `lookup_entry` | Retrieve a specific entry from Dataplex Catalog. |
53-
| `search_aspect_types` | Find aspect types relevant to the query. |
49+
| Tool Name | Description |
50+
|:----------------------|:-----------------------------------------------------------------------------------------------------------------------------|
51+
| `search_entries` | Search for entries in Dataplex Catalog. |
52+
| `lookup_entry` | Retrieve specific subset of metadata (for example, schema, usage, business overview, and contacts) of a specific data asset. |
53+
| `search_aspect_types` | Find aspect types relevant to the query. |
54+
| `lookup_context` | Retrieve rich metadata regarding one or more data assets along with their relationships. |
5455

5556
## Custom MCP Server Configuration
5657

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: "dataplex-lookup-context"
3+
type: docs
4+
weight: 1
5+
description: >
6+
A "dataplex-lookup-context" tool provides rich metadata of one or more data assets along with their relationships.
7+
aliases:
8+
- /resources/tools/dataplex-lookup-context
9+
---
10+
11+
## About
12+
13+
A `dataplex-lookup-context` tool provides rich metadata of one or more data assets along with their relationships.
14+
It's compatible with the following sources:
15+
16+
- [dataplex](../../sources/dataplex.md)
17+
18+
`dataplex-lookup-context` takes a required `name` parameter which contains the
19+
project and location to which the request should be attributed in the following
20+
form: projects/{project}/locations/{location} and also a required `resources`
21+
parameter which is a list of resource names for which metadata is needed in the
22+
following form: projects/{project}/locations/{location}/entryGroups/{group}/entries/{entry}
23+
24+
## Requirements
25+
26+
### IAM Permissions
27+
28+
Dataplex uses [Identity and Access Management (IAM)][iam-overview] to control
29+
user and group access to Dataplex resources. Toolbox will use your
30+
[Application Default Credentials (ADC)][adc] to authorize and authenticate when
31+
interacting with [Dataplex][dataplex-docs].
32+
33+
In addition to [setting the ADC for your server][set-adc], you need to ensure
34+
the IAM identity has been given the correct IAM permissions for the tasks you
35+
intend to perform. See [Dataplex Universal Catalog IAM permissions][iam-permissions]
36+
and [Dataplex Universal Catalog IAM roles][iam-roles] for more information on
37+
applying IAM permissions and roles to an identity.
38+
39+
**Note on Lookup Context Tool Behavior:** This specific tool utilizes a post-filtering
40+
approach for authorization. This means that any authenticated user can call the tool's
41+
API endpoint. However, the response will only contain data for resources that the
42+
caller's identity (via ADC) has the necessary IAM permissions to access. If the caller
43+
has no permissions on the requested resources, the tool will return an empty response
44+
rather than an access denied error.
45+
46+
[iam-overview]: https://cloud.google.com/dataplex/docs/iam-and-access-control
47+
[adc]: https://cloud.google.com/docs/authentication#adc
48+
[set-adc]: https://cloud.google.com/docs/authentication/provide-credentials-adc
49+
[iam-permissions]: https://cloud.google.com/dataplex/docs/iam-permissions
50+
[iam-roles]: https://cloud.google.com/dataplex/docs/iam-roles
51+
[dataplex-docs]: https://cloud.google.com/dataplex/docs
52+
53+
## Example
54+
55+
```yaml
56+
kind: tool
57+
name: lookup_context
58+
type: dataplex-lookup-context
59+
source: my-dataplex-source
60+
description: Use this tool to retrieve rich metadata regarding one or more data assets along with their relationships.
61+
```
62+
63+
## Reference
64+
65+
| **field** | **type** | **required** | **description** |
66+
|-------------|:--------:|:------------:|----------------------------------------------------|
67+
| type | string | true | Must be "dataplex-lookup-context". |
68+
| source | string | true | Name of the source the tool should execute on. |
69+
| description | string | true | Description of the tool that is passed to the LLM. |

go.mod

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
cloud.google.com/go/bigquery v1.74.0
1010
cloud.google.com/go/bigtable v1.42.0
1111
cloud.google.com/go/cloudsqlconn v1.20.1
12-
cloud.google.com/go/dataplex v1.28.0
12+
cloud.google.com/go/dataplex v1.29.0
1313
cloud.google.com/go/dataproc/v2 v2.16.0
1414
cloud.google.com/go/firestore v1.21.0
1515
cloud.google.com/go/geminidataanalytics v0.7.0
@@ -64,8 +64,8 @@ require (
6464
go.opentelemetry.io/otel/sdk v1.41.0
6565
go.opentelemetry.io/otel/sdk/metric v1.41.0
6666
go.opentelemetry.io/otel/trace v1.41.0
67-
golang.org/x/oauth2 v0.35.0
68-
google.golang.org/api v0.269.0
67+
golang.org/x/oauth2 v0.36.0
68+
google.golang.org/api v0.272.0
6969
google.golang.org/genai v1.49.0
7070
google.golang.org/genproto v0.0.0-20260226221140-a57be14db171
7171
google.golang.org/grpc v1.79.3
@@ -180,8 +180,8 @@ require (
180180
github.com/google/flatbuffers v25.2.10+incompatible // indirect
181181
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect
182182
github.com/google/s2a-go v0.1.9 // indirect
183-
github.com/googleapis/enterprise-certificate-proxy v0.3.12 // indirect
184-
github.com/googleapis/gax-go/v2 v2.17.0 // indirect
183+
github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect
184+
github.com/googleapis/gax-go/v2 v2.18.0 // indirect
185185
github.com/gorilla/websocket v1.5.3 // indirect
186186
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
187187
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
@@ -261,19 +261,19 @@ require (
261261
go.uber.org/multierr v1.11.0 // indirect
262262
go.uber.org/zap v1.27.1 // indirect
263263
go.yaml.in/yaml/v3 v3.0.4 // indirect
264-
golang.org/x/crypto v0.48.0 // indirect
264+
golang.org/x/crypto v0.49.0 // indirect
265265
golang.org/x/mod v0.33.0 // indirect
266-
golang.org/x/net v0.51.0 // indirect
266+
golang.org/x/net v0.52.0 // indirect
267267
golang.org/x/sync v0.20.0 // indirect
268-
golang.org/x/sys v0.41.0 // indirect
268+
golang.org/x/sys v0.42.0 // indirect
269269
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect
270-
golang.org/x/term v0.40.0 // indirect
271-
golang.org/x/text v0.34.0 // indirect
272-
golang.org/x/time v0.14.0 // indirect
270+
golang.org/x/term v0.41.0 // indirect
271+
golang.org/x/text v0.35.0 // indirect
272+
golang.org/x/time v0.15.0 // indirect
273273
golang.org/x/tools v0.42.0 // indirect
274274
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
275-
google.golang.org/genproto/googleapis/api v0.0.0-20260217215200-42d3e9bedb6d // indirect
276-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260217215200-42d3e9bedb6d // indirect
275+
google.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect
276+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260311181403-84a4fc48630c // indirect
277277
gopkg.in/inf.v0 v0.9.1 // indirect
278278
gopkg.in/ini.v1 v1.67.0 // indirect
279279
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdB
2121
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
2222
cloud.google.com/go/datacatalog v1.26.1 h1:bCRKA8uSQN8wGW3Tw0gwko4E9a64GRmbW1nCblhgC2k=
2323
cloud.google.com/go/datacatalog v1.26.1/go.mod h1:2Qcq8vsHNxMDgjgadRFmFG47Y+uuIVsyEGUrlrKEdrg=
24-
cloud.google.com/go/dataplex v1.28.0 h1:rROI3iqMVI9nXT701ULoFRETQVAOAPC3mPSWFDxXFl0=
25-
cloud.google.com/go/dataplex v1.28.0/go.mod h1:VB+xlYJiJ5kreonXsa2cHPj0A3CfPh/mgiHG4JFhbUA=
24+
cloud.google.com/go/dataplex v1.29.0 h1:g1RsvpxELtGdVwmuOiktBM6BPfFy8TyNzmWvf+6yDgc=
25+
cloud.google.com/go/dataplex v1.29.0/go.mod h1:32rAjJhxo1tY5KivJ33872X5ZqR6ZjlE5ng5Uz7+hH0=
2626
cloud.google.com/go/dataproc/v2 v2.16.0 h1:0g2hnjlQ8SQTnNeu+Bqqa61QPssfSZF3t+9ldRmx+VQ=
2727
cloud.google.com/go/dataproc/v2 v2.16.0/go.mod h1:HlzFg8k1SK+bJN3Zsy2z5g6OZS1D4DYiDUgJtF0gJnE=
2828
cloud.google.com/go/firestore v1.21.0 h1:BhopUsx7kh6NFx77ccRsHhrtkbJUmDAxNY3uapWdjcM=
@@ -358,10 +358,10 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3
358358
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
359359
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
360360
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
361-
github.com/googleapis/enterprise-certificate-proxy v0.3.12 h1:Fg+zsqzYEs1ZnvmcztTYxhgCBsx3eEhEwQ1W/lHq/sQ=
362-
github.com/googleapis/enterprise-certificate-proxy v0.3.12/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=
363-
github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc=
364-
github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY=
361+
github.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=
362+
github.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=
363+
github.com/googleapis/gax-go/v2 v2.18.0 h1:jxP5Uuo3bxm3M6gGtV94P4lliVetoCB4Wk2x8QA86LI=
364+
github.com/googleapis/gax-go/v2 v2.18.0/go.mod h1:uSzZN4a356eRG985CzJ3WfbFSpqkLTjsnhWGJR6EwrE=
365365
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
366366
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
367367
github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
@@ -676,8 +676,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
676676
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
677677
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
678678
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
679-
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
680-
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
679+
golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
680+
golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
681681
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
682682
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
683683
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
@@ -713,11 +713,11 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
713713
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
714714
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
715715
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
716-
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
717-
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
716+
golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
717+
golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
718718
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
719-
golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
720-
golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
719+
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
720+
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
721721
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
722722
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
723723
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -753,8 +753,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
753753
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
754754
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
755755
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
756-
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
757-
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
756+
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
757+
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
758758
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
759759
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0=
760760
golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548=
@@ -766,8 +766,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
766766
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
767767
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
768768
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
769-
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
770-
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
769+
golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
770+
golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
771771
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
772772
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
773773
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -779,10 +779,10 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
779779
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
780780
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
781781
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
782-
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
783-
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
784-
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
785-
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
782+
golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
783+
golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
784+
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
785+
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
786786
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
787787
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
788788
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -805,8 +805,8 @@ golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhS
805805
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
806806
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
807807
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
808-
google.golang.org/api v0.269.0 h1:qDrTOxKUQ/P0MveH6a7vZ+DNHxJQjtGm/uvdbdGXCQg=
809-
google.golang.org/api v0.269.0/go.mod h1:N8Wpcu23Tlccl0zSHEkcAZQKDLdquxK+l9r2LkwAauE=
808+
google.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=
809+
google.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=
810810
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
811811
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
812812
google.golang.org/genai v1.49.0 h1:Se+QJaH2GYK1aaR1o5S38mlU2GD5FnVvP76nfkV7LH0=
@@ -816,10 +816,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
816816
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
817817
google.golang.org/genproto v0.0.0-20260226221140-a57be14db171 h1:RxhCsti413yL0IjU9dVvuTbCISo8gs3RW1jPMStck+4=
818818
google.golang.org/genproto v0.0.0-20260226221140-a57be14db171/go.mod h1:uhvzakVEqAuXU3TC2JCsxIRe5f77l+JySE3EqPoMyqM=
819-
google.golang.org/genproto/googleapis/api v0.0.0-20260217215200-42d3e9bedb6d h1:EocjzKLywydp5uZ5tJ79iP6Q0UjDnyiHkGRWxuPBP8s=
820-
google.golang.org/genproto/googleapis/api v0.0.0-20260217215200-42d3e9bedb6d/go.mod h1:48U2I+QQUYhsFrg2SY6r+nJzeOtjey7j//WBESw+qyQ=
821-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260217215200-42d3e9bedb6d h1:t/LOSXPJ9R0B6fnZNyALBRfZBH0Uy0gT+uR+SJ6syqQ=
822-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260217215200-42d3e9bedb6d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
819+
google.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=
820+
google.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=
821+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260311181403-84a4fc48630c h1:xgCzyF2LFIO/0X2UAoVRiXKU5Xg6VjToG4i2/ecSswk=
822+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260311181403-84a4fc48630c/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
823823
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
824824
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
825825
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=

internal/prebuiltconfigs/tools/dataplex.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,14 @@ tools:
3030
kind: dataplex-search-aspect-types
3131
source: dataplex-source
3232
description: Use this tool to find aspect types relevant to the query.
33+
lookup_context:
34+
kind: dataplex-lookup-context
35+
source: dataplex-source
36+
description: Use this tool to retrieve rich metadata regarding one or more data assets along with their relationships.
3337

3438
toolsets:
3539
discovery:
3640
- search_entries
3741
- lookup_entry
3842
- search_aspect_types
43+
- lookup_context

internal/sources/dataplex/dataplex.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,15 @@ func (s *Source) SearchEntries(ctx context.Context, query string, pageSize int,
244244
}
245245
return results, nil
246246
}
247+
248+
func (s *Source) LookupContext(ctx context.Context, name string, resources []string) (*dataplexpb.LookupContextResponse, error) {
249+
req := &dataplexpb.LookupContextRequest{
250+
Name: name,
251+
Resources: resources,
252+
}
253+
result, err := s.CatalogClient().LookupContext(ctx, req)
254+
if err != nil {
255+
return nil, err
256+
}
257+
return result, nil
258+
}

0 commit comments

Comments
 (0)