Focalboard MCP Server
Enables task and board management in Focalboard through natural language, supporting board operations, card creation/updates, and column movements with automatic authentication and user-friendly property names.
README
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
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-server
Replace 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.js
Option 2: Manual Installation
- Clone or download this repository
- Install dependencies:
npm install
- Build the project:
npm run build
- Add 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 boards
get_board
Get detailed information about a specific board, including columns and properties.
Parameters:
boardId(required): The board ID
Example:
Get details for board abc123
search_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 name
Card/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 abc123
get_card
Get detailed information about a specific card.
Parameters:
cardId(required): The card ID
Example:
Get details for card xyz789
update_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 abc123
add_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 xyz789
Usage Examples
Getting Started
-
List your boards:
List all my Focalboard boards -
Get board details to see columns:
Show me the details of board [board-id], including all columns -
Create 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 IDs - Use
get_cardsto get valid card IDs - Board and card IDs are case-sensitive
Property Not Found
- Use
get_boardto see all available properties and their names - Property 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.md
Building
npm run build
Watch Mode
For development with auto-rebuild:
npm run watch
License
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。