Skip to content

Commit e5298a2

Browse files
committed
Fix aws bundle allowlisting
1 parent 014a661 commit e5298a2

4 files changed

Lines changed: 18 additions & 39 deletions

File tree

aws/aws-mcp-cli-commands/src/main/java/software/amazon/smithy/java/aws/mcp/cli/commands/AddAwsServiceBundle.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package software.amazon.smithy.java.aws.mcp.cli.commands;
77

8-
import java.util.Collections;
98
import java.util.Set;
109
import picocli.CommandLine.Command;
1110
import picocli.CommandLine.Option;
@@ -36,18 +35,24 @@ public class AddAwsServiceBundle extends AbstractAddBundle {
3635
protected Set<String> blockedApis;
3736

3837
@Option(names = "--include-write-apis",
39-
description = "Include write APIs in the MCP server",
40-
defaultValue = "false")
41-
boolean includeWriteApis;
38+
description = "Include write APIs in the MCP server")
39+
Boolean includeWriteApis;
4240

4341
@Override
4442
protected CliBundle getNewToolConfig() {
4543
var bundleBuilder = AwsServiceBundler.builder()
46-
.serviceName(awsServiceName)
47-
.exposedOperations(allowedTools())
48-
.blockedOperations(blockedTools());
49-
if (!includeWriteApis) {
50-
bundleBuilder = bundleBuilder.readOnlyOperations();
44+
.serviceName(awsServiceName);
45+
//If nothing is specified then default to only readOnlyOperations.
46+
if (allowedApis != null) {
47+
// User explicitly specified allowed APIs - use only those
48+
bundleBuilder.exposedOperations(allowedApis);
49+
} else if (includeWriteApis == null || !includeWriteApis) {
50+
// Default case or explicit false - read-only operations
51+
bundleBuilder.readOnlyOperations();
52+
}
53+
// Always apply blocked operations if specified
54+
if (blockedApis != null) {
55+
bundleBuilder.blockedOperations(blockedApis);
5156
}
5257
var bundle = bundleBuilder.build().bundle();
5358

@@ -76,14 +81,4 @@ protected String getToolBundleName() {
7681
protected boolean canOverwrite() {
7782
return overwrite;
7883
}
79-
80-
@Override
81-
protected Set<String> allowedTools() {
82-
return allowedApis == null ? Collections.emptySet() : allowedApis;
83-
}
84-
85-
@Override
86-
protected Set<String> blockedTools() {
87-
return blockedApis == null ? Collections.emptySet() : blockedApis;
88-
}
8984
}

aws/aws-service-bundler/src/main/java/software/amazon/smithy/java/aws/servicebundle/bundler/AwsServiceBundler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ public final class AwsServiceBundler extends ModelBundler {
7070
private AwsServiceBundler(Builder builder) {
7171
this.serviceName = builder.serviceName;
7272
this.resolver = builder.resolver;
73-
this.exposedOperations = builder.exposedOperations;
74-
this.blockedOperations = builder.blockedOperations;
75-
this.allowedPrefixes = builder.allowedPrefixes;
76-
this.blockedPrefixes = builder.blockedPrefixes;
73+
this.exposedOperations = builder.exposedOperations == null ? Collections.emptySet() : builder.exposedOperations;
74+
this.blockedOperations = builder.blockedOperations == null ? Collections.emptySet() : builder.blockedOperations;
75+
this.allowedPrefixes = builder.allowedPrefixes == null ? Collections.emptySet() : builder.allowedPrefixes;
76+
this.blockedPrefixes = builder.blockedPrefixes == null ? Collections.emptySet() : builder.blockedPrefixes;
7777
}
7878

7979
public static Builder builder() {

mcp/mcp-cli-api/src/main/java/software/amazon/smithy/java/mcp/cli/AbstractAddBundle.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package software.amazon.smithy.java.mcp.cli;
77

8-
import java.util.Set;
98
import software.amazon.smithy.java.mcp.cli.model.Location;
109

1110
/**
@@ -55,8 +54,4 @@ protected final Location getBundleFileLocation() {
5554
* @return true if existing tool bundle can be overwritten, false otherwise
5655
*/
5756
protected abstract boolean canOverwrite();
58-
59-
protected abstract Set<String> allowedTools();
60-
61-
protected abstract Set<String> blockedTools();
6257
}

mcp/mcp-cli/src/main/java/software/amazon/smithy/java/mcp/cli/commands/AddSmithyBundle.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package software.amazon.smithy.java.mcp.cli.commands;
77

8-
import java.util.Set;
98
import picocli.CommandLine;
109
import picocli.CommandLine.Command;
1110
import software.amazon.smithy.java.mcp.cli.AbstractAddBundle;
@@ -43,14 +42,4 @@ protected String getToolBundleName() {
4342
protected boolean canOverwrite() {
4443
throw new UnsupportedOperationException("Not implemented yet.");
4544
}
46-
47-
@Override
48-
protected Set<String> allowedTools() {
49-
throw new UnsupportedOperationException("Not implemented yet.");
50-
}
51-
52-
@Override
53-
protected Set<String> blockedTools() {
54-
throw new UnsupportedOperationException("Not implemented yet.");
55-
}
5645
}

0 commit comments

Comments
 (0)