-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTaskfile.yml
More file actions
145 lines (124 loc) · 3.46 KB
/
Taskfile.yml
File metadata and controls
145 lines (124 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
version: '3'
tasks:
install:
desc: Install dependencies
cmds:
- uv sync --dev --all-packages --group security --group examples
lint:
desc: Run linting with ruff
cmds:
- uv run ruff check .
deps:
- install
format:
desc: Fix linting issues and format code
cmds:
- uv run ruff format .
- uv run ruff check --fix .
deps:
- install
typecheck:
desc: Run type checking with ty
cmds:
- uv run ty check .
deps:
- install
test:
desc: Run unit tests with pytest
cmds:
- uv run pytest
deps:
- install
check:
desc: Run all checks (lint, typecheck, tests, and security)
deps:
- lint
- typecheck
- test
- security
security:
desc: Run security scanning (bandit for code, trivy for dependencies in CI)
cmds:
- uv run bandit -r src/
- uv run bandit -r src/ -f json -o bandit-report.json || true
deps:
- install
sbom:
desc: Generate Software Bill of Materials (SBOM)
cmds:
- uv run cyclonedx-py environment --output-format json --output-file sbom.json
deps:
- install
generate-thv-models:
desc: Generate Pydantic models from Toolhive's OpenAPI specification
cmds:
- ./scripts/generate_toolhive_models.sh
deps:
- install
run-migrations:
desc: Run database migrations
cmds:
- uv run alembic upgrade head
deps:
- install
download-models:
desc: Download ML models for offline/airgapped deployments
cmds:
- uv sync --group offline-models
- uv run python scripts/download_models.py
build:
desc: Build multi-architecture container image
cmds:
- docker buildx create --name mcp-optimizer-builder --use --bootstrap || docker buildx use mcp-optimizer-builder
- docker buildx build --platform linux/amd64,linux/arm64 -t mcp-optimizer:latest --load .
deps:
- download-models
build-local:
desc: Build container image for local architecture only (faster for development)
cmds:
- docker build -t mcp-optimizer:latest .
deps:
- download-models
run-container:
desc: Run the application in a container (builds for local arch only)
cmds:
- task: build-local
- docker rm -f mcp-optimizer-container || true
- docker run --network host --name mcp-optimizer-container mcp-optimizer:latest
install-hooks:
desc: Install git hooks for the project
cmds:
- ./scripts/install-hooks.sh
run-locally:
desc: Run the application locally
env:
TOOLHIVE_HOST: "localhost"
TOOLHIVE_PORT: "8080"
cmds:
- uv run mcpo
deps:
- install
run-in-thv:
desc: Build mcp-optimizer and run it in ToolHive
cmds:
- thv group create optim || true
- thv rm mcp-optimizer || true
- thv run mcp-optimizer:latest --transport streamable-http --group optim
deps:
- build-local
offline-container-tests:
desc: Run container offline mode tests
cmds:
- ./scripts/test-offline.sh
k8s-apply-examples:
desc: Apply all MCP server examples to Kubernetes cluster
cmds:
- ./examples/mcp-servers/apply-mcp-servers.sh
k8s-delete-examples:
desc: Delete all MCP server examples from Kubernetes cluster
cmds:
- ./examples/mcp-servers/delete-mcp-servers.sh
k8s-status-examples:
desc: Check status of all MCP server examples
cmds:
- ./examples/mcp-servers/status-mcp-servers.sh