Focalboard MCP Server
The Focalboard MCP Server enables task and board management through Claude and other MCP-compatible clients, providing comprehensive Focalboard integration.
Board Management: List all boards for a team, search boards by name or keyword, and retrieve detailed board definitions including columns and property configurations.
Card/Task Operations: Create, read, update, and delete cards with full property support. Set titles, properties, and descriptions with markdown formatting. List cards with pagination support and retrieve detailed card information including all properties and content blocks.
Column Movement: Move cards between columns by updating status properties using human-readable names (e.g., "Status", "To Do") instead of cryptic IDs.
Key Features: Automatic authentication and session management, human-friendly property and column names, full markdown support in descriptions, content block management, and team-based organization across different teams.
Provides tools for managing Focalboard boards, cards, and tasks, including board search, card creation and updates, property management, and column movement through the Focalboard API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Focalboard MCP Server Create a card titled 'Fix login bug' in board project-board with Status 'In Progress' and Priority 'High'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Focalboard MCP Server
A Model Context Protocol (MCP) server for Focalboard, enabling task and board management through Claude and other MCP-compatible clients.
Features
Board Management: List, search, and view board details
Card Operations: Create, read, update, and delete cards/tasks
Description Support: Add and update card descriptions with full markdown support
Content Management: View and manage card content blocks (descriptions, text, etc.)
User-Friendly: Use human-readable column and property names (no need for IDs)
Auto-Authentication: Automatically handles login and session management
Column Movement: Easily move cards between columns with simple property updates
Related MCP server: trello-mcp-server
Installation
Option 1: Using Claude CLI (Recommended)
The easiest way to install is using the Claude CLI with npx:
claude mcp add --transport stdio focalboard \
--env FOCALBOARD_HOST=https://your-focalboard-instance.com \
--env FOCALBOARD_USERNAME=your-username \
--env FOCALBOARD_PASSWORD=your-password \
-- npx -y github:gmjuhasz/focalboard-mcp-serverReplace the environment variable values with your actual Focalboard credentials:
FOCALBOARD_HOST: Your Focalboard instance URL (e.g.,https://focalboard.example.com)FOCALBOARD_USERNAME: Your Focalboard username or emailFOCALBOARD_PASSWORD: Your Focalboard password
Alternatively, if you've cloned the repository locally:
cd /path/to/focalboard-mcp-server
npm install
npm run build
claude mcp add --transport stdio focalboard \
--env FOCALBOARD_HOST=https://your-focalboard-instance.com \
--env FOCALBOARD_USERNAME=your-username \
--env FOCALBOARD_PASSWORD=your-password \
-- node /absolute/path/to/focalboard-mcp-server/build/index.jsOption 2: Manual Installation
Clone or download this repository
Install dependencies:
npm installBuild the project:
npm run buildAdd to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"focalboard": {
"command": "node",
"args": ["/absolute/path/to/focalboard-mcp-server/build/index.js"],
"env": {
"FOCALBOARD_HOST": "https://your-focalboard-instance.com",
"FOCALBOARD_USERNAME": "your-username",
"FOCALBOARD_PASSWORD": "your-password"
}
}
}
}Replace /absolute/path/to/focalboard-mcp-server with the actual path to this project.
Restart Claude Desktop
Configuration
Required Environment Variables
FOCALBOARD_HOST: The URL of your Focalboard instance (e.g.,https://focalboard.example.com)FOCALBOARD_USERNAME: Your Focalboard username or emailFOCALBOARD_PASSWORD: Your Focalboard password
Available Tools
Board Management
list_boards
List all boards for a team.
Parameters:
teamId(optional): The team ID (default: "0")
Example:
List all my boardsget_board
Get detailed information about a specific board, including columns and properties.
Parameters:
boardId(required): The board ID
Example:
Get details for board abc123search_boards
Search for boards by name or keyword.
Parameters:
teamId(optional): The team ID (default: "0")searchTerm(required): Search term
Example:
Search for boards with "project" in the nameCard/Task Operations
create_card
Create a new card (task) in a board with optional description.
Parameters:
boardId(required): The board IDtitle(required): Card titleproperties(optional): Property values as key-value pairs using property namesdescription(optional): Card description in markdown format
Example:
Create a card titled "Implement login feature" in board abc123 with Status "To Do" and Priority "High" and description "Add OAuth2 authentication with Google and GitHub providers"get_cards
List all cards in a board.
Parameters:
boardId(required): The board IDpage(optional): Page number (default: 0)perPage(optional): Results per page (default: 100)
Example:
Get all cards from board abc123get_card
Get detailed information about a specific card.
Parameters:
cardId(required): The card ID
Example:
Get details for card xyz789update_card
Update a card's properties, title, and/or description.
Parameters:
cardId(required): The card IDboardId(required): The board IDtitle(optional): New titleproperties(optional): Property values to update using property namesdescription(optional): Update or set the card description in markdown format
Example:
Update card xyz789 in board abc123, move it to "In Progress" status and add description "Currently implementing the authentication flow"Moving Cards Between Columns: To move a card to a different column, update the property that defines the columns. For example, if your board has a "Status" property with columns "To Do", "In Progress", and "Done":
Update card xyz789, set Status to "In Progress"delete_card
Delete a card permanently.
Parameters:
cardId(required): The card IDboardId(required): The board ID
Example:
Delete card xyz789 from board abc123add_card_description
Add or update the description of an existing card.
Parameters:
cardId(required): The card IDboardId(required): The board IDdescription(required): The description content in markdown format
Example:
Add description to card xyz789: "This task involves implementing user authentication with JWT tokens"get_card_content
Get all content blocks (descriptions, text blocks, etc.) for a card.
Parameters:
cardId(required): The card ID
Example:
Get the description and content of card xyz789Usage Examples
Getting Started
List your boards:
List all my Focalboard boardsGet board details to see columns:
Show me the details of board [board-id], including all columnsCreate a new task:
Create a task in board [board-id] titled "Review pull request" with Status "To Do"Move a task to another column:
Update card [card-id] in board [board-id], change Status to "Done"
Workflow Example
User: "List all my boards"
Claude: [Shows list of boards with IDs]
User: "Get details for board abc123"
Claude: [Shows board with property definitions, including Status column options]
User: "Create a card in board abc123 titled 'Fix bug in authentication' with Status 'To Do' and Priority 'High'"
Claude: [Creates card and returns the new card ID]
User: "Get all cards from board abc123"
Claude: [Shows all cards in the board]
User: "Update card xyz789, move it to 'In Progress'"
Claude: [Updates the card's Status property]Working with Descriptions
User: "Create a task in board abc123 titled 'Implement OAuth' with description 'Add Google and GitHub OAuth providers'"
Claude: [Creates card with description]
User: "Show me the description of card xyz789"
Claude: [Retrieves and displays the card's content blocks including the description]
User: "Update card xyz789 description to include implementation details"
Claude: [Updates the card's description]
User: "Add a description to card abc456 explaining the requirements"
Claude: [Adds a new description to an existing card]Markdown Support: Descriptions support full markdown formatting:
Bold and italic text
Lists (ordered and unordered)
Code blocks: `inline code` or ``` code block ```
Headers (# H1, ## H2, etc.)
Links: text
And more!
How It Works
Authentication
The server automatically handles authentication:
When first called, it logs in with your username/password
Receives a session token from Focalboard
Uses the token for all subsequent API requests
Automatically re-authenticates if the token expires
Column Name Resolution
When you update a card with property names (e.g., "Status": "In Progress"):
The server fetches the board details
Finds the property by name (case-insensitive)
Resolves the column/option name to its internal ID
Updates the card with the correct ID
This means you can use friendly names like "To Do" instead of remembering cryptic IDs like "option-abc123".
API Reference
This server uses the Focalboard API v2. For more details, see:
Troubleshooting
Authentication Errors
If you see authentication errors:
Verify your
FOCALBOARD_HOSTis correct (should includehttps://)Check your username and password are correct
Ensure your Focalboard instance is accessible
Board or Card Not Found
Use
list_boardsto get the correct board IDsUse
get_cardsto get valid card IDsBoard and card IDs are case-sensitive
Property Not Found
Use
get_boardto see all available properties and their namesProperty names are case-insensitive but must match exactly
For select/multiSelect properties, option values must match available options
Development
Project Structure
focalboard-mcp-server/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── focalboard-client.ts # Focalboard API client
│ └── types.ts # TypeScript type definitions
├── package.json
├── tsconfig.json
└── README.mdBuilding
npm run buildWatch Mode
For development with auto-rebuild:
npm run watchLicense
MIT
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Related Projects
Focalboard - Open source project management tool
Model Context Protocol - Protocol for AI-application integration
Available Tools
10 toolsadd_card_descriptionB
Add or set description/content to a card. Creates a new text block with markdown content.
Inputs: cardId (required), boardId (required), description (required).
create_cardC
Create a new card (task) in a board. You can set the title, properties, description, and column placement.
Inputs: boardId (required), title (required), properties, description.
delete_cardB
Delete a card (task) from a board permanently.
Inputs: cardId (required), boardId (required).
get_boardC
Get detailed information about a specific board, including all its columns and property definitions.
Inputs: boardId (required).
get_cardC
Get detailed information about a specific card by its ID.
Inputs: cardId (required).
get_card_contentC
Get all content blocks (descriptions) for a card.
Inputs: cardId (required).
get_cardsA
List all cards (tasks) in a board with pagination support.
Inputs: boardId (required), page, perPage.
list_boardsB
List all boards for a team. Returns an array of boards with their IDs, titles, and properties.
Inputs: teamId.
search_boardsC
Search for boards by name or keyword within a team.
Inputs: searchTerm (required), teamId.
update_cardC
Update a card's properties, including moving it to different columns. Accepts human-readable property and column names.
Inputs: cardId (required), boardId (required), title, properties, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, 'get_card' retrieves card metadata, while 'get_card_content' fetches its content blocks, and 'add_card_description' specifically modifies descriptions. The tools cover different resources (boards vs. cards) and actions (create, get, update, delete, list, search) without overlap.
All tool names follow a consistent verb_noun pattern using snake_case, such as 'create_card', 'get_board', and 'update_card'. This predictability makes it easy for agents to understand and select the right tool based on the intended action and resource.
With 10 tools, this server is well-scoped for managing boards and cards in a project management context. Each tool earns its place by covering essential operations like CRUD for cards, board listing and searching, and content management, without being overly sparse or bloated.
The tool surface provides complete CRUD and lifecycle coverage for the domain of board and card management. It includes creation, retrieval, updating, and deletion of cards, along with board listing, searching, and detailed access. No obvious gaps exist, ensuring agents can handle full workflows without dead ends.
Maintenance
Related MCP Connectors
A todo and task board in kanban form, driven from chat with full CRUD.
Simple kanban for small teams. Read and update your Moxboard boards and tasks from Claude.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to manage Trello boards, lists, cards, comments, checklists, labels, and members through natural language.16-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Trello boards, lists, cards, labels, checklists, members, comments, and attachments through natural language.121 npmISC
- AlicenseAqualityDmaintenanceMCP server for Mattermost Boards (Focalboard) that enables natural language management of teams, boards, and cards, including CRUD operations.1127 npmMIT
- AlicenseBqualityDmaintenanceEnables MCP clients to read and manage boards, cards, comments, checklists, and image attachments on a self-hosted Focalboard instance using human-readable property names.136 npmMIT