Skip to content

Commit c244f56

Browse files
authored
Make typed apply method public in MCP Tool base class (#26228)
* Make typed apply method public in MCP Tool base class The abstract `apply(PermissionHelper, P)` method was protected, limiting direct invocation of tools with typed parameters to subclasses only. Widening to public allows other components to reuse tool logic without needing adapter subclasses solely for visibility. Co-Authored-By: Claude Opus 4.6 <[EMAIL_ADDRESS_REDACTED]> * Add changelog * Remove unnecessary changelog
1 parent c04fce0 commit c244f56

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

graylog2-server/src/main/java/org/graylog/mcp/server/Tool.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ public Optional<Map<String, Object>> outputSchema() {
143143
* Calls the tool implementation with the raw parameter map.
144144
* Internally this will get converted into the actual parameter type for type safety.
145145
*
146+
* @param permissionHelper provides permission checks and user identity for the calling user
146147
* @param parameterMap raw parameter map
147148
* @return the return value of the tool call
148149
*/
@@ -151,5 +152,12 @@ public O apply(PermissionHelper permissionHelper, Map<String, Object> parameterM
151152
return apply(permissionHelper, p);
152153
}
153154

154-
protected abstract O apply(PermissionHelper permissionHelper, P parameters);
155+
/**
156+
* Executes the tool logic with typed parameters and the caller's permission context.
157+
*
158+
* @param permissionHelper provides permission checks and user identity for the calling user
159+
* @param parameters the deserialized, tool-specific parameter object
160+
* @return the tool's result, typically a JSON string or structured response object
161+
*/
162+
public abstract O apply(PermissionHelper permissionHelper, P parameters);
155163
}

graylog2-server/src/main/java/org/graylog/mcp/tools/ListFieldsTool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Fields can have different meanings in different streams (and also per source), s
6767
}
6868

6969
@Override
70-
protected Result apply(final PermissionHelper permissionHelper, final ListFieldsTool.Parameters parameters) {
70+
public Result apply(final PermissionHelper permissionHelper, final ListFieldsTool.Parameters parameters) {
7171
final Set<String> messageStreamIds = permissionHelper.getSearchUser().streams().loadAllMessageStreams();
7272
Set<String> filteredMessageStreamIds = messageStreamIds;
7373
if (parameters.streams() != null && !parameters.streams().isEmpty()) {

0 commit comments

Comments
 (0)