@172ai/containers-mcp-server 1.0.2 → 1.0.3
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/README.md +2 -0
- package/README.md.bak +366 -0
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/README.md.bak
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
# 172.ai Container Management MCP Server
|
|
2
|
+
|
|
3
|
+
A **Model Context Protocol (MCP) server** that provides AI assistants with access to the 172.ai container management platform. This server exposes powerful tools for managing containers, builds, files, and capabilities through a standardized MCP interface, enabling natural language interactions with your containerized applications.
|
|
4
|
+
|
|
5
|
+
🌐 **Live Documentation**: [https://172.ai/#/mcp](https://172.ai/#/mcp)
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@172ai/containers-mcp-server)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
|
|
10
|
+
## 🚀 Quick Start
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Install globally
|
|
14
|
+
npm install -g @172ai/containers-mcp-server
|
|
15
|
+
|
|
16
|
+
# Run interactive setup
|
|
17
|
+
containers-mcp-server --setup
|
|
18
|
+
|
|
19
|
+
# Start the server
|
|
20
|
+
containers-mcp-server
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ✨ Features
|
|
24
|
+
|
|
25
|
+
### Container Management
|
|
26
|
+
- **List Containers**: Browse available containers with filtering options
|
|
27
|
+
- **Get Container Details**: Retrieve detailed information about specific containers
|
|
28
|
+
- **Create Container**: Create new container templates
|
|
29
|
+
- **Update Container**: Modify existing container configurations
|
|
30
|
+
- **Delete Container**: Remove containers from the system
|
|
31
|
+
- **Copy Container**: Create copies of existing containers
|
|
32
|
+
|
|
33
|
+
### Build Management
|
|
34
|
+
- **Build Container**: Initiate container build processes
|
|
35
|
+
- **Get Build Status**: Monitor build progress and status
|
|
36
|
+
- **List Builds**: View build history for containers
|
|
37
|
+
- **Get Build Logs**: Access detailed build logs and output
|
|
38
|
+
|
|
39
|
+
### File Management
|
|
40
|
+
- **List Container Files**: Browse files within containers
|
|
41
|
+
- **Get File Content**: Read file contents
|
|
42
|
+
- **Upload Files**: Add new files to containers
|
|
43
|
+
- **Update Files**: Modify existing file contents
|
|
44
|
+
- **Delete Files**: Remove files from containers
|
|
45
|
+
|
|
46
|
+
### Capability Management
|
|
47
|
+
- **List Capabilities**: View available system capabilities
|
|
48
|
+
- **Get Capability Details**: Access detailed capability information
|
|
49
|
+
- **Search Capabilities**: Find capabilities by name or description
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
1. **Clone or create the MCP server directory**:
|
|
54
|
+
```bash
|
|
55
|
+
mkdir containers-mcp-server
|
|
56
|
+
cd containers-mcp-server
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. **Install dependencies**:
|
|
60
|
+
```bash
|
|
61
|
+
npm install
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
3. **Configure environment variables**:
|
|
65
|
+
```bash
|
|
66
|
+
cp .env.example .env
|
|
67
|
+
# Edit .env with your configuration
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
4. **Build the project**:
|
|
71
|
+
```bash
|
|
72
|
+
npm run build
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Configuration
|
|
76
|
+
|
|
77
|
+
### Environment Variables
|
|
78
|
+
|
|
79
|
+
The server requires configuration through environment variables. Copy `.env.example` to `.env` and configure:
|
|
80
|
+
|
|
81
|
+
#### Required Settings
|
|
82
|
+
- `CONTAINER_API_URL`: Base URL for the container management API
|
|
83
|
+
- Authentication (choose one):
|
|
84
|
+
- `API_KEY`: Your API key for authentication
|
|
85
|
+
- `OAUTH_TOKEN`: OAuth token for temporary access
|
|
86
|
+
- `OAUTH_CLIENT_ID` + `OAUTH_CLIENT_SECRET`: For automated token refresh
|
|
87
|
+
|
|
88
|
+
#### Optional Settings
|
|
89
|
+
- `NODE_ENV`: Environment (development, production, test)
|
|
90
|
+
- `LOG_LEVEL`: Logging verbosity (error, warn, info, debug)
|
|
91
|
+
- `RATE_LIMIT_PER_MINUTE`: API rate limiting
|
|
92
|
+
- `REQUEST_TIMEOUT`: Request timeout in milliseconds
|
|
93
|
+
- `MAX_RETRIES`: Number of retry attempts for failed requests
|
|
94
|
+
|
|
95
|
+
### Authentication Methods
|
|
96
|
+
|
|
97
|
+
The server supports three authentication methods:
|
|
98
|
+
|
|
99
|
+
1. **API Key** (Recommended for production):
|
|
100
|
+
```bash
|
|
101
|
+
API_KEY=your_api_key_here
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. **OAuth Token** (For temporary access):
|
|
105
|
+
```bash
|
|
106
|
+
OAUTH_TOKEN=your_oauth_token_here
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
3. **OAuth Client Credentials** (For automated systems):
|
|
110
|
+
```bash
|
|
111
|
+
OAUTH_CLIENT_ID=your_client_id_here
|
|
112
|
+
OAUTH_CLIENT_SECRET=your_client_secret_here
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Usage
|
|
116
|
+
|
|
117
|
+
### Running the Server
|
|
118
|
+
|
|
119
|
+
#### Development Mode
|
|
120
|
+
```bash
|
|
121
|
+
npm run dev
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### Production Mode
|
|
125
|
+
```bash
|
|
126
|
+
npm start
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Connecting to Claude Code
|
|
130
|
+
|
|
131
|
+
1. **Add to your Claude Code configuration**:
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"mcpServers": {
|
|
135
|
+
"containers": {
|
|
136
|
+
"command": "node",
|
|
137
|
+
"args": ["/path/to/containers-mcp-server/dist/server.js"],
|
|
138
|
+
"env": {
|
|
139
|
+
"CONTAINER_API_URL": "http://localhost:3000",
|
|
140
|
+
"API_KEY": "your_api_key_here"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
2. **Restart Claude Code** to load the new server
|
|
148
|
+
|
|
149
|
+
### Available Tools
|
|
150
|
+
|
|
151
|
+
Once connected, you can use these tools in your AI conversations:
|
|
152
|
+
|
|
153
|
+
#### Container Operations
|
|
154
|
+
- `list_containers` - List available containers
|
|
155
|
+
- `get_container` - Get detailed container information
|
|
156
|
+
- `create_container` - Create new container templates
|
|
157
|
+
- `update_container` - Update container configurations
|
|
158
|
+
- `delete_container` - Remove containers
|
|
159
|
+
- `copy_container` - Create container copies
|
|
160
|
+
|
|
161
|
+
#### Build Operations
|
|
162
|
+
- `build_container` - Start container builds
|
|
163
|
+
- `get_build_status` - Check build progress
|
|
164
|
+
- `list_builds` - View build history
|
|
165
|
+
|
|
166
|
+
#### File Operations
|
|
167
|
+
- `list_container_files` - Browse container files
|
|
168
|
+
- `get_file_content` - Read file contents
|
|
169
|
+
- `upload_file` - Add files to containers
|
|
170
|
+
|
|
171
|
+
#### Capability Operations
|
|
172
|
+
- `list_capabilities` - View available capabilities
|
|
173
|
+
|
|
174
|
+
### Example Usage
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// List public containers
|
|
178
|
+
await listContainers({ scope: 'public', limit: 10 });
|
|
179
|
+
|
|
180
|
+
// Get container details
|
|
181
|
+
await getContainer({ containerId: 'container-123' });
|
|
182
|
+
|
|
183
|
+
// Build a container
|
|
184
|
+
await buildContainer({ containerId: 'container-123' });
|
|
185
|
+
|
|
186
|
+
// Upload a file
|
|
187
|
+
await uploadFile({
|
|
188
|
+
containerId: 'container-123',
|
|
189
|
+
filePath: 'src/app.js',
|
|
190
|
+
content: 'console.log("Hello, world!");',
|
|
191
|
+
mimeType: 'application/javascript'
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## API Reference
|
|
196
|
+
|
|
197
|
+
### Tool Parameters
|
|
198
|
+
|
|
199
|
+
#### `list_containers`
|
|
200
|
+
- `scope`: Filter by scope ('public', 'myCollection', 'all')
|
|
201
|
+
- `limit`: Maximum number of results (1-100)
|
|
202
|
+
- `offset`: Number of results to skip
|
|
203
|
+
- `query`: Search query for filtering
|
|
204
|
+
|
|
205
|
+
#### `get_container`
|
|
206
|
+
- `containerId`: Container ID to retrieve
|
|
207
|
+
|
|
208
|
+
#### `create_container`
|
|
209
|
+
- `name`: Container name
|
|
210
|
+
- `description`: Container description
|
|
211
|
+
- `dockerfile`: Dockerfile content
|
|
212
|
+
- `tags`: Array of tags (optional)
|
|
213
|
+
- `isPrivate`: Privacy setting (optional)
|
|
214
|
+
- `envVars`: Environment variables (optional)
|
|
215
|
+
|
|
216
|
+
#### `build_container`
|
|
217
|
+
- `containerId`: Container ID to build
|
|
218
|
+
|
|
219
|
+
#### `upload_file`
|
|
220
|
+
- `containerId`: Target container ID
|
|
221
|
+
- `filePath`: File path within container
|
|
222
|
+
- `content`: File content (base64 for binary files)
|
|
223
|
+
- `mimeType`: MIME type (optional)
|
|
224
|
+
|
|
225
|
+
## Error Handling
|
|
226
|
+
|
|
227
|
+
The server provides comprehensive error handling with:
|
|
228
|
+
|
|
229
|
+
- **Validation errors**: Invalid input parameters
|
|
230
|
+
- **Authentication errors**: Invalid or missing credentials
|
|
231
|
+
- **Authorization errors**: Insufficient permissions
|
|
232
|
+
- **Network errors**: Connection issues
|
|
233
|
+
- **Rate limiting**: API quota exceeded
|
|
234
|
+
- **Timeouts**: Request timeouts
|
|
235
|
+
|
|
236
|
+
All errors include:
|
|
237
|
+
- Human-readable error messages
|
|
238
|
+
- Error codes for programmatic handling
|
|
239
|
+
- Request IDs for debugging
|
|
240
|
+
- Troubleshooting hints
|
|
241
|
+
|
|
242
|
+
## Development
|
|
243
|
+
|
|
244
|
+
### Project Structure
|
|
245
|
+
```
|
|
246
|
+
containers-mcp-server/
|
|
247
|
+
├── server.ts # Main server entry point
|
|
248
|
+
├── auth.ts # Authentication management
|
|
249
|
+
├── config.ts # Configuration management
|
|
250
|
+
├── services/
|
|
251
|
+
│ ├── containerService.ts # Container management
|
|
252
|
+
│ ├── buildService.ts # Build management
|
|
253
|
+
│ ├── fileService.ts # File management
|
|
254
|
+
│ └── capabilityService.ts # Capability management
|
|
255
|
+
├── utils/
|
|
256
|
+
│ ├── errorHandler.ts # Error handling utilities
|
|
257
|
+
│ └── apiError.ts # API error classes
|
|
258
|
+
├── package.json
|
|
259
|
+
├── tsconfig.json
|
|
260
|
+
├── .env.example
|
|
261
|
+
└── README.md
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Available Scripts
|
|
265
|
+
- `npm run dev` - Development mode with hot reload
|
|
266
|
+
- `npm run build` - Build for production
|
|
267
|
+
- `npm run start` - Start production server
|
|
268
|
+
- `npm run test` - Run tests
|
|
269
|
+
- `npm run lint` - Code linting
|
|
270
|
+
- `npm run clean` - Clean build artifacts
|
|
271
|
+
|
|
272
|
+
### Adding New Tools
|
|
273
|
+
|
|
274
|
+
1. **Define the tool in `server.ts`**:
|
|
275
|
+
```typescript
|
|
276
|
+
this.server.registerTool("my_new_tool", {
|
|
277
|
+
title: "My New Tool",
|
|
278
|
+
description: "Description of what it does",
|
|
279
|
+
inputSchema: z.object({
|
|
280
|
+
param1: z.string(),
|
|
281
|
+
param2: z.number().optional()
|
|
282
|
+
})
|
|
283
|
+
}, async ({ param1, param2 }) => {
|
|
284
|
+
// Implementation
|
|
285
|
+
});
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
2. **Add service methods** in appropriate service files
|
|
289
|
+
|
|
290
|
+
3. **Update documentation** and examples
|
|
291
|
+
|
|
292
|
+
## Troubleshooting
|
|
293
|
+
|
|
294
|
+
### Common Issues
|
|
295
|
+
|
|
296
|
+
1. **Authentication Failed**
|
|
297
|
+
- Check API key or OAuth credentials
|
|
298
|
+
- Verify the container API URL is correct
|
|
299
|
+
- Ensure the API key has required scopes
|
|
300
|
+
|
|
301
|
+
2. **Connection Timeout**
|
|
302
|
+
- Check network connectivity
|
|
303
|
+
- Verify container service is running
|
|
304
|
+
- Increase `REQUEST_TIMEOUT` if needed
|
|
305
|
+
|
|
306
|
+
3. **Rate Limiting**
|
|
307
|
+
- Reduce request frequency
|
|
308
|
+
- Check `RATE_LIMIT_PER_MINUTE` setting
|
|
309
|
+
- Consider using API key instead of OAuth
|
|
310
|
+
|
|
311
|
+
4. **Build Failures**
|
|
312
|
+
- Check container configuration
|
|
313
|
+
- Verify Dockerfile syntax
|
|
314
|
+
- Review build logs for errors
|
|
315
|
+
|
|
316
|
+
### Debug Mode
|
|
317
|
+
|
|
318
|
+
Enable debug logging:
|
|
319
|
+
```bash
|
|
320
|
+
LOG_LEVEL=debug npm run dev
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
This provides detailed information about:
|
|
324
|
+
- API requests and responses
|
|
325
|
+
- Authentication flow
|
|
326
|
+
- Error details and stack traces
|
|
327
|
+
- Performance metrics
|
|
328
|
+
|
|
329
|
+
## Security
|
|
330
|
+
|
|
331
|
+
### Best Practices
|
|
332
|
+
|
|
333
|
+
1. **Use API Keys**: Prefer API keys over OAuth tokens for production
|
|
334
|
+
2. **Secure Storage**: Store credentials securely (environment variables, secrets manager)
|
|
335
|
+
3. **Network Security**: Use HTTPS endpoints when possible
|
|
336
|
+
4. **Access Control**: Use minimum required scopes
|
|
337
|
+
5. **Monitoring**: Monitor API usage and errors
|
|
338
|
+
|
|
339
|
+
### Security Features
|
|
340
|
+
|
|
341
|
+
- **Request timeout protection**
|
|
342
|
+
- **Rate limiting**
|
|
343
|
+
- **Input validation**
|
|
344
|
+
- **Error message sanitization**
|
|
345
|
+
- **SSL/TLS certificate validation**
|
|
346
|
+
|
|
347
|
+
## License
|
|
348
|
+
|
|
349
|
+
MIT License - see LICENSE file for details
|
|
350
|
+
|
|
351
|
+
## Support
|
|
352
|
+
|
|
353
|
+
For issues and support:
|
|
354
|
+
1. Check the troubleshooting section
|
|
355
|
+
2. Review error messages and request IDs
|
|
356
|
+
3. Enable debug logging for detailed information
|
|
357
|
+
4. Create an issue with reproduction steps
|
|
358
|
+
|
|
359
|
+
## Contributing
|
|
360
|
+
|
|
361
|
+
1. Fork the repository
|
|
362
|
+
2. Create a feature branch
|
|
363
|
+
3. Make changes with tests
|
|
364
|
+
4. Submit a pull request
|
|
365
|
+
|
|
366
|
+
Please follow the existing code style and include tests for new functionality.
|
package/dist/cli.js
CHANGED
|
@@ -51,6 +51,44 @@ if (process.argv.includes('--setup')) {
|
|
|
51
51
|
process.exit(1);
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
+
else if (process.argv.includes('--test')) {
|
|
55
|
+
// Test authentication without starting MCP server
|
|
56
|
+
console.error('🔍 Testing MCP server configuration and authentication...\n');
|
|
57
|
+
Promise.resolve().then(() => __importStar(require('./auth.js'))).then(({ authManager }) => {
|
|
58
|
+
Promise.resolve().then(() => __importStar(require('./config.js'))).then(({ config }) => {
|
|
59
|
+
console.error('📋 Configuration:');
|
|
60
|
+
console.error(` Base URL: ${config.get('baseUrl')}`);
|
|
61
|
+
console.error(` Environment: ${config.get('environment')}`);
|
|
62
|
+
console.error(` Log Level: ${config.get('logLevel')}\n`);
|
|
63
|
+
console.error('🔑 Testing authentication...');
|
|
64
|
+
return authManager.testAuthentication();
|
|
65
|
+
}).then((isAuthenticated) => {
|
|
66
|
+
if (isAuthenticated) {
|
|
67
|
+
console.error('✅ Authentication successful\!\n');
|
|
68
|
+
console.error('🎉 MCP server is properly configured and ready to use.');
|
|
69
|
+
console.error('\nTo start the server:');
|
|
70
|
+
console.error(' containers-mcp-server\n');
|
|
71
|
+
console.error('To reconfigure:');
|
|
72
|
+
console.error(' containers-mcp-server --setup\n');
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.error('❌ Authentication failed\!');
|
|
77
|
+
console.error('\nPlease check your credentials and try:');
|
|
78
|
+
console.error(' containers-mcp-server --setup\n');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}).catch((error) => {
|
|
82
|
+
console.error('❌ Test failed:', error.message);
|
|
83
|
+
console.error('\nTry running setup to fix configuration:');
|
|
84
|
+
console.error(' containers-mcp-server --setup\n');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
});
|
|
87
|
+
}).catch((error) => {
|
|
88
|
+
console.error('Failed to load test modules:', error);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
54
92
|
else {
|
|
55
93
|
// Run normal server
|
|
56
94
|
Promise.resolve().then(() => __importStar(require('./server.js'))).then(({ ContainerMCPServer }) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yEAAyE;AACzE,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IACrC,YAAY;IACZ,kDAAO,YAAY,IAAE,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,oBAAoB;IACpB,kDAAO,aAAa,IAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED