WBSO MCP Server
# WBSO MCP Server
Generic MCP (Model Context Protocol) server for WBSO R&D documentation and time tracking. Enables AI assistants like Claude Code to automatically detect WBSO-relevant work and log entries.
## Features
- **WBSO Detection** - Analyze commits, code, and work descriptions for WBSO eligibility
- **Work Classification** - Classify work into technical challenge areas
- **Automatic Logging** - Log research and development entries to documentation
- **Multi-year Support** - Track hours across multiple WBSO project years
- **Configurable** - Define your own technical challenges and keywords
## Installation
```bash
git clone https://github.com/rubenmaas/wbso-mcp-server.git
cd wbso-mcp-server
npm install
```
## Configuration
The server loads project configuration from `wbso.config.json` in your WBSO documentation directory.
1. Copy the example config:
```bash
cp wbso.config.example.json /path/to/your/wbso-docs/wbso.config.json
```
2. Edit the config with your project details:
```json
{
"project": {
"name": "Your Project Name",
"projectNumber": "2025-1",
"company": "Your Company B.V."
},
"years": {
"2025": {
"totalHours": 1000,
"type": "New project"
}
},
"technicalChallenges": [
{
"id": "challenge-1",
"name": "Challenge Name",
"keywords": ["keyword1", "keyword2"],
"researchLogs": ["research-log"],
"devLogs": ["dev-log"]
}
]
}
```
## Setup with Claude Code
Add to your Claude Code config (`~/.claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"wbso": {
"command": "node",
"args": ["/path/to/wbso-mcp-server/index.js"],
"env": {
"WBSO_DIR": "/path/to/your/wbso-docs"
}
}
}
}
```
## Available Tools
### Detection Tools
| Tool | Description |
|------|-------------|
| `analyze_wbso_relevance` | Analyze if code/commits are WBSO-relevant |
| `classify_work` | Classify work into technical challenge areas |
| `check_commit_wbso` | Check if a git commit qualifies as WBSO work |
| `get_wbso_criteria` | Get full project criteria and challenges |
### Logging Tools
| Tool | Description |
|------|-------------|
| `log_research` | Log research entries to documentation |
| `log_development` | Log development entries to documentation |
| `log_time` | Log time entries for the current week |
| `get_wbso_status` | Get current WBSO hours status |
## Configuration Schema
### Project
```json
{
"project": {
"name": "Project Name",
"projectNumber": "2025-1",
"company": "Company B.V."
}
}
```
### Years
```json
{
"years": {
"2025": {
"applicationNumber": "SO25XXXXXX",
"period": "January - December 2025",
"totalHours": 1000,
"type": "New project"
}
}
}
```
### Technical Challenges
```json
{
"technicalChallenges": [
{
"id": "unique-id",
"name": "Challenge Name",
"description": "Description of technical uncertainty",
"keywords": ["keyword1", "keyword2"],
"filePatterns": ["pattern1", "pattern2"],
"researchLogs": ["log-name"],
"devLogs": ["log-name"]
}
]
}
```
### File Patterns
```json
{
"relevantPaths": ["service", "repository", "controller"],
"excludePatterns": ["node_modules", "vendor", "\\.lock$"]
}
```
## Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `WBSO_DIR` | Path to WBSO documentation directory | Current working directory |
## License
MIT
TDQS
Scored across 8 tools
The tools analyze_wbso_relevance, classify_work, and check_commit_wbso all serve to determine whether work qualifies as WBSO and how to categorize it, creating significant overlap. While descriptions differ slightly (relevance check, classification, commit-specific check), an agent could easily misselect among them.
All tool names follow a snake_case verb_noun pattern (analyze_, classify_, check_, get_, log_), which is consistent. Minor inconsistency exists in whether 'wbso' appears in the noun part (analyze_wbso_relevance, get_wbso_criteria vs. classify_work, log_time), but overall the pattern is clear and predictable.
With 8 tools, the server is well-scoped for WBSO management, covering analysis, classification, logging, and status retrieval without unnecessary redundancy. The number feels appropriate for the domain and each tool appears to contribute to the workflow.
The tool set covers the core WBSO workflow: checking relevance, classifying work, logging research/development/time, and viewing criteria/status. Minor gaps exist—such as no update or delete operations for logged entries—but for the apparent purpose of documentation and tracking, the surface is reasonably complete.