Fantasy Premier League

kotlin-version

Compose Multiplatform project running on following

  • Android
  • iOS
  • Desktop

Also includes

  • AI agent built with Koog (Gemini + tool calling, running in shared KMP code)
  • Kotlin Notebook
  • MCP Server

It also currently makes use of the following Jetpack libraries

  • ViewModel
  • Navigation 3
  • Room
  • DataStore

Related posts:

Running the app

  • Android: open the project in Android Studio and run the app configuration
  • iOS: open ios/FantasyPremierLeague/FantasyPremierLeague.xcodeproj in Xcode and run
  • Desktop: ./gradlew :compose-desktop:run
  • MCP Server: ./gradlew :mcp-server:shadowJar (see MCP Server section below)

Note: to use the AI agent you need a Gemini API key — set apiKeyGoogle in FantasyPremierLeagueAgent.

Screenshots

Android

iOS

Desktop

Kotlin Notebook

MCP Server

The mcp-server module uses the Kotlin MCP SDK to expose an MCP tools endpoint (returning player/fixture info) that can for example be plugged in to Claude Desktop as shown below. That module uses same KMP shared code.

To integrate the MCP server with Claude Desktop for example you need to firstly run gradle shadowJar task and then select "Edit Config" under Developer Settings and add something like the following (update with your path)

{
  "mcpServers": {
    "fantasy-premier-league": {
      "command": "java",
      "args": [
        "-jar",
        "/Users/john.oreilly/github/FantasyPremierLeague/mcp-server/build/libs/serverAll.jar",
        "--stdio"
      ]
    }
  }
}

Full set of Kotlin Multiplatform/Compose/SwiftUI samples