FeaturesHow it worksPricingDocs
Sign inStart free
Model Context ProtocolClaude CodeCursorCodexGemini CLIVS Code · Windsurf · Zed

AI-native project management

Connect any MCP-compatible AI agent to Flokzy. The agent plans, tracks and reports work in the same projects and tasks your team uses — and it can’t invent identifiers, statuses or deadlines, because every name is resolved against your workspace before anything is written.

What your AI can do

  • ✓Turn a goal into a project with tasks, sub-tasks, priorities and deadlines
  • ✓Find the task behind a branch or PR and use its description as requirements
  • ✓Record findings and decisions as comments while it works
  • ✓Move tasks through your workflow statuses and close them with a summary
  • ✓Report project progress and draft standups from real task state
  • ✓Refuse to guess: unknown statuses, projects or labels come back as errors listing the valid options

Setup

1

Create an API key

Open Settings → Developer and create a key. It starts with flkzy_ and is shown once. Unless you narrow it, a new key gets six scopes: tasks:read, tasks:write, projects:read, projects:write, workspace:read and workspace:write — workspace:read covers members, teams, statuses, labels, cycles and search. Deletes and AI usage are opt-in; see Scopes below.

2

Connect your agent to the hosted server

The hosted server at https://mcp.flokzy.com/mcp speaks MCP over Streamable HTTP. Nothing to install — authenticate with your key as a bearer token.

Claude Code

claude mcp add --transport http flokzy https://mcp.flokzy.com/mcp \
  --header "Authorization: Bearer flkzy_YOUR_KEY"

To share the server with your team, commit a project-scoped .mcp.json that reads each person’s key from their environment — Claude Code expands ${FLOKZY_API_KEY} when it loads the file:

{
  "mcpServers": {
    "flokzy": {
      "type": "http",
      "url": "https://mcp.flokzy.com/mcp",
      "headers": { "Authorization": "Bearer ${FLOKZY_API_KEY}" }
    }
  }
}

Writing it with --scope project instead? Put the header in single quotes ('Authorization: Bearer ${FLOKZY_API_KEY}'): in double quotes your shell expands the variable and writes your real key into the committed file.

Cursor — .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "flokzy": {
      "url": "https://mcp.flokzy.com/mcp",
      "headers": { "Authorization": "Bearer flkzy_YOUR_KEY" }
    }
  }
}

Keep a literal key out of files you commit.

OpenAI Codex — ~/.codex/config.toml

[mcp_servers.flokzy]
url = "https://mcp.flokzy.com/mcp"
bearer_token_env_var = "FLOKZY_API_KEY"

Export FLOKZY_API_KEY in your shell; Codex sends it as the bearer token.

Gemini CLI

gemini mcp add --scope user --transport http \
  --header "Authorization: Bearer flkzy_YOUR_KEY" flokzy https://mcp.flokzy.com/mcp

--scope user writes ~/.gemini/settings.json; without it the key lands in the project’s .gemini/settings.json.

VS Code (Copilot agent mode) — .vscode/mcp.json

{
  "inputs": [
    { "type": "promptString", "id": "flokzyApiKey", "description": "Flokzy API key (flkzy_…)", "password": true }
  ],
  "servers": {
    "flokzy": {
      "type": "http",
      "url": "https://mcp.flokzy.com/mcp",
      "headers": { "Authorization": "Bearer ${input:flokzyApiKey}" }
    }
  }
}

VS Code asks for the key once and stores it outside the file, so the file is safe to commit.

Windsurf, Zed, Claude Desktop and other clients

Any client that can launch a local command can run the package over stdio (see below) or reach the hosted server through mcp-remote. Put the header value in an environment variable rather than one Authorization: Bearer … argument: some clients split arguments on spaces.

{
  "mcpServers": {
    "flokzy": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.flokzy.com/mcp", "--header", "Authorization:${FLOKZY_AUTH_HEADER}"],
      "env": { "FLOKZY_AUTH_HEADER": "Bearer flkzy_YOUR_KEY" }
    }
  }
}

