Jinal-Sarvaiya commented on code in PR #149:
URL: https://github.com/apache/camel-kit/pull/149#discussion_r4482633328


##########
kit/camel-kit-core/src/main/java/org/apache/camel/kit/generator/OpenCodeGenerator.java:
##########
@@ -30,12 +39,50 @@ public void generate(InitContext ctx) throws Exception {
         Map<String, Object> data = new HashMap<>(
                 Map.of(
                         "COMMAND_PREFIX", ctx.commandPrefix()));
-        // AGENTS.md already generated by the shared generator flow.
+
+        List<String> mcpServers = readMcpServerNames(ctx);
+        Set<String> seen = new LinkedHashSet<>();
+        StringBuilder denials = new StringBuilder();
+        for (String server : mcpServers) {
+            String normalized = normalizeServerName(server);
+            if (BUILTIN_PERMISSION_PREFIXES.contains(normalized)) {
+                continue;
+            }
+            if (seen.add(normalized)) {
+                denials.append("  ").append(normalized).append("_*: deny\n");
+            }
+        }
+        data.put("MCP_TOOL_DENIALS", denials.toString());
 
         // OpenCode-specific: generate agent definitions
         generateAgents(ctx, data);
     }
 
+    static String normalizeServerName(String name) {
+        StringBuilder sb = new StringBuilder(name.length());
+        for (int i = 0; i < name.length(); i++) {
+            char c = name.charAt(i);
+            sb.append(Character.isLetterOrDigit(c) || c == '-' ? c : '_');
+        }
+        return sb.toString();
+    }
+
+    private List<String> readMcpServerNames(InitContext ctx) throws 
IOException {
+        Set<String> names = new LinkedHashSet<>();
+        for (Path configFile : 
OpenCodeProjectConfig.existingFiles(ctx.projectDir())) {

Review Comment:
   Fixed in 226738f. `readMcpServerNames` now reads both project config layers 
and global config (`$XDG_CONFIG_HOME/opencode/opencode.json` or 
`~/.config/opencode/opencode.json`). Added `collectMcpServersFromFile()` which 
handles both the direct format (`mcp.probe`) and OpenCode 2.2.5's native format 
(`mcp.servers.probe`). Distinguishes a native `servers` container from a real 
server named "servers" by checking for the `type` field.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to