To work around #1907, I am attempting this in Enola's mcp.yaml:
github:
docs: https://github.com/github/github-mcp-server
# TODO https://github.com/enola-dev/enola/issues/1907
# url: https://api.githubcopilot.com/mcp/
# headers:
# Authorization: Bearer ${secret:GITHUB_PAT}
command: docker
args:
[
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server",
]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: ${secret:GITHUB_PAT}
but it's causing:
$ ./enola -vvv mcp list-tools
2025-11-09 12:11:12 INFO dev.enola.ai.mcp.McpLoader opt Get (optional) search_brave
2025-11-09 12:11:12 INFO io.modelcontextprotocol.client.transport.StdioClientTransport lambda$connect$1 MCP server starting.
2025-11-09 12:11:12 INFO io.modelcontextprotocol.client.transport.StdioClientTransport lambda$connect$1 MCP server started
2025-11-09 12:11:12 WARNING dev.enola.ai.mcp.McpServerStdErrLogConsumer accept classpath:/enola.dev/ai/mcp.yaml#search_brave : Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
2025-11-09 12:11:12 INFO io.modelcontextprotocol.client.LifecycleInitializer lambda$doInitialize$4 Server response with Protocol: 2024-11-05, Capabilities: ServerCapabilities[completions=null, experimental=null, logging=LoggingCapabilities[], prompts=null, resources=null, tools=ToolCapabilities[listChanged=true]], Info: Implementation[name=brave-search-mcp-server, title=Brave Search MCP Server, version=2.0.10] and Instructions Use this server to search the Web for various types of data via the Brave Search API.
2025-11-09 12:11:12 INFO dev.enola.ai.mcp.McpLoader createSyncClient classpath:/enola.dev/ai/mcp.yaml#search_brave initializing: InitializeResult[protocolVersion=2024-11-05, capabilities=ServerCapabilities[completions=null, experimental=null, logging=LoggingCapabilities[], prompts=null, resources=null, tools=ToolCapabilities[listChanged=true]], serverInfo=Implementation[name=brave-search-mcp-server, title=Brave Search MCP Server, version=2.0.10], instructions=Use this server to search the Web for various types of data via the Brave Search API., meta=null]
2025-11-09 12:11:12 INFO dev.enola.ai.mcp.McpLoader createSyncClient classpath:/enola.dev/ai/mcp.yaml#search_brave fully initialized: brave-search-mcp-server @ 2.0.10
2025-11-09 12:11:12 INFO dev.enola.ai.mcp.McpLoader opt Get (optional) github
2025-11-09 12:11:12 INFO io.modelcontextprotocol.client.transport.StdioClientTransport lambda$connect$1 MCP server starting.
2025-11-09 12:11:12 INFO io.modelcontextprotocol.client.transport.StdioClientTransport lambda$connect$1 MCP server started
2025-11-09 12:11:12 WARNING dev.enola.ai.mcp.McpServerStdErrLogConsumer accept classpath:/enola.dev/ai/mcp.yaml#github : Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
2025-11-09 12:11:13 WARNING dev.enola.ai.mcp.McpServerStdErrLogConsumer accept classpath:/enola.dev/ai/mcp.yaml#github : GitHub MCP Server running on stdio
2025-11-09 12:11:13 INFO io.modelcontextprotocol.client.LifecycleInitializer lambda$doInitialize$4 Server response with Protocol: 2024-11-05, Capabilities: ServerCapabilities[completions=null, experimental=null, logging=LoggingCapabilities[], prompts=null, resources=ResourceCapabilities[subscribe=true, listChanged=true], tools=ToolCapabilities[listChanged=true]], Info: Implementation[name=github-mcp-server, title=null, version=v0.2.1] and Instructions null
2025-11-09 12:11:13 INFO dev.enola.ai.mcp.McpLoader createSyncClient classpath:/enola.dev/ai/mcp.yaml#github initializing: InitializeResult[protocolVersion=2024-11-05, capabilities=ServerCapabilities[completions=null, experimental=null, logging=LoggingCapabilities[], prompts=null, resources=ResourceCapabilities[subscribe=true, listChanged=true], tools=ToolCapabilities[listChanged=true]], serverInfo=Implementation[name=github-mcp-server, title=null, version=v0.2.1], instructions=null, meta=null]
2025-11-09 12:11:13 SEVERE io.modelcontextprotocol.spec.McpClientSession lambda$sendRequest$12 Error handling request: JSONRPCError[code=-32601, message=Method logging/setLevel not found, data=null]
io.modelcontextprotocol.spec.McpError: Method logging/setLevel not found
JSONRPCError[code=-32601, message=Method logging/setLevel not found, data=null]
at io.modelcontextprotocol.spec.McpClientSession.lambda$sendRequest$12(McpClientSession.java:273)
at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:113)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.onNext(FluxTimeout.java:181)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:176)
at io.modelcontextprotocol.spec.McpClientSession.handle(McpClientSession.java:157)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:489)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.request(FluxPeekFuseable.java:437)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:136)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:968)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:101)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onSubscribe(FluxPeekFuseable.java:471)
at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
at reactor.core.publisher.Mono.subscribe(Mono.java:4576)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.SinkManyUnicast.drainRegular(SinkManyUnicast.java:284)
at reactor.core.publisher.SinkManyUnicast.drain(SinkManyUnicast.java:365)
at reactor.core.publisher.SinkManyUnicast.tryEmitNext(SinkManyUnicast.java:239)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at io.modelcontextprotocol.client.transport.StdioClientTransport.lambda$startInboundProcessing$6(StdioClientTransport.java:254)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Suppressed: java.lang.Exception: #block terminated with an error
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
at reactor.core.publisher.Mono.block(Mono.java:1779)
at io.modelcontextprotocol.client.McpSyncClient.setLoggingLevel(McpSyncClient.java:382)
at dev.enola.ai.mcp.McpLoader.createSyncClient(McpLoader.java:204)
at dev.enola.ai.mcp.McpLoader.lambda$opt$0(McpLoader.java:128)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
at dev.enola.ai.mcp.McpLoader.opt(McpLoader.java:128)
at dev.enola.ai.mcp.cli.ListToolsCommand.call(ListToolsCommand.java:71)
at dev.enola.ai.mcp.cli.ListToolsCommand.call(ListToolsCommand.java:46)
at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
at dev.enola.cli.common.LoggingMixin.executionStrategy(LoggingMixin.java:77)
at picocli.CommandLine.execute(CommandLine.java:2174)
at dev.enola.cli.common.CLI.execute(CLI.java:93)
at dev.enola.cli.EnolaApplication.main(EnolaApplication.java:64)
To work around #1907, I am attempting this in Enola's
mcp.yaml:but it's causing: