-
Notifications
You must be signed in to change notification settings - Fork 791
feat(tools/neo4j-schema): add neo4j-schema tool #978
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/gcbrun |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with a small nit. Thank you!
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
@Yuan325 Thank you very much for looking at it. I accepted proposed changes and it should be ready to go. Please merge when have time |
/gcbrun |
@Yuan325 there was failing unit test, I fixed it already. Sorry was a last minute change. Please run /gcbrun again |
/gcbrun |
Hi @nester-neo4j, we require integration test coverage of at least 50%, the integration tests is failing because of that --> currently at 47.4%. |
@Yuan325 very interesting. The cache test is failing with race condition and I can not reproduce it on my local environment. Looking into that |
I will add more tests there |
@Yuan325 I fixed race condition and added more integration tests to increase coverage. Can you run /gcbrun again ? |
/gcbrun |
@nester-neo4j seems like we just need a final linting |
/gcbrun |
@Yuan325 yep, just removed unused functions, we should be good to go |
Thank you @nester-neo4j We'll include this to our today's release! :) |
@Yuan325 This is awesome. Thank you for the patience |
This pull request introduces a new tool, `neo4j-schema`, for extracting and processing comprehensive schema information from Neo4j databases. It includes updates to the documentation, implementation of caching mechanisms, helper utilities for schema transformation, and corresponding unit tests. The most important changes are grouped by theme below: ### Tool Integration: - **`cmd/root.go`**: Added import for the new `neo4j-schema` tool to integrate it into the application. ### Documentation: - **`docs/en/resources/tools/neo4j/neo4j-schema.md`**: Added detailed documentation for the `neo4j-schema` tool, describing its functionality, caching behavior, and usage examples. ### Caching Implementation: - **`internal/tools/neo4j/neo4jschema/cache/cache.go`**: Implemented a thread-safe, in-memory cache with expiration and optional janitor for cleaning expired items. ### Unit Tests: - **`internal/tools/neo4j/neo4jschema/cache/cache_test.go`**: Added comprehensive tests for the caching system, including functionality for setting, retrieving, expiration, janitor cleanup, and concurrent access. ### Helper Utilities: - **`internal/tools/neo4j/neo4jschema/helpers/helpers.go`**: Added utility functions for processing schema data, including support for APOC and native Cypher queries, and converting raw query results into structured formats. --------- Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> be7db3d
This pull request introduces a new tool, `neo4j-schema`, for extracting and processing comprehensive schema information from Neo4j databases. It includes updates to the documentation, implementation of caching mechanisms, helper utilities for schema transformation, and corresponding unit tests. The most important changes are grouped by theme below: ### Tool Integration: - **`cmd/root.go`**: Added import for the new `neo4j-schema` tool to integrate it into the application. ### Documentation: - **`docs/en/resources/tools/neo4j/neo4j-schema.md`**: Added detailed documentation for the `neo4j-schema` tool, describing its functionality, caching behavior, and usage examples. ### Caching Implementation: - **`internal/tools/neo4j/neo4jschema/cache/cache.go`**: Implemented a thread-safe, in-memory cache with expiration and optional janitor for cleaning expired items. ### Unit Tests: - **`internal/tools/neo4j/neo4jschema/cache/cache_test.go`**: Added comprehensive tests for the caching system, including functionality for setting, retrieving, expiration, janitor cleanup, and concurrent access. ### Helper Utilities: - **`internal/tools/neo4j/neo4jschema/helpers/helpers.go`**: Added utility functions for processing schema data, including support for APOC and native Cypher queries, and converting raw query results into structured formats. --------- Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> be7db3d
🤖 I have created a release *beep* *boop* --- ## [0.10.0](v0.9.0...v0.10.0) (2025-07-25) ### Features * Add `Map` parameters support ([#928](#928)) ([4468bc9](4468bc9)) * Add Dataplex source and tool ([#847](#847)) ([30c16a5](30c16a5)) * Add Looker source and tool ([#923](#923)) ([c67e01b](c67e01b)) * Add support for null optional parameter ([#802](#802)) ([a817b12](a817b12)), closes [#736](#736) * **prebuilt/alloydb-admin-config:** Add alloydb control plane as a prebuilt config ([#937](#937)) ([0b28b72](0b28b72)) * **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql prebuilt tools ([#983](#983)) ([c600c30](c600c30)) * **server/mcp:** Support MCP version 2025-06-18 ([#898](#898)) ([313d3ca](313d3ca)) * **sources/mssql:** Add support for encrypt connection parameter ([#874](#874)) ([14a868f](14a868f)) * **sources/firestore:** Add Firestore as Source ([#786](#786)) ([2bb790e](2bb790e)) * **sources/mongodb:** Add MongoDB Source ([#969](#969)) ([74dbd61](74dbd61)) * **tools/alloydb-wait-for-operation:** Add wait for operation tool with exponential backoff ([#920](#920)) ([3f6ec29](3f6ec29)) * **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools ([#977](#977)) ([bd399bb](bd399bb)) * **tools/mongodb-delete:** Add MongoDB `delete` Tools ([#974](#974)) ([78e9752](78e9752)) * **tools/mongodb-find:** Add MongoDB `find` Tools ([#970](#970)) ([a747475](a747475)) * **tools/mongodb-insert:** Add MongoDB `insert` Tools ([#975](#975)) ([4c63f0c](4c63f0c)) * **tools/mongodb-update:** Add MongoDB `update` Tools ([#972](#972)) ([dfde52c](dfde52c)) * **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j sources ([#946](#946)) ([81d0505](81d0505)) * **tools/neo4j-schema:** Add neo4j-schema tool ([#978](#978)) ([be7db3d](be7db3d)) * **tools/wait:** Create wait for tool ([#885](#885)) ([ed5ef4c](ed5ef4c)) ### Bug Fixes * Fix document preview pipeline for forked PRs ([#950](#950)) ([481cc60](481cc60)) * **prebuilt/firestore:** Mark database field as required in the firestore prebuilt tools ([#959](#959)) ([15417d4](15417d4)) * **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql tool in cloud-sql-mssql.yaml prebuilt config ([#938](#938)) ([d16728e](d16728e)) * **prebuilt/cloud-sql-mysql:** Update list_table tool ([#924](#924)) ([2083ba5](2083ba5)) * Replace 'float' with 'number' in McpManifest ([#985](#985)) ([59e23e1](59e23e1)) * **server/api:** Add logger to context in tool invoke handler ([#891](#891)) ([8ce311f](8ce311f)) * **sources/looker:** Add agent tag to Looker API calls. ([#966](#966)) ([f55dd6f](f55dd6f)) * **tools/bigquery-execute-sql:** Ensure invoke always returns a non-null value ([#925](#925)) ([9a55b80](9a55b80)) * **tools/mysqlsql:** Unmarshal json data from database during invoke ([#979](#979)) ([ccc3498](ccc3498)), closes [#840](#840) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [0.10.0](v0.9.0...v0.10.0) (2025-07-25) ### Features * Add `Map` parameters support ([#928](#928)) ([4468bc9](4468bc9)) * Add Dataplex source and tool ([#847](#847)) ([30c16a5](30c16a5)) * Add Looker source and tool ([#923](#923)) ([c67e01b](c67e01b)) * Add support for null optional parameter ([#802](#802)) ([a817b12](a817b12)), closes [#736](#736) * **prebuilt/alloydb-admin-config:** Add alloydb control plane as a prebuilt config ([#937](#937)) ([0b28b72](0b28b72)) * **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql prebuilt tools ([#983](#983)) ([c600c30](c600c30)) * **server/mcp:** Support MCP version 2025-06-18 ([#898](#898)) ([313d3ca](313d3ca)) * **sources/mssql:** Add support for encrypt connection parameter ([#874](#874)) ([14a868f](14a868f)) * **sources/firestore:** Add Firestore as Source ([#786](#786)) ([2bb790e](2bb790e)) * **sources/mongodb:** Add MongoDB Source ([#969](#969)) ([74dbd61](74dbd61)) * **tools/alloydb-wait-for-operation:** Add wait for operation tool with exponential backoff ([#920](#920)) ([3f6ec29](3f6ec29)) * **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools ([#977](#977)) ([bd399bb](bd399bb)) * **tools/mongodb-delete:** Add MongoDB `delete` Tools ([#974](#974)) ([78e9752](78e9752)) * **tools/mongodb-find:** Add MongoDB `find` Tools ([#970](#970)) ([a747475](a747475)) * **tools/mongodb-insert:** Add MongoDB `insert` Tools ([#975](#975)) ([4c63f0c](4c63f0c)) * **tools/mongodb-update:** Add MongoDB `update` Tools ([#972](#972)) ([dfde52c](dfde52c)) * **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j sources ([#946](#946)) ([81d0505](81d0505)) * **tools/neo4j-schema:** Add neo4j-schema tool ([#978](#978)) ([be7db3d](be7db3d)) * **tools/wait:** Create wait for tool ([#885](#885)) ([ed5ef4c](ed5ef4c)) ### Bug Fixes * Fix document preview pipeline for forked PRs ([#950](#950)) ([481cc60](481cc60)) * **prebuilt/firestore:** Mark database field as required in the firestore prebuilt tools ([#959](#959)) ([15417d4](15417d4)) * **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql tool in cloud-sql-mssql.yaml prebuilt config ([#938](#938)) ([d16728e](d16728e)) * **prebuilt/cloud-sql-mysql:** Update list_table tool ([#924](#924)) ([2083ba5](2083ba5)) * Replace 'float' with 'number' in McpManifest ([#985](#985)) ([59e23e1](59e23e1)) * **server/api:** Add logger to context in tool invoke handler ([#891](#891)) ([8ce311f](8ce311f)) * **sources/looker:** Add agent tag to Looker API calls. ([#966](#966)) ([f55dd6f](f55dd6f)) * **tools/bigquery-execute-sql:** Ensure invoke always returns a non-null value ([#925](#925)) ([9a55b80](9a55b80)) * **tools/mysqlsql:** Unmarshal json data from database during invoke ([#979](#979)) ([ccc3498](ccc3498)), closes [#840](#840) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> c45390e
🤖 I have created a release *beep* *boop* --- ## [0.10.0](googleapis/genai-toolbox@v0.9.0...v0.10.0) (2025-07-25) ### Features * Add `Map` parameters support ([googleapis#928](googleapis#928)) ([4468bc9](googleapis@4468bc9)) * Add Dataplex source and tool ([googleapis#847](googleapis#847)) ([30c16a5](googleapis@30c16a5)) * Add Looker source and tool ([googleapis#923](googleapis#923)) ([c67e01b](googleapis@c67e01b)) * Add support for null optional parameter ([googleapis#802](googleapis#802)) ([a817b12](googleapis@a817b12)), closes [googleapis#736](googleapis#736) * **prebuilt/alloydb-admin-config:** Add alloydb control plane as a prebuilt config ([googleapis#937](googleapis#937)) ([0b28b72](googleapis@0b28b72)) * **prebuilt/mysql,prebuilt/mssql:** Add generic mysql and mssql prebuilt tools ([googleapis#983](googleapis#983)) ([c600c30](googleapis@c600c30)) * **server/mcp:** Support MCP version 2025-06-18 ([googleapis#898](googleapis#898)) ([313d3ca](googleapis@313d3ca)) * **sources/mssql:** Add support for encrypt connection parameter ([googleapis#874](googleapis#874)) ([14a868f](googleapis@14a868f)) * **sources/firestore:** Add Firestore as Source ([googleapis#786](googleapis#786)) ([2bb790e](googleapis@2bb790e)) * **sources/mongodb:** Add MongoDB Source ([googleapis#969](googleapis#969)) ([74dbd61](googleapis@74dbd61)) * **tools/alloydb-wait-for-operation:** Add wait for operation tool with exponential backoff ([googleapis#920](googleapis#920)) ([3f6ec29](googleapis@3f6ec29)) * **tools/mongodb-aggregate:** Add MongoDB `aggregate` Tools ([googleapis#977](googleapis#977)) ([bd399bb](googleapis@bd399bb)) * **tools/mongodb-delete:** Add MongoDB `delete` Tools ([googleapis#974](googleapis#974)) ([78e9752](googleapis@78e9752)) * **tools/mongodb-find:** Add MongoDB `find` Tools ([googleapis#970](googleapis#970)) ([a747475](googleapis@a747475)) * **tools/mongodb-insert:** Add MongoDB `insert` Tools ([googleapis#975](googleapis#975)) ([4c63f0c](googleapis@4c63f0c)) * **tools/mongodb-update:** Add MongoDB `update` Tools ([googleapis#972](googleapis#972)) ([dfde52c](googleapis@dfde52c)) * **tools/neo4j-execute-cypher:** Add neo4j-execute-cypher for Neo4j sources ([googleapis#946](googleapis#946)) ([81d0505](googleapis@81d0505)) * **tools/neo4j-schema:** Add neo4j-schema tool ([googleapis#978](googleapis#978)) ([be7db3d](googleapis@be7db3d)) * **tools/wait:** Create wait for tool ([googleapis#885](googleapis#885)) ([ed5ef4c](googleapis@ed5ef4c)) ### Bug Fixes * Fix document preview pipeline for forked PRs ([googleapis#950](googleapis#950)) ([481cc60](googleapis@481cc60)) * **prebuilt/firestore:** Mark database field as required in the firestore prebuilt tools ([googleapis#959](googleapis#959)) ([15417d4](googleapis@15417d4)) * **prebuilt/cloud-sql-mssql:** Correct source reference for execute_sql tool in cloud-sql-mssql.yaml prebuilt config ([googleapis#938](googleapis#938)) ([d16728e](googleapis@d16728e)) * **prebuilt/cloud-sql-mysql:** Update list_table tool ([googleapis#924](googleapis#924)) ([2083ba5](googleapis@2083ba5)) * Replace 'float' with 'number' in McpManifest ([googleapis#985](googleapis#985)) ([59e23e1](googleapis@59e23e1)) * **server/api:** Add logger to context in tool invoke handler ([googleapis#891](googleapis#891)) ([8ce311f](googleapis@8ce311f)) * **sources/looker:** Add agent tag to Looker API calls. ([googleapis#966](googleapis#966)) ([f55dd6f](googleapis@f55dd6f)) * **tools/bigquery-execute-sql:** Ensure invoke always returns a non-null value ([googleapis#925](googleapis#925)) ([9a55b80](googleapis@9a55b80)) * **tools/mysqlsql:** Unmarshal json data from database during invoke ([googleapis#979](googleapis#979)) ([ccc3498](googleapis@ccc3498)), closes [googleapis#840](googleapis#840) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> c45390e
This pull request introduces a new tool,
neo4j-schema
, for extracting and processing comprehensive schema information from Neo4j databases. It includes updates to the documentation, implementation of caching mechanisms, helper utilities for schema transformation, and corresponding unit tests. The most important changes are grouped by theme below:Tool Integration:
cmd/root.go
: Added import for the newneo4j-schema
tool to integrate it into the application.Documentation:
docs/en/resources/tools/neo4j/neo4j-schema.md
: Added detailed documentation for theneo4j-schema
tool, describing its functionality, caching behavior, and usage examples.Caching Implementation:
internal/tools/neo4j/neo4jschema/cache/cache.go
: Implemented a thread-safe, in-memory cache with expiration and optional janitor for cleaning expired items.Unit Tests:
internal/tools/neo4j/neo4jschema/cache/cache_test.go
: Added comprehensive tests for the caching system, including functionality for setting, retrieving, expiration, janitor cleanup, and concurrent access.Helper Utilities:
internal/tools/neo4j/neo4jschema/helpers/helpers.go
: Added utility functions for processing schema data, including support for APOC and native Cypher queries, and converting raw query results into structured formats.