Secure MCP server for WorkBoard OKR and strategy execution platform
Project description
MCP WorkBoard CrunchTools
A secure MCP (Model Context Protocol) server for WorkBoard OKR and strategy execution platform.
Overview
This MCP server is designed to be:
- Secure by default - Comprehensive threat modeling, input validation, and token protection
- No third-party services - Runs locally via stdio, your API token never leaves your machine
- Cross-platform - Works on Linux, macOS, and Windows
- Automatically updated - GitHub Actions monitor for CVEs and update dependencies
- Containerized - Available at
quay.io/crunchtools/mcp-workboardbuilt on Hummingbird Python base image
Naming Convention
| Component | Name |
|---|---|
| GitHub repo | crunchtools/mcp-workboard |
| Container | quay.io/crunchtools/mcp-workboard |
| Python package (PyPI) | mcp-workboard-crunchtools |
| CLI command | mcp-workboard-crunchtools |
| Module import | mcp_workboard_crunchtools |
Why Hummingbird?
The container image is built on the Hummingbird Python base image from Project Hummingbird, which provides:
- Minimal CVE exposure - Built with a minimal package set, dramatically reducing attack surface
- Regular updates - Security patches applied promptly
- Optimized for Python - Pre-configured with uv package manager
- Production-ready - Proper signal handling and non-root user defaults
Features
User Management (4 tools)
workboard_get_user- Get a user by ID or the current authenticated userworkboard_list_users- List all users (Data-Admin role required)workboard_create_user- Create a new user (Data-Admin role required)workboard_update_user- Update an existing user
Goal Management (2 tools)
workboard_get_goals- Get all goals for a userworkboard_get_goal_details- Get details for a specific goal
Installation
With uvx (Recommended)
uvx mcp-workboard-crunchtools
With pip
pip install mcp-workboard-crunchtools
With Container
podman run -e WORKBOARD_API_TOKEN=your_token \
quay.io/crunchtools/mcp-workboard
Configuration
Getting a WorkBoard API Token
- Log in to your WorkBoard instance
- Navigate to Admin Settings > API Configuration
- Generate a JWT API token
- Copy the token immediately - store it securely
Add to Claude Code
claude mcp add mcp-workboard-crunchtools \
--env WORKBOARD_API_TOKEN=your_token_here \
-- uvx mcp-workboard-crunchtools
Or for the container version:
claude mcp add mcp-workboard-crunchtools \
--env WORKBOARD_API_TOKEN=your_token_here \
-- podman run -i --rm -e WORKBOARD_API_TOKEN quay.io/crunchtools/mcp-workboard
Usage Examples
Get Current User
User: Who am I in WorkBoard?
Assistant: [calls workboard_get_user with no args]
List All Users
User: List all WorkBoard users
Assistant: [calls workboard_list_users]
Get User Goals
User: Show me goals for user 12345
Assistant: [calls workboard_get_goals with user_id=12345]
Get Goal Details
User: Get details on goal 67890 for user 12345
Assistant: [calls workboard_get_goal_details with user_id=12345, goal_id=67890]
Security
This server was designed with security as a primary concern. See SECURITY.md for:
- Threat model and attack vectors
- Defense in depth architecture
- Token handling best practices
- Input validation rules
Key Security Features
-
Token Protection
- Stored as SecretStr (never accidentally logged)
- Environment variable only (never in files or args)
- Sanitized from all error messages
-
Input Validation
- Pydantic models for all inputs
- Positive integer validation for IDs
- Email validation for user creation
-
API Hardening
- Hardcoded API base URL (prevents SSRF)
- TLS certificate validation
- Request timeouts
- Response size limits
-
Automated CVE Scanning
- GitHub Actions scan dependencies weekly
- Automatic issues for security updates
- Dependabot alerts enabled
Development
Setup
git clone https://github.com/crunchtools/mcp-workboard.git
cd mcp-workboard
uv sync
Run Tests
uv run pytest
Lint and Type Check
uv run ruff check src tests
uv run mypy src
Build Container
podman build -t mcp-workboard .
License
AGPL-3.0-or-later
Contributing
Contributions welcome! Please read SECURITY.md before submitting security-related changes.
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_workboard_crunchtools-0.1.0.tar.gz.
File metadata
- Download URL: mcp_workboard_crunchtools-0.1.0.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c3a560e6e99494d4527dd6a158e590ab63800a5b24142939997f7941366c206
|
|
| MD5 |
d0e8cc1ca180a57b33869d952d072bca
|
|
| BLAKE2b-256 |
311f602ec6d5760c81710bb444a5b9f6d0af3a6b00c75e639c8da558062e536a
|
Provenance
The following attestation bundles were made for mcp_workboard_crunchtools-0.1.0.tar.gz:
Publisher:
publish.yml on crunchtools/mcp-workboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_workboard_crunchtools-0.1.0.tar.gz -
Subject digest:
3c3a560e6e99494d4527dd6a158e590ab63800a5b24142939997f7941366c206 - Sigstore transparency entry: 956157204
- Sigstore integration time:
-
Permalink:
crunchtools/mcp-workboard@0bbb3015dd94b6e57fcfe2faa08ba6ab82675c4b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/crunchtools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0bbb3015dd94b6e57fcfe2faa08ba6ab82675c4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_workboard_crunchtools-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcp_workboard_crunchtools-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e8d13d547d1195231f129cc3e0261a444063ea9b14983aca40b8f146e904344
|
|
| MD5 |
56e94f781f2f99c2530fc599e3468d6f
|
|
| BLAKE2b-256 |
2079ed6fc6a5f09bc59f04f56edf198452b93c09b04141b6f0bbfde1d0bc5606
|
Provenance
The following attestation bundles were made for mcp_workboard_crunchtools-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on crunchtools/mcp-workboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_workboard_crunchtools-0.1.0-py3-none-any.whl -
Subject digest:
1e8d13d547d1195231f129cc3e0261a444063ea9b14983aca40b8f146e904344 - Sigstore transparency entry: 956157217
- Sigstore integration time:
-
Permalink:
crunchtools/mcp-workboard@0bbb3015dd94b6e57fcfe2faa08ba6ab82675c4b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/crunchtools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0bbb3015dd94b6e57fcfe2faa08ba6ab82675c4b -
Trigger Event:
release
-
Statement type: