Sandbox
@dceluis/tasker-mcp

MCP server for Tasker automation tasks

Tasker MCP bridges Android Tasker and MCP clients. You import the Tasker project, generate an API key, and run the CLI server with the exported tool definitions so an agent can call Tasker tasks.

49 stars8 forksGoUpdated 1y ago
Who it's for

Builders who want their agent to run Tasker automations on Android devices.

What it delivers

You can let an agent trigger Tasker tasks instead of switching to your phone and doing them by hand.

What it does

Tasker project profile

`dist/mcp_server.prj.xml` adds the Tasker tasks that expose MCP tools and the `MCP generate_api_key` task for access control.

CLI MCP server

`cli/main.go` builds a server that runs in `stdio` or `sse` mode and accepts `--tools`, `--tasker-host`, `--tasker-port`, and `--tasker-api-key`.

Tool description export

`utils/xml-to-tools.js` converts an exported Tasker project into `toolDescriptions.json` for the server.

Claude Desktop example

`examples/claude_desktop_config.json` shows how to point Claude Desktop at the CLI binary and tool file.

Plugin source

`plugin/` contains the Go plugin project files used to build the Tasker-side integration.

How to get it

  1. 1Using scp
    scp dist/tasker-mcp-server-cli-aarch64 user@phone_ip:/data/data/com.termux/files/home/mcp-server
  2. 2Using adb push
    adb push dist/tasker-mcp-server-cli-aarch64 /data/data/com.termux/files/home/mcp-server
  3. 3Run the server in SSE mode with
    ./mcp-server --tools /path/to/toolDescriptions.json --tasker-api-key=tk_... --mode sse
  4. 4Or call it through the stdio transport
    payload='{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "tasker_flash_text", "arguments": { "text": "Hi" }  } }'
    echo $payload | ./mcp-server --tools /path/to/toolDescriptions.json --tasker-api-key=tk_...

README

Tasker MCP

This document will guide you through setting up and running the Tasker MCP integration, including instructions for installing dependencies, preparing servers, and updating tasks.


Usage Guide

Step 1: Import the Tasker Profile

  • Import dist/mcp_server.prj.xml into your Tasker app.
  • After importing, run the MCP generate_api_key task to generate an API key for secure access.

Step 2: Select and Run Your Server

CLI Server:

  • From the dist/ folder, select the correct CLI server binary for your device's architecture, such as tasker-mcp-server-cli-aarch64.
  • Copy both the binary and the toolDescriptions.json file to your device (phone or PC).
  • Rename the binary to mcp-server after copying.

Example:

Using scp:

scp dist/tasker-mcp-server-cli-aarch64 user@phone_ip:/data/data/com.termux/files/home/mcp-server

Using adb push:

adb push dist/tasker-mcp-server-cli-aarch64 /data/data/com.termux/files/home/mcp-server
  • Run the server in SSE mode with:
./mcp-server --tools /path/to/toolDescriptions.json --tasker-api-key=tk_... --mode sse
  • Or call it through the stdio transport:
payload='{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "tasker_flash_text", "arguments": { "text": "Hi" }  } }'
echo $payload | ./mcp-server --tools /path/to/toolDescriptions.json --tasker-api-key=tk_...

Command-Line Flags

The tasker-mcp-server-cli application accepts the following flags:

  • --tools: Path to JSON file with Tasker tool definitions.
  • --host: Host address to listen on for SSE server (default: 0.0.0.0).
  • --port: Port to listen on for SSE server (default: 8000).
  • --mode: Transport mode: sse, or stdio (default: stdio).
  • --tasker-host: Tasker server host (default: 0.0.0.0).
  • --tasker-port: Tasker server port (default: 1821).
  • --tasker-api-key: The Tasker API Key.

Step 3: Connect Your MCP-enabled App

  • Connect your MCP-enabled application by pointing it to the running server.

Example Configuration for Claude Desktop with stdio transport

{
  "mcpServers": {
    "tasker": {
      "command": "/home/luis/tasker-mcp/dist/tasker-mcp-server-cli-x86_64",
      "args": [
        "--tools",
        "/home/luis/tasker-mcp/dist/toolDescriptions.json",
        "--tasker-host",
        "192.168.1.123",
        "--tasker-api-key",
        "tk_...",
        "--mode",
        "stdio"
      ]
    }
  }
}

Building the CLI Server Yourself

Unix/Linux:

  • Install Go using your package manager:
sudo apt-get install golang-go
  • Build the CLI server (cross-compiling example for ARM64):
cd cli
GOOS=linux GOARCH=arm64 go build -o dist/tasker-mcp-server-cli-aarch64 main.go

Updating the MCP Profile with Additional Tasks

Due to limitations in Tasker's argument handling, follow these steps carefully to mark tasks as MCP-enabled:

Step 1: Set Task Comment

  • Add a comment directly in the task settings. This comment becomes the tool description.

Step 2: Configure Tool Arguments Using Task Variables

Tasker supports only two positional arguments (par1, par2). To work around this, we'll use Task Variables:

  • A TaskVariable becomes an MCP argument if:
    1. Configure on Import: unchecked
    2. Immutable: true
    3. Value: empty

After setting the above values you can also set some additional metadata:

  • Metadata mapping:
    • Type: Derived from Task Variable's type (number, string, onoff, etc).
    • Description: Set via the variable's Prompt field.
    • Required: If the Same as Value field is checked.

Note: Temporarily enable "Configure on Import" to set the Prompt description if hidden, then disable it again. The prompt will survive.\

These steps will make sure valid tool descriptions can be generated when we export our custom project later.
Task Variables cannot be pass-through from other tasks, though, so we need to do one last thing in order to get all the variables from the MCP request properly set.

Step 3: Copy the special action

Copy the action MCP#parse_args to the top of your MCP task to enable argument parsing. You can get this from any of the default tasks. But do not modify this action!

Step 4: Exporting and Generating Updated Tool Descriptions

Now your custom tasks are ready:

  • Export your mcp-server project and save it on your PC.
  • Ensure Node.js is installed, then run:
cd utils
npm install
node xml-to-tools.js /path/to/your/exported/mcp_server.prj.xml > toolDescriptions.json

Use this toolDescriptions.json file with your server.


Happy automation!

Files in the repo

Repository payload11 top-level entries
  • cli
  • dist
  • docs
  • examples
  • plugin
  • utils
  • .gitignore
  • .repomixignore
  • LICENSE
  • README.md
  • repomix.config.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

noskillish/
bankmcp

BankMCP™: your AI can now read your bank. Self-hosted, read-only MCP server for your own bank accounts via open banking (Enable Banking). Standard MCP; tested with Claude and Ollama.

177
memorax-ai/
memorax-code

A memory plugin for AI coding that turns engineering experience, repository knowledge, and your way of working into memory that remains useful in future tasks.

1.2k
MaxFreedomPollard/
Compartment

Encrypted, fully offline agentic memory. One click install, GUI w/ memory map, all OS and agents. Superior memory creation, storage and retrieval.

586
LetsFG/LetsFGConnectors

Agent-native flight & hotel search and booking — MCP server, CLI, and Python/JS SDKs. Hundreds of airlines plus the major booking sites, with per-flight reliability history. Free-cancellation hotel rates: hold the room with a small upfront charge, then pay the balance later by link, up to the hotel's own deadline.

2k
ahujasid/
ableton-mcp

Control Ableton Live with any LLM: create tracks, arrange clips & compose music via MCP

3k

Calendar sync tool & universal calendar MCP server. Aggregate, sync and control calendars on Google, Outlook, Office 365, iCloud, CalDAV or ICS.

1.3k