{
  "markdown": "# MCP WorkBoard CrunchTools\n\nA secure MCP (Model Context Protocol) server for WorkBoard OKR and strategy execution platform.\n\n## Overview\n\nThis MCP server is designed to be:\n\n- **Secure by default** - Comprehensive threat modeling, input validation, and token protection\n- **No third-party services** - Runs locally via stdio, your API token never leaves your machine\n- **Cross-platform** - Works on Linux, macOS, and Windows\n- **Automatically updated** - GitHub Actions monitor for CVEs and update dependencies\n- **Containerized** - Available at `quay.io/crunchtools/mcp-workboard` built on [Hummingbird Python](https://quay.io/repository/hummingbird/python) base image\n\n## Naming Convention\n\n| Component | Name |\n|-----------|------|\n| GitHub repo | [crunchtools/mcp-workboard](https://github.com/crunchtools/mcp-workboard) |\n| Container | `quay.io/crunchtools/mcp-workboard` |\n| Python package (PyPI) | `mcp-workboard-crunchtools` |\n| CLI command | `mcp-workboard-crunchtools` |\n| Module import | `mcp_workboard_crunchtools` |\n\n## Why Hummingbird?\n\nThe container image is built on the [Hummingbird Python base image](https://quay.io/repository/hummingbird/python) from [Project Hummingbird](https://github.com/hummingbird-project), which provides:\n\n- **Minimal CVE exposure** - Built with a minimal package set, dramatically reducing attack surface\n- **Regular updates** - Security patches applied promptly\n- **Optimized for Python** - Pre-configured with uv package manager\n- **Production-ready** - Proper signal handling and non-root user defaults\n\n## Features\n\n### User Management (4 tools)\n- `workboard_get_user` - Get a user by ID or the current authenticated user\n- `workboard_list_users` - List all users (Data-Admin role required)\n- `workboard_create_user` - Create a new user (Data-Admin role required)\n- `workboard_update_user` - Update an existing user\n\n### Objective Management (4 tools)\n- `workboard_get_objectives` - Get objectives associated with a user (API capped at 15)\n- `workboard_get_objective_details` - Get details for a specific objective with key results\n- `workboard_get_my_objectives` - Get the current user's owned objectives by ID (recommended)\n- `workboard_create_objective` - Create a new objective with key results (Data-Admin required)\n\n### Key Result Management (2 tools)\n- `workboard_get_my_key_results` - List current user's key results with metric IDs and progress\n- `workboard_update_key_result` - Update key result progress for weekly OKR check-ins\n\n### Workstream Management (5 tools)\n- `workboard_get_workstreams` - Get team workstreams accessible to the authenticated user\n- `workboard_get_workstream_activities` - Get workstream details with all action items\n- `workboard_get_team_workstreams` - Get all workstreams belonging to a specific team\n- `workboard_create_workstream` - Create a new workstream for a team\n- `workboard_update_workstream` - Update workstream properties (name, dates, pace, health, priority)\n\n## Installation\n\n### With uvx (Recommended)\n\n```bash\nuvx mcp-workboard-crunchtools\n```\n\n### With pip\n\n```bash\npip install mcp-workboard-crunchtools\n```\n\n### With Container\n\n```bash\npodman run -e WORKBOARD_API_TOKEN=your_token \\\n    quay.io/crunchtools/mcp-workboard\n```\n\n## Configuration\n\n### Getting a WorkBoard API Token\n\n1. Log in to your WorkBoard instance\n2. Navigate to Admin Settings > API Configuration\n3. Generate a JWT API token\n4. Copy the token immediately - store it securely\n\n### Add to Claude Code\n\n```bash\nclaude mcp add mcp-workboard \\\n    --env WORKBOARD_API_TOKEN=your_token_here \\\n    -- uvx mcp-workboard-crunchtools\n```\n\nOr for the container version:\n\n```bash\nclaude mcp add mcp-workboard \\\n    --env WORKBOARD_API_TOKEN=your_token_here \\\n    -- podman run -i --rm -e WORKBOARD_API_TOKEN quay.io/crunchtools/mcp-workboard\n```\n\n## Usage Examples\n\n### Get Current User\n\n```\nUser: Who am I in WorkBoard?\nAssistant: [calls workboard_get_user with no args]\n```\n\n### List All Users\n\n```\nUser: List all WorkBoard users\nAssistant: [calls workboard_list_users]\n```\n\n### Get User Objectives\n\n```\nUser: Show me objectives for user 12345\nAssistant: [calls workboard_get_objectives with user_id=12345]\n```\n\n### Get Objective Details\n\n```\nUser: Get details on objective 67890 for user 12345\nAssistant: [calls workboard_get_objective_details with user_id=12345, objective_id=67890]\n```\n\n### Get My Objectives\n\n```\nUser: Show me my objectives (IDs: 2900058, 2900075, 2901770)\nAssistant: [calls workboard_get_my_objectives with objective_ids=[2900058, 2900075, 2901770]]\n```\n\n### List My Key Results\n\n```\nUser: Show me my key results\nAssistant: [calls workboard_get_my_key_results]\n```\n\n### Update Key Result Progress\n\n```\nUser: Update key result 12345 to 75\nAssistant: [calls workboard_update_key_result with metric_id=12345, value=\"75\"]\n```\n\n### Create an Objective\n\n```\nUser: Create an objective called \"Increase retention\" owned by user@example.com\nAssistant: [calls workboard_create_objective with name, owner, dates, and optional key_results]\n```\n\n### List Workstreams\n\n```\nUser: Show me my workstreams\nAssistant: [calls workboard_get_workstreams]\n```\n\n### Get Workstream Action Items\n\n```\nUser: Show me the agenda for workstream 4130463\nAssistant: [calls workboard_get_workstream_activities with ws_id=4130463]\n```\n\n## Security\n\nThis server was designed with security as a primary concern. See [SECURITY.md](SECURITY.md) for:\n\n- Threat model and attack vectors\n- Defense in depth architecture\n- Token handling best practices\n- Input validation rules\n\n### Key Security Features\n\n1. **Token Protection**\n   - Stored as SecretStr (never accidentally logged)\n   - Environment variable only (never in files or args)\n   - Sanitized from all error messages\n\n2. **Input Validation**\n   - Pydantic models for all inputs\n   - Positive integer validation for IDs\n   - Email validation for user creation\n\n3. **API Hardening**\n   - Hardcoded API base URL (prevents SSRF)\n   - TLS certificate validation\n   - Request timeouts\n   - Response size limits\n\n4. **Automated CVE Scanning**\n   - GitHub Actions scan dependencies weekly\n   - Automatic issues for security updates\n   - Dependabot alerts enabled\n\n## Development\n\n### Setup\n\n```bash\ngit clone https://github.com/crunchtools/mcp-workboard.git\ncd mcp-workboard\nuv sync\n```\n\n### Run Tests\n\n```bash\nuv run pytest\n```\n\n### Lint and Type Check\n\n```bash\nuv run ruff check src tests\nuv run mypy src\n```\n\n### Build Container\n\n```bash\npodman build -t mcp-workboard .\n```\n\n## License\n\nAGPL-3.0-or-later\n\n## Contributing\n\nContributions welcome! Please read SECURITY.md before submitting security-related changes.\n\n## Links\n\n- [WorkBoard API Documentation](https://www.myworkboard.com/wb/apis/)\n- [FastMCP Documentation](https://gofastmcp.com/)\n- [MCP Specification](https://modelcontextprotocol.io/)\n- [crunchtools.com](https://crunchtools.com)\n\n<!-- mcp-name: io.github.crunchtools/workboard -->\n",
  "bytes": 6900,
  "sha": "8be2f53dc706066175eca8a0f8e527e7b40a24d8853d12e94cc0cc5487b77eb6",
  "repo_slug": "crunchtools/mcp-workboard",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_crunchtools_workboard_2158ea12/readme"
}