Last Updated: 2025-11-18
Status: ✅ Agent Team Complete - Full Tooling & Specialization Ready
The Windmill MCP Server generator project foundation is complete with:
- ✅ Complete project structure
- ✅ Generator system (fetch & generate from OpenAPI)
- ✅ Override system (persistent customizations)
- ✅ Testing infrastructure (Vitest with unit/integration/e2e)
- ✅ Docker E2E setup (minimal Windmill configuration)
- ✅ Comprehensive documentation
- ✅ npm package configuration (npx execution ready)
- ✅ All unit tests passing (13/13)
- ✅ Automated GitHub Actions workflow for updates
- ✅ Complete agent team configuration (13 agents)
- ✅ Tool namespacing system (501 tools → 59 categories)
- ✅ Auto-generated tool documentation
| Metric | Count |
|---|---|
| Total Files | 45 |
| Documentation Files | 13 |
| Scripts | 9 |
| Test Files | 4 |
| Config Files | 5 |
| Agent Configs | 13 |
| MCP Tools Generated | 501 |
| Tool Categories | 59 |
| Unit Tests | 13 passing ✅ |
| Lines of Documentation | ~3500+ |
| Dependencies | 3 runtime, 5 dev |
windmill-mcp/
├── .github/
│ ├── agents/ # Agent configs and helpers
│ │ └── AGENTS.md # Agent roles and workflows
│ └── workflows/ # GitHub Actions workflows
│ └── update-mcp-server.yml # Automated update workflow
├── .opencode/
│ ├── agent/ # Agent configurations
│ │ ├── windmill-manager.md # Primary coordinator
│ │ ├── job-specialist.md # Job operations
│ │ ├── user-specialist.md # User management
│ │ ├── script-specialist.md # Script operations
│ │ ├── flow-specialist.md # Flow orchestration
│ │ ├── resource-specialist.md # Resource management
│ │ ├── trigger-specialist.md # Triggers & schedules
│ │ ├── app-specialist.md # Application management
│ │ ├── workspace-specialist.md # Workspaces & folders
│ │ ├── audit-specialist.md # Audit logs & security
│ │ ├── integration-specialist.md # OAuth, webhooks, integrations
│ │ ├── storage-specialist.md # Database & file storage
│ │ └── system-specialist.md # System health & configuration
│ └── templates/
│ └── agent/
│ └── windmill-ROLE.md # Agent template
├── src/
│ ├── generator/ # OpenAPI spec fetching & generation
│ │ ├── config.json # Generator configuration
│ │ ├── fetch-spec.js # Fetch OpenAPI specs
│ │ ├── generate.js # Generate MCP server
│ │ └── generate-tool-list.js # Generate tool documentation
│ ├── overrides/ # Custom code overrides
│ │ ├── README.md # Override documentation
│ │ ├── apply-overrides.js # Apply custom overrides
│ │ ├── add-tool-namespaces.js # Add namespace prefixes to tools
│ │ └── validate-overrides.js # Validate override syntax
│ └── runtime/ # Runtime loader for version management
│ ├── index.js # Main entry point
│ ├── cache.js # Cache management
│ ├── downloader.js # Artifact downloader
│ └── generator.js # Local generation fallback
├── build/ # Generated MCP server code (gitignored)
├── cache/ # Cached OpenAPI specs (gitignored)
├── tests/ # Test suite
│ ├── docker/ # Docker E2E setup
│ │ ├── docker-compose.yml
│ │ ├── wait-for-windmill.js
│ │ └── README.md
│ ├── e2e/ # End-to-end tests
│ ├── unit/ # Unit tests (✅ 13 passing)
│ ├── utils/ # Test utilities & mocks
│ ├── setup.js # Test setup
│ └── config.json # Test configuration
├── docs/ # Documentation
│ ├── quickstart.md # Getting started guide
│ ├── testing.md # Testing guide
│ ├── architecture-verification.md
│ ├── agent-setup-complete.md # Agent team setup summary
│ ├── windmill-agent-team-plan.md # Agent architecture & workflows
│ └── generated-tools.md # Auto-generated tool list (501 tools)
├── README.md # Main documentation
├── CONTRIBUTING.md # Contribution guidelines
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
└── Configuration
├── package.json # npm configuration with bin entry
├── vitest.config.js # Test configuration
├── .env.example # Environment template
├── .gitignore # Git ignore rules
└── .npmignore # npm publish rules
- Fetch OpenAPI specs from Windmill (with fallback URLs)
- Generate MCP server structure
- Post-generation hooks
- Placeholder implementation (ready for openapi-mcp-generator)
- Directory structure mirroring src/
- Automatic override application
- Syntax validation
- Conflict detection
- Backup mechanism
- Comprehensive documentation
- Vitest configuration
- Unit tests with mocks (no external deps)
- Integration test structure
- E2E test structure with Docker
- Mock Windmill client
- Test fixtures and utilities
- Coverage reporting setup
- Watch mode and UI mode
- Minimal Windmill Docker Compose
- PostgreSQL database
- Health checks
- Wait-for-ready script
- npm scripts for Docker management
- Complete documentation
- Bin entry for npx execution
- .npmignore for clean distribution
- Proper package.json metadata
- File inclusion list
- Publishing documentation
- Comprehensive README
- Quick start guide
- Testing guide (unit/integration/e2e)
- Contributing guidelines
- Project plan with phases
- Sprint tracking
- Agent configurations
- Override system docs
- Docker setup docs
- Changelog template
- GitHub Actions workflow for automated updates
- Manual workflow trigger support
- Scheduled weekly updates
- Automatic PR creation with test results
- Draft PR on test failures
- Test result artifacts
- Workflow summary reporting
- Complete agent team architecture (1 manager + 12 specialists)
- Tool namespacing system (namespace_subgroup_operationId format)
- 501 tools organized into 59 categories
- Auto-generated tool documentation
- Agent configurations with YAML frontmatter
- Glob pattern-based tool access control
- Deny-by-default security model
- Agent team workflow documentation
$ npm run test:unit
✓ MockWindmillClient > Job Operations (4 tests)
✓ MockWindmillClient > Script Operations (2 tests)
✓ MockWindmillClient > Workflow Operations (2 tests)
✓ MockWindmillClient > Call History (2 tests)
✓ MCP Tool Helpers (3 tests)
Test Files 1 passed (1)
Tests 13 passed (13)
Duration ~300ms$ npm run test:e2e
✓ E2E Test Configuration (2 tests)
⊘ Windmill E2E Tests (5 skipped - no instance configured)
Test Files 1 passed (1)
Tests 2 passed | 5 skipped (7)
⚠️ Note: Package not yet published to npm. See Development Setup below.
Once published, users will be able to run:
# Run directly with npx (no installation needed)
npx windmill-mcp
# Or add to Claude Desktop config
{
"mcpServers": {
"windmill": {
"command": "npx",
"args": ["windmill-mcp"],
"env": {
"WINDMILL_BASE_URL": "https://your-instance.windmill.dev",
"WINDMILL_API_TOKEN": "your-token"
}
}
}
}# Clone and build
git clone https://github.com/rothnic/windmill-mcp.git
cd windmill-mcp
npm install
npm run generate
# Then configure your MCP client with:
{
"mcpServers": {
"windmill": {
"command": "node",
"args": ["/absolute/path/to/windmill-mcp/src/runtime/index.js"],
"env": {
"WINDMILL_BASE_URL": "https://your-instance.windmill.dev",
"WINDMILL_API_TOKEN": "your-token"
}
}
}
}# Clone and setup
git clone https://github.com/rothnic/windmill-mcp.git
cd windmill-mcp
npm install
# Run tests
npm run test:unit # Unit tests (fast)
npm run test:e2e # E2E tests (requires Windmill)
npm run test:coverage # With coverage report
# Generate MCP server
npm run fetch-spec # Fetch OpenAPI spec
npm run generate # Generate server + apply overrides
# Docker E2E testing
npm run docker:up # Start Windmill
npm run docker:wait # Wait for ready
npm run test:e2e # Run E2E tests
npm run docker:down # Stop Windmill
# Or run complete E2E cycle
npm run test:e2e:full # Does all above automaticallyThe project includes an automated workflow for keeping the MCP server up to date:
Workflow: .github/workflows/update-mcp-server.yml
Triggers:
- Manual: Actions → "Update MCP Server" → "Run workflow"
- Scheduled: Weekly on Mondays at midnight UTC
Process:
- Fetches latest OpenAPI specification from Windmill
- Generates MCP server code with overrides
- Runs complete test suite
- Creates a PR with changes
- Sets PR status:
- ✅ Ready for review if all tests pass
⚠️ Draft if tests fail (with failure details)
Benefits:
- Keeps server in sync with Windmill API changes
- Automatic testing ensures quality
- No manual intervention needed for routine updates
- Clear visibility of test results in PR
| Component | Technology | Version |
|---|---|---|
| Test Framework | Vitest | ^1.2.0 |
| Runtime | Node.js | >=18.0.0 |
| MCP SDK | @modelcontextprotocol/sdk | ^0.5.0 |
| Container Platform | Docker Compose | v3.8 |
| Database (E2E) | PostgreSQL | 14 |
| Mock Server | MSW | ^2.0.0 |
- Decision: Three-tier testing (unit/integration/e2e)
- Rationale: Balance speed, reliability, and coverage
- Impact: Fast feedback (unit), comprehensive coverage (e2e)
- Decision: Use Vitest instead of Jest
- Rationale: Better ESM support, faster, modern API
- Impact: Improved DX, faster test execution
- Decision: Minimal single-container Windmill
- Rationale: Easy onboarding, no complex dependencies
- Impact: Simple setup, sufficient for testing
- Decision: Separate overrides/ directory
- Rationale: Clear separation of generated vs custom code
- Impact: Easy to maintain, survives regeneration
- Decision: Support npx without cloning
- Rationale: Standard MCP server pattern, better UX
- Impact: Easier adoption, simpler for end users
- Set up GitHub Actions CI/CD for automated updates
- Complete agent team configuration (13 agents)
- Implement tool namespacing system
- Generate tool documentation
- Test agent coordination workflows
- Validate tool access patterns
- Create example agent workflows
- Test MCP server with actual Windmill instance
- Validate agent tool access in practice
- Create agent coordination examples
- Add integration tests for agent workflows
- Document common agent patterns
- Publish v0.1.0 to npm
- Full E2E test coverage with agents
- Performance optimization
- Error handling improvements
- Agent workflow tutorials
- Documentation site
{
"@modelcontextprotocol/sdk": "^0.5.0",
"dotenv": "^16.4.5"
}{
"@types/node": "^20.11.0",
"@vitest/ui": "^1.2.0",
"eslint": "^8.56.0",
"jsdoc": "^4.0.2",
"msw": "^2.0.0",
"prettier": "^3.2.4",
"vitest": "^1.2.0"
}| Metric | Target | Current | Status |
|---|---|---|---|
| Unit test coverage | >80% | N/A* | ⏳ Pending generation |
| Unit test pass rate | 100% | 100% | ✅ |
| E2E test pass rate | >95% | N/A* | ⏳ Pending implementation |
| Generation time | <5min | ~1min | ✅ |
| Override success | 100% | 100% | ✅ |
| Documentation complete | 100% | 100% | ✅ |
* Will be applicable after actual MCP server generation in Phase 2
-
Placeholder MCP Server: Current implementation is a placeholder. Actual server will be generated with openapi-mcp-generator in Phase 2.
-
No Real Tools Yet: MCP tools will be generated from OpenAPI spec in Phase 2.
-
E2E Tests Require Setup: E2E tests need Windmill Docker instance with API token configuration.
-
Network Limitations: OpenAPI spec fetching may fail in restricted environments. Uses cached spec as fallback.
- Documentation: See README.md
- Quick Start: See docs/guides/quickstart.md
- Testing Guide: See docs/development/testing.md
- Contributing: See CONTRIBUTING.md
- Project Plan: See docs/planning/project-plan.md
- Sprints: See docs/planning/sprints.md
- Agent Setup: See docs/planning/agent-setup-complete.md
- Agent Team Plan: See docs/planning/windmill-agent-team-plan.md
- Tool List: See docs/reference/generated-tools.md
✅ Agent Team & Tooling Complete
The project now has:
- Complete project structure
- Working generator system with tool namespacing
- 13 specialized agents (1 manager + 12 specialists)
- 501 tools organized into 59 categories
- Auto-generated tool documentation
- Comprehensive testing infrastructure
- All unit tests passing
- Excellent documentation
- Ready for agent coordination testing
Ready to proceed to Phase 3 - Agent Testing & Coordination! 🚀