Claude Desktop needs this bridge: its remote connectors do not take custom headers. In Zed, add a custom context server with the same command, arguments and environment.

Every request to the hosted server needs the same Authorization: Bearer flkzy_… (or X-Flokzy-Api-Key) header — the server binds each session to the key that opened it, so restart your client after rotating or swapping keys.

3

Verify

In Claude Code run /mcp (or claude mcp list) and check that flokzy is connected. In Cursor the MCP panel shows a green dot. Then ask your agent: “List my open Flokzy tasks.”

Scopes

A key carries an explicit list of scopes, chosen when you create it under Settings → Developer. A new key gets six of the nine by default; deletes (tasks:delete, projects:delete) and ai:use are opt-in — enable them individually when creating or editing a key. tools/list only returns the tools your key’s scopes unlock, so an agent never sees a write it would be refused; call one anyway (a name it remembers from another workspace) and the result is a tool error naming the missing scope.

ScopeDefaultUnlocks
tasks:readOnRead tasks, comments, links, activity
tasks:writeOnCreate and update tasks, comments, links
tasks:deleteOpt-inPermanently delete tasks, comments, attachments
projects:readOnRead projects and burndown
projects:writeOnCreate, update, archive projects
projects:deleteOpt-inPermanently delete projects
workspace:readOnMembers, teams, statuses, labels, cycles, views, analytics
workspace:writeOnCreate and edit labels, cycles, teams, statuses, views
ai:useOpt-inRun AI summaries and triage (spends the workspace AI budget)

Run the server locally instead

Prefer a local process, or want the agent to notice the task in your current git branch? Run the package over stdio. It reads FLOKZY_API_KEY from the environment and, with FLOKZY_AUTO_BRANCH=true, tells the agent about the task referenced by branches such as feat/ENG-42-login.

{
  "mcpServers": {
    "flokzy": {
      "command": "npx",
      "args": ["-y", "@flokzy/mcp"],
      "env": {
        "FLOKZY_API_KEY": "flkzy_YOUR_KEY",
        "FLOKZY_AUTO_BRANCH": "true"
      }
    }
  }
}

Claude Code: claude mcp add flokzy --env FLOKZY_API_KEY=flkzy_YOUR_KEY -- npx -y @flokzy/mcp. Self-hosting the HTTP server: npx -p @flokzy/mcp flokzy-mcp-http serves /mcp on PORT (default 3001). It binds to 127.0.0.1 by default — put a TLS proxy in front, or set MCP_HOST=0.0.0.0 in a container — and accepts up to MCP_MAX_SESSIONS live sessions (default 500) before answering 503.

Teach your agent the workflow

The server already tells every agent how to behave (look up before writing, never invent identifiers or deadlines, record decisions as comments, close tasks only when the work is verified). For agents that support the open Agent Skills format, install the companion skill so the agent reaches for Flokzy whenever work is planned, tracked or reported:

# Claude Code (project) — Codex uses .agents/skills/ instead
mkdir -p .claude/skills/flokzy-project-management
curl -fsSL https://flokzy.com/skills/flokzy-project-management/SKILL.md \
  -o .claude/skills/flokzy-project-management/SKILL.md

Or download SKILL.md directly and place it yourself. For Cursor or Gemini CLI, paste the same file into your rules (.cursor/rules, GEMINI.md).

Available tools

38 tools. Every tool accepts human names — task identifiers like ENG-42, status names, project names, label names — and resolves them for the agent. Read-only tools are marked read for clients that ask for confirmation before writes; delete tools only appear for a key that carries the noted scope.

Tasks

