@agents-at-scale/ark 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arkServices.js +9 -0
- package/dist/commands/chat/index.js +1 -2
- package/dist/commands/generate/generators/project.js +33 -26
- package/dist/commands/generate/index.js +2 -2
- package/dist/commands/generate/templateDiscovery.js +13 -4
- package/dist/components/AsyncOperation.d.ts +54 -0
- package/dist/components/AsyncOperation.js +110 -0
- package/dist/components/ChatUI.js +21 -72
- package/dist/components/SelectMenu.d.ts +17 -0
- package/dist/components/SelectMenu.js +21 -0
- package/dist/components/StatusMessage.d.ts +20 -0
- package/dist/components/StatusMessage.js +13 -0
- package/dist/ui/asyncOperations/connectingToArk.d.ts +15 -0
- package/dist/ui/asyncOperations/connectingToArk.js +63 -0
- package/package.json +5 -3
- package/templates/agent/agent.template.yaml +27 -0
- package/templates/marketplace/.editorconfig +24 -0
- package/templates/marketplace/.github/.keep +11 -0
- package/templates/marketplace/.github/workflows/.keep +16 -0
- package/templates/marketplace/.helmignore +23 -0
- package/templates/marketplace/.prettierrc.json +20 -0
- package/templates/marketplace/.yamllint.yml +53 -0
- package/templates/marketplace/README.md +197 -0
- package/templates/marketplace/agents/.keep +29 -0
- package/templates/marketplace/docs/.keep +19 -0
- package/templates/marketplace/mcp-servers/.keep +32 -0
- package/templates/marketplace/models/.keep +23 -0
- package/templates/marketplace/projects/.keep +43 -0
- package/templates/marketplace/queries/.keep +25 -0
- package/templates/marketplace/teams/.keep +29 -0
- package/templates/marketplace/tools/.keep +32 -0
- package/templates/marketplace/tools/examples/.keep +17 -0
- package/templates/mcp-server/Dockerfile +133 -0
- package/templates/mcp-server/Makefile +186 -0
- package/templates/mcp-server/README.md +178 -0
- package/templates/mcp-server/build.sh +76 -0
- package/templates/mcp-server/chart/Chart.yaml +22 -0
- package/templates/mcp-server/chart/templates/_helpers.tpl +62 -0
- package/templates/mcp-server/chart/templates/deployment.yaml +80 -0
- package/templates/mcp-server/chart/templates/hpa.yaml +32 -0
- package/templates/mcp-server/chart/templates/mcpserver.yaml +21 -0
- package/templates/mcp-server/chart/templates/secret.yaml +11 -0
- package/templates/mcp-server/chart/templates/service.yaml +15 -0
- package/templates/mcp-server/chart/templates/serviceaccount.yaml +13 -0
- package/templates/mcp-server/chart/values.yaml +84 -0
- package/templates/mcp-server/example-values.yaml +74 -0
- package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-agent.yaml +33 -0
- package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-query.yaml +24 -0
- package/templates/models/azure.yaml +33 -0
- package/templates/models/claude.yaml +28 -0
- package/templates/models/gemini.yaml +28 -0
- package/templates/models/openai.yaml +39 -0
- package/templates/project/.editorconfig +24 -0
- package/templates/project/.helmignore +24 -0
- package/templates/project/.prettierrc.json +16 -0
- package/templates/project/.yamllint.yml +50 -0
- package/templates/project/Chart.yaml +19 -0
- package/templates/project/Makefile +360 -0
- package/templates/project/README.md +377 -0
- package/templates/project/agents/.keep +11 -0
- package/templates/project/docs/.keep +14 -0
- package/templates/project/mcp-servers/.keep +34 -0
- package/templates/project/models/.keep +17 -0
- package/templates/project/queries/.keep +11 -0
- package/templates/project/scripts/setup.sh +108 -0
- package/templates/project/teams/.keep +11 -0
- package/templates/project/templates/00-rbac.yaml +168 -0
- package/templates/project/templates/01-models.yaml +11 -0
- package/templates/project/templates/02-mcp-servers.yaml +22 -0
- package/templates/project/templates/03-tools.yaml +12 -0
- package/templates/project/templates/04-agents.yaml +12 -0
- package/templates/project/templates/05-teams.yaml +11 -0
- package/templates/project/templates/06-queries.yaml +11 -0
- package/templates/project/templates/_helpers.tpl +91 -0
- package/templates/project/tests/e2e/.keep +10 -0
- package/templates/project/tests/unit/.keep +10 -0
- package/templates/project/tools/.keep +25 -0
- package/templates/project/tools/example-tool.yaml.disabled +94 -0
- package/templates/project/tools/examples/data-tool/Dockerfile +32 -0
- package/templates/project/values.yaml +141 -0
- package/templates/query/query.template.yaml +13 -0
- package/templates/team/team.template.yaml +17 -0
- package/templates/tool/.python-version +1 -0
- package/templates/tool/Dockerfile +23 -0
- package/templates/tool/README.md +238 -0
- package/templates/tool/agent.yaml +19 -0
- package/templates/tool/deploy.sh +10 -0
- package/templates/tool/deployment/deployment.yaml +31 -0
- package/templates/tool/deployment/kustomization.yaml +7 -0
- package/templates/tool/deployment/mcpserver.yaml +12 -0
- package/templates/tool/deployment/service.yaml +12 -0
- package/templates/tool/deployment/serviceaccount.yaml +8 -0
- package/templates/tool/deployment/values.yaml +3 -0
- package/templates/tool/pyproject.toml +9 -0
- package/templates/tool/src/main.py +36 -0
- package/templates/tool/uv.lock +498 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
# {{projectName}}
|
|
2
|
+
|
|
3
|
+
Agents at Scale project for building AI agents and teams.
|
|
4
|
+
|
|
5
|
+
## Quick Start (5 minutes)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 1. Navigate to your project
|
|
9
|
+
cd {{ .Values.projectName }}
|
|
10
|
+
|
|
11
|
+
# 2. Set your API keys
|
|
12
|
+
source .env # Edit this file first with your API keys
|
|
13
|
+
|
|
14
|
+
# 3. Deploy to your ARK cluster
|
|
15
|
+
make quickstart
|
|
16
|
+
|
|
17
|
+
# 4. Check your deployment
|
|
18
|
+
kubectl get agents,teams,queries --namespace {{ .Values.namespace }}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
That's it! Your agents, teams, and queries are all running on Agents at Scale.
|
|
22
|
+
|
|
23
|
+
## What You Get
|
|
24
|
+
|
|
25
|
+
### Core Examples
|
|
26
|
+
|
|
27
|
+
- **`agents/sample-agent.yaml`** - Basic AI agent
|
|
28
|
+
- **`teams/sample-team.yaml`** - Simple team (single agent)
|
|
29
|
+
- **`queries/sample-query.yaml`** - Query to test your agent
|
|
30
|
+
- **`models/azure-model.yaml`** - Model and secret configuration
|
|
31
|
+
|
|
32
|
+
### Production Ready
|
|
33
|
+
|
|
34
|
+
- **Helm chart** that deploys agents, teams, queries, models, and tools
|
|
35
|
+
- **CI/CD pipeline** with GitHub Actions
|
|
36
|
+
- **Security** best practices and RBAC
|
|
37
|
+
- **Makefile** with all necessary commands
|
|
38
|
+
|
|
39
|
+
## Project Structure
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
{{ .Values.projectName }}/
|
|
43
|
+
├── agents/ # Agent definitions
|
|
44
|
+
├── teams/ # Team definitions
|
|
45
|
+
├── queries/ # Queries
|
|
46
|
+
├── models/ # Model configurations
|
|
47
|
+
├── mcp-servers/ # MCP servers
|
|
48
|
+
├── tools/ # Custom tools deployed as part of this project
|
|
49
|
+
├── scripts/ # Setup and utility scripts
|
|
50
|
+
├── docs/ # Additional documentation
|
|
51
|
+
└── .github/ # CI/CD workflows
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Core Concepts
|
|
55
|
+
|
|
56
|
+
### Agents
|
|
57
|
+
|
|
58
|
+
Individual AI assistants with specific roles:
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
62
|
+
kind: Agent
|
|
63
|
+
metadata:
|
|
64
|
+
name: sample-agent
|
|
65
|
+
spec:
|
|
66
|
+
description: Sample agent demonstrating basic functionality
|
|
67
|
+
prompt: 'You are a helpful AI assistant...'
|
|
68
|
+
modelRef:
|
|
69
|
+
name: azure-gpt4
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Teams
|
|
73
|
+
|
|
74
|
+
Groups of agents that collaborate:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
78
|
+
kind: Team
|
|
79
|
+
metadata:
|
|
80
|
+
name: sample-team
|
|
81
|
+
spec:
|
|
82
|
+
members:
|
|
83
|
+
- name: sample-agent
|
|
84
|
+
type: agent
|
|
85
|
+
strategy: 'sequential'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Queries
|
|
89
|
+
|
|
90
|
+
Inputs to agents or teams:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
94
|
+
kind: Query
|
|
95
|
+
metadata:
|
|
96
|
+
name: sample-query
|
|
97
|
+
spec:
|
|
98
|
+
input: 'Hello! Can you help me understand what you can do?'
|
|
99
|
+
targets:
|
|
100
|
+
- type: agent
|
|
101
|
+
name: sample-agent
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Prerequisites
|
|
105
|
+
|
|
106
|
+
- Kubernetes cluster with ARK installed
|
|
107
|
+
- kubectl configured
|
|
108
|
+
- API key for OpenAI/Azure/Anthropic
|
|
109
|
+
|
|
110
|
+
## Commands
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Quick commands
|
|
114
|
+
make help # Show all available commands
|
|
115
|
+
make quickstart # 5-minute setup and deploy
|
|
116
|
+
make status # Check deployment status
|
|
117
|
+
|
|
118
|
+
# Development
|
|
119
|
+
make dev # Run in development mode
|
|
120
|
+
make test # Run tests
|
|
121
|
+
make build # Build all components
|
|
122
|
+
|
|
123
|
+
# Deployment
|
|
124
|
+
make install # Deploy to ARK cluster
|
|
125
|
+
make upgrade # Upgrade deployment
|
|
126
|
+
make uninstall # Remove from cluster
|
|
127
|
+
|
|
128
|
+
# Utilities
|
|
129
|
+
make logs # View logs
|
|
130
|
+
make debug # Show debugging info
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Configuration
|
|
134
|
+
|
|
135
|
+
### Environment Variables
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Required: At least one API key
|
|
139
|
+
export OPENAI_API_KEY="your-key"
|
|
140
|
+
# OR
|
|
141
|
+
export AZURE_OPENAI_API_KEY="your-azure-key"
|
|
142
|
+
# OR
|
|
143
|
+
export ANTHROPIC_API_KEY="your-anthropic-key"
|
|
144
|
+
|
|
145
|
+
# Optional: Customize deployment
|
|
146
|
+
export NAMESPACE="your-namespace"
|
|
147
|
+
export PROJECT_NAME="your-project"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Customize Values
|
|
151
|
+
|
|
152
|
+
Edit `chart/values.yaml` to configure:
|
|
153
|
+
|
|
154
|
+
- Model providers and API keys
|
|
155
|
+
- Resource limits and scaling
|
|
156
|
+
- Security policies
|
|
157
|
+
- Ingress settings
|
|
158
|
+
|
|
159
|
+
## Adding More
|
|
160
|
+
|
|
161
|
+
### More Agents
|
|
162
|
+
|
|
163
|
+
Create additional agents in `agents/`:
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
# agents/my-agent.yaml
|
|
167
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
168
|
+
kind: Agent
|
|
169
|
+
metadata:
|
|
170
|
+
name: my-agent
|
|
171
|
+
spec:
|
|
172
|
+
description: My custom agent
|
|
173
|
+
prompt: 'You are a specialist in...'
|
|
174
|
+
modelRef:
|
|
175
|
+
name: azure-gpt4
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### More Teams
|
|
179
|
+
|
|
180
|
+
Create teams in `teams/` that reference your agents:
|
|
181
|
+
|
|
182
|
+
```yaml
|
|
183
|
+
# teams/my-team.yaml
|
|
184
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
185
|
+
kind: Team
|
|
186
|
+
metadata:
|
|
187
|
+
name: my-team
|
|
188
|
+
spec:
|
|
189
|
+
members:
|
|
190
|
+
- name: sample-agent
|
|
191
|
+
type: agent
|
|
192
|
+
- name: my-agent
|
|
193
|
+
type: agent
|
|
194
|
+
strategy: 'round-robin'
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### MCP Servers
|
|
198
|
+
|
|
199
|
+
Create production-ready MCP servers using the ark CLI generator:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Generate a new MCP server with full Kubernetes deployment
|
|
203
|
+
ark generate mcp-server my-server
|
|
204
|
+
|
|
205
|
+
# Choose from Node.js, Deno, Go, or Python
|
|
206
|
+
# Includes Dockerfile, Helm chart, and deployment scripts
|
|
207
|
+
# Creates example agents and queries for testing
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
This creates a complete MCP server in `mcp-servers/my-server/` with:
|
|
211
|
+
|
|
212
|
+
- Multi-technology support (Node.js, Deno, Go, Python)
|
|
213
|
+
- Production-ready Kubernetes deployment
|
|
214
|
+
- Authentication and configuration options
|
|
215
|
+
- Comprehensive documentation and examples
|
|
216
|
+
|
|
217
|
+
### Custom Tools
|
|
218
|
+
|
|
219
|
+
Create tools as Kubernetes YAML files in `tools/my-tool.yaml`:
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
# tools/my-tool.yaml
|
|
223
|
+
apiVersion: apps/v1
|
|
224
|
+
kind: Deployment
|
|
225
|
+
metadata:
|
|
226
|
+
name: {{ include "{{ .Values.projectName }}.fullname" . }}-my-tool
|
|
227
|
+
labels:
|
|
228
|
+
{{- include "{{ .Values.projectName }}.labels" . | nindent 4 }}
|
|
229
|
+
component: tool
|
|
230
|
+
spec:
|
|
231
|
+
replicas: 1
|
|
232
|
+
selector:
|
|
233
|
+
matchLabels:
|
|
234
|
+
{{- include "{{ .Values.projectName }}.selectorLabels" . | nindent 6 }}
|
|
235
|
+
component: tool
|
|
236
|
+
template:
|
|
237
|
+
spec:
|
|
238
|
+
containers:
|
|
239
|
+
- name: my-tool
|
|
240
|
+
image: "{{ .Values.image.registry }}/{{ .Values.project.name }}-my-tool:{{ .Values.image.tag }}"
|
|
241
|
+
ports:
|
|
242
|
+
- containerPort: 8000
|
|
243
|
+
name: http
|
|
244
|
+
---
|
|
245
|
+
apiVersion: v1
|
|
246
|
+
kind: Service
|
|
247
|
+
metadata:
|
|
248
|
+
name: {{ include "{{ .Values.projectName }}.fullname" . }}-my-tool
|
|
249
|
+
spec:
|
|
250
|
+
ports:
|
|
251
|
+
- port: 8000
|
|
252
|
+
targetPort: http
|
|
253
|
+
selector:
|
|
254
|
+
{{- include "{{ .Values.projectName }}.selectorLabels" . | nindent 4 }}
|
|
255
|
+
component: tool
|
|
256
|
+
---
|
|
257
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
258
|
+
kind: MCPServer
|
|
259
|
+
metadata:
|
|
260
|
+
name: my-tool
|
|
261
|
+
spec:
|
|
262
|
+
address:
|
|
263
|
+
valueFrom:
|
|
264
|
+
serviceRef:
|
|
265
|
+
name: {{ include "{{ .Values.projectName }}.fullname" . }}-my-tool
|
|
266
|
+
port: 8000
|
|
267
|
+
path: /mcp
|
|
268
|
+
transport: sse
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
See `tools/example-tool.yaml.disabled` for a complete example.
|
|
272
|
+
|
|
273
|
+
**Tools vs MCP Servers:**
|
|
274
|
+
|
|
275
|
+
- **Tools** = Simple Kubernetes resources deployed as part of this project (YAML files in `tools/`)
|
|
276
|
+
- **MCP Servers** = Independent services with their own Helm charts, more complex deployments (generated in `mcp-servers/`)
|
|
277
|
+
|
|
278
|
+
## Different Model Providers
|
|
279
|
+
|
|
280
|
+
### Azure OpenAI
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
export AZURE_OPENAI_API_KEY="your-key"
|
|
284
|
+
# Model files are copied from samples/models/ during project creation
|
|
285
|
+
# Edit the copied files and set API keys in .env
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### OpenAI
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
export OPENAI_API_KEY="your-key"
|
|
292
|
+
# Copy from samples: cp ../samples/models/openai.yaml models/
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### AWS Bedrock
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
export AWS_ACCESS_KEY_ID="your-key"
|
|
299
|
+
export AWS_SECRET_ACCESS_KEY="your-secret"
|
|
300
|
+
# Copy from samples: cp ../samples/models/claude.yaml models/
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Testing
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# Validate configurations
|
|
307
|
+
make test
|
|
308
|
+
|
|
309
|
+
# Test specific components
|
|
310
|
+
make test-manifests # Validate YAML files
|
|
311
|
+
make test-tools # Test custom tools
|
|
312
|
+
|
|
313
|
+
# Manual testing
|
|
314
|
+
kubectl apply -f queries/sample-query.yaml
|
|
315
|
+
kubectl get query sample-query -o yaml
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## Troubleshooting
|
|
319
|
+
|
|
320
|
+
### Common Issues
|
|
321
|
+
|
|
322
|
+
**Agent not responding**: Check model configuration and API keys
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
kubectl get models
|
|
326
|
+
kubectl describe agent sample-agent
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Tool not available**: Verify MCP server deployment
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
kubectl get mcpservers
|
|
333
|
+
kubectl logs -l component=tool
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Team issues**: Check agent references and team strategy
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
kubectl describe team sample-team
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Debug Commands
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
make debug # Show debugging information
|
|
346
|
+
make logs # View all logs
|
|
347
|
+
make status # Check deployment status
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## CI/CD
|
|
351
|
+
|
|
352
|
+
The template includes GitHub Actions for:
|
|
353
|
+
|
|
354
|
+
- **Linting** YAML and code
|
|
355
|
+
- **Building** container images
|
|
356
|
+
- **Testing** manifests and tools
|
|
357
|
+
- **Security scanning** with Trivy
|
|
358
|
+
- **Deploying** to staging/production
|
|
359
|
+
|
|
360
|
+
## Next Steps
|
|
361
|
+
|
|
362
|
+
1. **Customize the sample agent** in `agents/sample-agent.yaml`
|
|
363
|
+
2. **Add more agents** as separate YAML files
|
|
364
|
+
3. **Create teams** to coordinate multiple agents
|
|
365
|
+
4. **Build custom tools** when you need specialized functionality
|
|
366
|
+
5. **Set up CI/CD** for automated deployment
|
|
367
|
+
|
|
368
|
+
## Resources
|
|
369
|
+
|
|
370
|
+
- [ARK Documentation](https://mckinsey.github.io/agents-at-scale-ark/)
|
|
371
|
+
- [Model Context Protocol](https://github.com/modelcontextprotocol)
|
|
372
|
+
- [FastMCP Framework](https://github.com/jlowin/fastmcp)
|
|
373
|
+
- [ARK Samples](../../samples/)
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
**Need help?** Check the troubleshooting section above or create an issue.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Additional Agents
|
|
2
|
+
|
|
3
|
+
Add your custom agents here alongside the provided sample-agent.yaml example.
|
|
4
|
+
|
|
5
|
+
Each agent should be a separate YAML file:
|
|
6
|
+
```
|
|
7
|
+
agents/
|
|
8
|
+
├── sample-agent.yaml # Example provided
|
|
9
|
+
├── my-agent.yaml # Your custom agent
|
|
10
|
+
└── another-agent.yaml # Another custom agent
|
|
11
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Documentation
|
|
2
|
+
|
|
3
|
+
Add detailed documentation here as your project grows.
|
|
4
|
+
|
|
5
|
+
The main README.md covers all essentials for getting started.
|
|
6
|
+
|
|
7
|
+
Example structure:
|
|
8
|
+
```
|
|
9
|
+
docs/
|
|
10
|
+
├── architecture.md # System architecture
|
|
11
|
+
├── deployment.md # Advanced deployment guide
|
|
12
|
+
├── development.md # Development workflows
|
|
13
|
+
└── troubleshooting.md # Detailed troubleshooting
|
|
14
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# MCP Servers Directory
|
|
2
|
+
|
|
3
|
+
Add your MCP servers here using the ark CLI generator.
|
|
4
|
+
|
|
5
|
+
Each MCP server should be in its own subdirectory generated with:
|
|
6
|
+
```bash
|
|
7
|
+
ark generate mcp-server <server-name>
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
This will create a complete MCP server with:
|
|
11
|
+
- Dockerfile with multi-technology support
|
|
12
|
+
- Helm chart for Kubernetes deployment
|
|
13
|
+
- Build and deployment scripts
|
|
14
|
+
- Example agent and query configurations
|
|
15
|
+
|
|
16
|
+
Example structure:
|
|
17
|
+
```
|
|
18
|
+
mcp-servers/
|
|
19
|
+
├── weather-api/
|
|
20
|
+
│ ├── Dockerfile
|
|
21
|
+
│ ├── Makefile
|
|
22
|
+
│ ├── build.sh
|
|
23
|
+
│ ├── chart/
|
|
24
|
+
│ │ ├── Chart.yaml
|
|
25
|
+
│ │ ├── values.yaml
|
|
26
|
+
│ │ └── templates/
|
|
27
|
+
│ └── examples/
|
|
28
|
+
└── github-tools/
|
|
29
|
+
├── Dockerfile
|
|
30
|
+
├── chart/
|
|
31
|
+
└── ...
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The deployment system will automatically detect and deploy any MCP servers you add here.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Models Directory
|
|
2
|
+
#
|
|
3
|
+
# This directory contains AI model configurations that will be automatically
|
|
4
|
+
# deployed when you run `make quickstart`.
|
|
5
|
+
#
|
|
6
|
+
# Model files are copied from samples/models/ during project creation.
|
|
7
|
+
# You can add more models by copying from the samples directory:
|
|
8
|
+
#
|
|
9
|
+
# cp ../samples/models/claude.yaml .
|
|
10
|
+
# cp ../samples/models/gemini.yaml .
|
|
11
|
+
#
|
|
12
|
+
# Each model file typically includes:
|
|
13
|
+
# - Secret for API key storage
|
|
14
|
+
# - Model resource configuration
|
|
15
|
+
#
|
|
16
|
+
# Set your API keys in the .env file - they will be substituted into the
|
|
17
|
+
# model YAML files using environment variable substitution.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Additional Queries
|
|
2
|
+
|
|
3
|
+
Add your custom queries here alongside the provided sample-query.yaml example.
|
|
4
|
+
|
|
5
|
+
Each query should be a separate YAML file:
|
|
6
|
+
```
|
|
7
|
+
queries/
|
|
8
|
+
├── sample-query.yaml # Example provided
|
|
9
|
+
├── my-query.yaml # Your custom query
|
|
10
|
+
└── another-query.yaml # Another custom query
|
|
11
|
+
```
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Simple setup script for Agents at Scale project template
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
# Colors
|
|
6
|
+
GREEN='\033[0;32m'
|
|
7
|
+
YELLOW='\033[1;33m'
|
|
8
|
+
BLUE='\033[0;34m'
|
|
9
|
+
RED='\033[0;31m'
|
|
10
|
+
NC='\033[0m'
|
|
11
|
+
|
|
12
|
+
PROJECT_NAME="${PROJECT_NAME:-{{ .Values.projectName }}}"
|
|
13
|
+
NAMESPACE="${NAMESPACE:-default}"
|
|
14
|
+
|
|
15
|
+
echo -e "${BLUE}🚀 Setting up Agents at Scale Project${NC}"
|
|
16
|
+
echo "Project: $PROJECT_NAME | Namespace: $NAMESPACE"
|
|
17
|
+
echo ""
|
|
18
|
+
|
|
19
|
+
# Check prerequisites
|
|
20
|
+
echo -e "${YELLOW}📋 Checking prerequisites...${NC}"
|
|
21
|
+
if ! command -v kubectl >/dev/null 2>&1; then
|
|
22
|
+
echo -e "${RED}❌ kubectl not found. Please install kubectl.${NC}"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
if ! command -v helm >/dev/null 2>&1; then
|
|
27
|
+
echo -e "${RED}❌ helm not found. Please install helm.${NC}"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Check cluster connection
|
|
32
|
+
if ! kubectl cluster-info >/dev/null 2>&1; then
|
|
33
|
+
echo -e "${RED}❌ Cannot connect to Kubernetes cluster${NC}"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo -e "${GREEN}✅ Prerequisites check passed${NC}"
|
|
38
|
+
|
|
39
|
+
# Check for API keys
|
|
40
|
+
echo ""
|
|
41
|
+
echo -e "${YELLOW}🔐 Checking API keys...${NC}"
|
|
42
|
+
if [ -z "$OPENAI_API_KEY" ] && [ -z "$AZURE_OPENAI_API_KEY" ] && [ -z "$ANTHROPIC_API_KEY" ]; then
|
|
43
|
+
echo -e "${YELLOW}⚠️ No API keys found in environment.${NC}"
|
|
44
|
+
echo "Please set at least one of:"
|
|
45
|
+
echo " export OPENAI_API_KEY='your-key'"
|
|
46
|
+
echo " export AZURE_OPENAI_API_KEY='your-key'"
|
|
47
|
+
echo " export ANTHROPIC_API_KEY='your-key'"
|
|
48
|
+
echo ""
|
|
49
|
+
read -p "Continue anyway? (y/n): " -n 1 -r
|
|
50
|
+
echo
|
|
51
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
52
|
+
exit 1
|
|
53
|
+
fi
|
|
54
|
+
else
|
|
55
|
+
echo -e "${GREEN}✅ API key(s) found${NC}"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
# Create namespace
|
|
59
|
+
echo ""
|
|
60
|
+
echo -e "${YELLOW}🏗️ Setting up namespace...${NC}"
|
|
61
|
+
kubectl create namespace "$NAMESPACE" 2>/dev/null || echo "Namespace $NAMESPACE already exists"
|
|
62
|
+
|
|
63
|
+
# Create secrets if API keys exist
|
|
64
|
+
if [ -n "$OPENAI_API_KEY" ]; then
|
|
65
|
+
kubectl create secret generic openai-secret \
|
|
66
|
+
--from-literal=api-key="$OPENAI_API_KEY" \
|
|
67
|
+
--namespace="$NAMESPACE" \
|
|
68
|
+
--dry-run=client -o yaml | kubectl apply -f -
|
|
69
|
+
echo -e "${GREEN}✅ Created OpenAI secret${NC}"
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
if [ -n "$AZURE_OPENAI_API_KEY" ]; then
|
|
73
|
+
kubectl create secret generic azure-openai-secret \
|
|
74
|
+
--from-literal=api-key="$AZURE_OPENAI_API_KEY" \
|
|
75
|
+
--namespace="$NAMESPACE" \
|
|
76
|
+
--dry-run=client -o yaml | kubectl apply -f -
|
|
77
|
+
echo -e "${GREEN}✅ Created Azure OpenAI secret${NC}"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
if [ -n "$ANTHROPIC_API_KEY" ]; then
|
|
81
|
+
kubectl create secret generic anthropic-secret \
|
|
82
|
+
--from-literal=api-key="$ANTHROPIC_API_KEY" \
|
|
83
|
+
--namespace="$NAMESPACE" \
|
|
84
|
+
--dry-run=client -o yaml | kubectl apply -f -
|
|
85
|
+
echo -e "${GREEN}✅ Created Anthropic secret${NC}"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Create local config
|
|
89
|
+
cat > .env <<EOF
|
|
90
|
+
PROJECT_NAME=$PROJECT_NAME
|
|
91
|
+
NAMESPACE=$NAMESPACE
|
|
92
|
+
EOF
|
|
93
|
+
|
|
94
|
+
cat > values.local.yaml <<EOF
|
|
95
|
+
project:
|
|
96
|
+
name: $PROJECT_NAME
|
|
97
|
+
namespace: $NAMESPACE
|
|
98
|
+
EOF
|
|
99
|
+
|
|
100
|
+
echo ""
|
|
101
|
+
echo -e "${GREEN}🎉 Setup complete!${NC}"
|
|
102
|
+
echo ""
|
|
103
|
+
echo -e "${BLUE}Next steps:${NC}"
|
|
104
|
+
echo " make install # Deploy to Kubernetes"
|
|
105
|
+
echo " make status # Check deployment"
|
|
106
|
+
echo ""
|
|
107
|
+
echo "Or use the quick start:"
|
|
108
|
+
echo " make quickstart # One-command deploy"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Additional Teams
|
|
2
|
+
|
|
3
|
+
Add your custom teams here alongside the provided sample-team.yaml example.
|
|
4
|
+
|
|
5
|
+
Each team should be a separate YAML file:
|
|
6
|
+
```
|
|
7
|
+
teams/
|
|
8
|
+
├── sample-team.yaml # Example provided
|
|
9
|
+
├── my-team.yaml # Your custom team
|
|
10
|
+
└── another-team.yaml # Another custom team
|
|
11
|
+
```
|