diff --git a/mcp-github-example/pom.xml b/mcp-github-example/pom.xml
new file mode 100644
index 0000000..d487aa3
--- /dev/null
+++ b/mcp-github-example/pom.xml
@@ -0,0 +1,51 @@
+
+
+ * Running this example requires Docker to be installed on your machine, + * because it spawns the GitHub MCP Server as a subprocess via Docker: + * `docker run -i mcp/github`. + *
+ * You first need to build the Docker image of the GitHub MCP Server that is available at `mcp/github`. + * See https://github.com/modelcontextprotocol/servers/tree/main/src/github to build the image. + *
+ * The communication with the GitHub MCP server is done directly via stdin/stdout.
+ */
+ public static void main(String[] args) throws Exception {
+
+ ChatLanguageModel model = OpenAiChatModel.builder()
+ .apiKey(System.getenv("OPENAI_API_KEY"))
+ .modelName("gpt-4o-mini")
+ .logRequests(true)
+ .logResponses(true)
+ .build();
+
+ McpTransport transport = new StdioMcpTransport.Builder()
+ .command(List.of("/usr/local/bin/docker", "run", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "-i", "mcp/github"))
+ .logEvents(true)
+ .build();
+
+ McpClient mcpClient = new DefaultMcpClient.Builder()
+ .transport(transport)
+ .build();
+
+ ToolProvider toolProvider = McpToolProvider.builder()
+ .mcpClients(List.of(mcpClient))
+ .build();
+
+ Bot bot = AiServices.builder(Bot.class)
+ .chatLanguageModel(model)
+ .toolProvider(toolProvider)
+ .build();
+
+ try {
+ String response = bot.chat("Summarize the last 3 commits of the LangChain4j GitHub repository");
+ System.out.println("RESPONSE: " + response);
+ } finally {
+ mcpClient.close();
+ }
+ }
+}
diff --git a/mcp-github-example/src/main/resources/logback.xml b/mcp-github-example/src/main/resources/logback.xml
new file mode 100644
index 0000000..8a7c97e
--- /dev/null
+++ b/mcp-github-example/src/main/resources/logback.xml
@@ -0,0 +1,12 @@
+