ToolKindDescription
list_tasksreadFilter by text, assignee, status, priority, project, cycle, parent, labels, due window, scope
get_taskreadFull task detail; add comments, sub-tasks or linked GitHub PR state with include
searchreadFull-text search across tasks, projects, cycles and labels
create_taskwriteTitle, Markdown description, priority, status, assignee, project, dates, estimate, parent, labels, cycle
update_taskwriteChange any field; archived hides it, null clears a value
close_taskwriteComplete a task, optionally with a closing comment
bulk_update_taskswriteThe same change on up to 100 tasks in one call — confirm first
get_task_activityreadChange history: what changed, who changed it, and from where
set_task_watchwriteSubscribe this account to a task’s notifications, or unsubscribe it
task_statsreadCounters for this account: assigned open, in progress, overdue
list_templatesreadTask templates: title prefix, description skeleton, default priority, labels
create_task_from_templatewriteCreate a task from a saved template, appending your title and description
delete_taskdelete · needs tasks:deletePermanently delete a task with its comments, links and history — prefer archiving

Comments, links & GitHub

ToolKindDescription
add_commentwriteRecord findings, decisions and links on a task
list_commentsreadRead a task’s discussion, in chronological order
delete_commentdelete · needs tasks:deletePermanently remove one comment from a task
link_taskswriteRecord blocks / related / duplicates relationships
list_linksreadThe relations a task has, with each other task’s identifier, title and status
unlink_taskswriteRemove the relation(s) between two tasks, optionally narrowed by kind
get_github_contextreadPR or issue state, reviews and checks for a linked task

Projects

ToolKindDescription
list_projectsreadProjects (goals) with status, target date, lead and progress
get_projectreadOne project with its description and open tasks
create_projectwriteCreate a project with a goal description, status and target date
update_projectwriteChange project status, deadline, lead, description
get_burndownreadRemaining work against the ideal line and a trend, for one project or one cycle
delete_projectdelete · needs projects:deletePermanently delete a project; its tasks survive, detached — prefer archiving

Workspace

ToolKindDescription
whoamireadThe account this connection acts as, its organization, and the scopes the key carries
list_membersreadPeople in the workspace so work can be assigned by name
list_teamsreadTeams and their workflow statuses (needed to set status by name)
list_labelsreadAvailable labels and their groups
list_cyclesreadCycles (sprints) with dates, state and progress
create_labelwriteAdd a label: name, hex colour, optional team and group
update_labelwriteRename a label, recolour it, or move it in or out of a group
create_cyclewriteCreate a sprint with a start and an end date
update_cyclewriteRename a cycle, shift its dates, or close it
create_statuswriteAdd a workflow status (board column) to a team, in a category
update_statuswriteRename, recolour or recategorise a team’s status
create_teamwriteA new team with its own key, board and default status set

Built-in prompts

plan_work

Turns a goal (and optional deadline) into a project with tasks, sub-tasks and dependencies — after checking what already exists. It drafts the breakdown first and asks you to confirm before creating more than three tasks, each with a type label and a priority.

pr_context

Given a branch name, PR title or URL containing a task identifier, loads the task, its comments and PR state as requirements context.

daily_standup

Fetches your open tasks and drafts a Yesterday / Today / Blockers update from them.

Troubleshooting

401 Unauthorized
The key is missing, revoked or mistyped. It must start with flkzy_ and be sent as Authorization: Bearer … (or X-Flokzy-Api-Key). Create a new key under Settings → Developer.
403 on a tool call
Your key doesn’t carry the scope that tool needs — the error names it, e.g. “Create a key that includes the ‘projects:write’ scope under Settings → Developer.” Keys created before 2026-09-05 predate the workspace scopes and can’t resolve people, statuses, labels or cycles by name; create a new key (six default scopes) or add scopes when creating one.
“Unknown status / project / label” errors
Working as intended: the agent used a name that doesn’t exist in your workspace. The error lists the valid options; the agent should pick one or ask you rather than guess.
Tools not appearing
Restart the client after editing its config. Claude Code shows connection errors in /mcp; Cursor in the MCP panel. A tool missing from the list usually means your key lacks the scope it needs (see Scopes);whoami always works and reports the scopes your key carries. The hosted server answers GET https://mcp.flokzy.com/healthz when it is up.
Get API key →@flokzy/mcp on npm →MCP specification →

Simple project management for small teams: tasks, board, cycles, roadmap, inbox, and team ownership.

Product
FeaturesHow it worksPricing
Developers
DocsMCP
Legal
TermsPrivacy
© 2026 Flokzy