bamboo-mcp-server 1.0.8 → 1.0.10
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 +17 -8
- package/dist/bamboo-client.js +2 -4
- package/dist/tools/builds.js +1 -1
- package/dist/tools/deployments.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Bamboo MCP Server
|
|
1
|
+
# Atlassian Bamboo MCP Server
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/bamboo-mcp-server)
|
|
4
4
|
[](./LICENSE)
|
|
@@ -90,7 +90,7 @@ The server requires these environment variables:
|
|
|
90
90
|
Run this command:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
claude mcp add bamboo --
|
|
93
|
+
claude mcp add bamboo -- npx -y bamboo-mcp-server@latest
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
Or add to `~/.claude/settings.json`:
|
|
@@ -99,8 +99,8 @@ Or add to `~/.claude/settings.json`:
|
|
|
99
99
|
{
|
|
100
100
|
"mcpServers": {
|
|
101
101
|
"bamboo": {
|
|
102
|
-
"command": "
|
|
103
|
-
"args": ["
|
|
102
|
+
"command": "npx",
|
|
103
|
+
"args": ["-y", "bamboo-mcp-server@latest"],
|
|
104
104
|
"env": {
|
|
105
105
|
"BAMBOO_URL": "https://bamboo.example.com",
|
|
106
106
|
"BAMBOO_TOKEN": "your-token"
|
|
@@ -123,8 +123,8 @@ Add to your config file:
|
|
|
123
123
|
{
|
|
124
124
|
"mcpServers": {
|
|
125
125
|
"bamboo": {
|
|
126
|
-
"command": "
|
|
127
|
-
"args": ["
|
|
126
|
+
"command": "npx",
|
|
127
|
+
"args": ["-y", "bamboo-mcp-server@latest"],
|
|
128
128
|
"env": {
|
|
129
129
|
"BAMBOO_URL": "https://bamboo.example.com",
|
|
130
130
|
"BAMBOO_TOKEN": "your-token",
|
|
@@ -146,8 +146,8 @@ Add to `~/.cursor/mcp.json`:
|
|
|
146
146
|
{
|
|
147
147
|
"mcpServers": {
|
|
148
148
|
"bamboo": {
|
|
149
|
-
"command": "
|
|
150
|
-
"args": ["
|
|
149
|
+
"command": "npx",
|
|
150
|
+
"args": ["-y", "bamboo-mcp-server@latest"],
|
|
151
151
|
"env": {
|
|
152
152
|
"BAMBOO_URL": "https://bamboo.example.com",
|
|
153
153
|
"BAMBOO_TOKEN": "your-token"
|
|
@@ -185,9 +185,16 @@ docker build -t bamboo-mcp-server .
|
|
|
185
185
|
docker run -i --rm \
|
|
186
186
|
-e BAMBOO_URL="https://bamboo.example.com" \
|
|
187
187
|
-e BAMBOO_TOKEN="your-token" \
|
|
188
|
+
-e BAMBOO_PROXY="http://host.docker.internal:8080" \
|
|
188
189
|
bamboo-mcp-server
|
|
189
190
|
```
|
|
190
191
|
|
|
192
|
+
#### Proxy configuration
|
|
193
|
+
|
|
194
|
+
When using a proxy from Docker:
|
|
195
|
+
- **macOS/Windows**: Use `host.docker.internal` to reach the host (e.g., `http://host.docker.internal:8080`)
|
|
196
|
+
- **Linux**: Use `--network host` flag or the host's actual IP address
|
|
197
|
+
|
|
191
198
|
#### Use with Claude Desktop
|
|
192
199
|
|
|
193
200
|
```json
|
|
@@ -199,6 +206,7 @@ docker run -i --rm \
|
|
|
199
206
|
"run", "-i", "--rm",
|
|
200
207
|
"-e", "BAMBOO_URL=https://bamboo.example.com",
|
|
201
208
|
"-e", "BAMBOO_TOKEN=your-token",
|
|
209
|
+
"-e", "BAMBOO_PROXY=http://host.docker.internal:8080",
|
|
202
210
|
"bamboo-mcp-server"
|
|
203
211
|
]
|
|
204
212
|
}
|
|
@@ -215,6 +223,7 @@ services:
|
|
|
215
223
|
environment:
|
|
216
224
|
- BAMBOO_URL=https://bamboo.example.com
|
|
217
225
|
- BAMBOO_TOKEN=${BAMBOO_TOKEN}
|
|
226
|
+
- BAMBOO_PROXY=http://host.docker.internal:8080
|
|
218
227
|
stdin_open: true
|
|
219
228
|
```
|
|
220
229
|
|
package/dist/bamboo-client.js
CHANGED
|
@@ -254,7 +254,7 @@ export class BambooClient {
|
|
|
254
254
|
}
|
|
255
255
|
async getBuildResultWithLogs(buildKey, params) {
|
|
256
256
|
// First, try to get the result with logEntries (works for job-level keys)
|
|
257
|
-
const maxResult = params?.maxLogLines ||
|
|
257
|
+
const maxResult = params?.maxLogLines || 1000;
|
|
258
258
|
const result = await this.request(`/result/${buildKey}?expand=logEntries,stages.stage.results.result&max-result=${maxResult}`);
|
|
259
259
|
// If logEntries exists and has entries, this is a job result - return directly
|
|
260
260
|
if (result.logEntries?.logEntry && result.logEntries.logEntry.length > 0) {
|
|
@@ -336,9 +336,7 @@ export class BambooClient {
|
|
|
336
336
|
const searchParams = new URLSearchParams();
|
|
337
337
|
if (params?.includeLogs) {
|
|
338
338
|
searchParams.set('includeLogs', 'true');
|
|
339
|
-
|
|
340
|
-
searchParams.set('max-result', String(params.maxLogLines));
|
|
341
|
-
}
|
|
339
|
+
searchParams.set('max-result', String(params?.maxLogLines || 1000));
|
|
342
340
|
}
|
|
343
341
|
const query = searchParams.toString();
|
|
344
342
|
return this.request(`/deploy/result/${deploymentResultId}${query ? `?${query}` : ''}`);
|
package/dist/tools/builds.js
CHANGED
|
@@ -191,7 +191,7 @@ export function registerBuildTools(server, client) {
|
|
|
191
191
|
// Get build result with log content
|
|
192
192
|
server.tool('bamboo_get_build_result_logs', 'Get build result with actual log content. For plan builds, fetches logs from all jobs. For job builds, returns logs directly.', {
|
|
193
193
|
build_key: z.string().describe('The build result key - can be plan level (e.g., "PROJ-PLAN-123") or job level (e.g., "PROJ-PLAN-JOB1-123")'),
|
|
194
|
-
max_log_lines: z.number().optional().describe('Maximum number of log lines per job (default:
|
|
194
|
+
max_log_lines: z.number().optional().describe('Maximum number of log lines per job (default: 1000)'),
|
|
195
195
|
}, async ({ build_key, max_log_lines }) => {
|
|
196
196
|
try {
|
|
197
197
|
const result = await client.getBuildResultWithLogs(build_key, {
|
|
@@ -116,7 +116,7 @@ export function registerDeploymentTools(server, client) {
|
|
|
116
116
|
server.tool('bamboo_get_deployment_result', 'Get a specific deployment result with optional logs', {
|
|
117
117
|
deployment_result_id: z.string().describe('The deployment result ID'),
|
|
118
118
|
include_logs: z.boolean().optional().describe('Include log entries (default: false)'),
|
|
119
|
-
max_log_lines: z.number().optional().describe('Maximum number of log lines to return, most recent first (default:
|
|
119
|
+
max_log_lines: z.number().optional().describe('Maximum number of log lines to return, most recent first (default: 1000)'),
|
|
120
120
|
}, async ({ deployment_result_id, include_logs, max_log_lines }) => {
|
|
121
121
|
try {
|
|
122
122
|
const result = await client.getDeploymentResult(deployment_result_id, {
|