Skip to content

Commit e0111a3

Browse files
jpicklykclaude
andcommitted
docs: update installation instructions and remove outdated scripts
- Replace docker-compose approach with ephemeral container commands - Update README.md to use claude mcp add-json for Claude Code setup - Fix Docker image references to use ghcr.io registry - Remove outdated scripts that used persistent containers: - build-and-run-detached.bat, build-and-run.sh - check-container.bat/sh, debug-container.bat - Update documentation to align with MCP --rm container usage - Add latest tag generation to GitHub Actions workflow 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ff36621 commit e0111a3

File tree

11 files changed

+388
-361
lines changed

11 files changed

+388
-361
lines changed
Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,50 @@
1-
name: Build and Push Docker Image
2-
3-
on:
4-
push:
5-
branches: [ main ]
6-
tags: [ 'v*' ]
7-
pull_request:
8-
branches: [ main ]
9-
10-
env:
11-
REGISTRY: ghcr.io
12-
IMAGE_NAME: ${{ github.repository }}
13-
14-
jobs:
15-
build:
16-
runs-on: ubuntu-latest
17-
permissions:
18-
contents: read
19-
packages: write
20-
21-
steps:
22-
- name: Checkout repository
23-
uses: actions/checkout@v4
24-
25-
- name: Log in to Container Registry
26-
uses: docker/login-action@v3
27-
with:
28-
registry: ${{ env.REGISTRY }}
29-
username: ${{ github.actor }}
30-
password: ${{ secrets.GITHUB_TOKEN }}
31-
32-
- name: Extract metadata
33-
id: meta
34-
uses: docker/metadata-action@v5
35-
with:
36-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
37-
tags: |
38-
type=ref,event=branch
39-
type=ref,event=pr
40-
type=semver,pattern={{version}}
41-
type=semver,pattern={{major}}.{{minor}}
42-
43-
- name: Build and push Docker image
44-
uses: docker/build-push-action@v5
45-
with:
46-
context: .
47-
push: true
48-
tags: ${{ steps.meta.outputs.tags }}
49-
labels: ${{ steps.meta.outputs.labels }}
1+
name: Build and Push Docker Image
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
tags: [ 'v*' ]
7+
pull_request:
8+
branches: [ main ]
9+
10+
env:
11+
REGISTRY: ghcr.io
12+
IMAGE_NAME: ${{ github.repository }}
13+
14+
jobs:
15+
build:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
contents: read
19+
packages: write
20+
21+
steps:
22+
- name: Checkout repository
23+
uses: actions/checkout@v4
24+
25+
- name: Log in to Container Registry
26+
uses: docker/login-action@v3
27+
with:
28+
registry: ${{ env.REGISTRY }}
29+
username: ${{ github.actor }}
30+
password: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: Extract metadata
33+
id: meta
34+
uses: docker/metadata-action@v5
35+
with:
36+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
37+
tags: |
38+
type=ref,event=branch
39+
type=ref,event=pr
40+
type=semver,pattern={{version}}
41+
type=semver,pattern={{major}}.{{minor}}
42+
type=raw,value=latest,enable=${{ github.ref_type == 'tag' }}
43+
44+
- name: Build and push Docker image
45+
uses: docker/build-push-action@v5
46+
with:
47+
context: .
48+
push: true
49+
tags: ${{ steps.meta.outputs.tags }}
50+
labels: ${{ steps.meta.outputs.labels }}

README.md

Lines changed: 76 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,33 @@ A Kotlin implementation of the Model Context Protocol (MCP) server for comprehen
2727

2828
## Quick Start (2 Minutes)
2929

30-
### 1. Run with Docker
30+
### 1. Pull or Build Docker Image
31+
32+
#### Option A: Production Image (Recommended)
3133
```bash
32-
# Quick test run
33-
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator
34+
# Pull latest release
35+
docker pull ghcr.io/jpicklyk/task-orchestrator:latest
36+
37+
# Or specific version
38+
docker pull ghcr.io/jpicklyk/task-orchestrator:1.0.0
39+
40+
# Or latest build from main branch
41+
docker pull ghcr.io/jpicklyk/task-orchestrator:main
42+
```
3443

35-
# Or build locally
44+
#### Option B: Build Locally (Development)
45+
```bash
46+
# Build locally
3647
./scripts/docker-clean-and-build.bat # Windows
48+
# Or manually: docker build -t mcp-task-orchestrator:dev .
3749
```
3850

39-
### 2. Configure Claude Desktop
51+
### 2. Configure Claude Desktop or Claude Code
52+
53+
#### For Claude Desktop
4054
Add to your `claude_desktop_config.json`:
55+
56+
**Production Configuration**
4157
```json
4258
{
4359
"mcpServers": {
@@ -46,14 +62,56 @@ Add to your `claude_desktop_config.json`:
4662
"args": [
4763
"run", "--rm", "-i",
4864
"--volume", "mcp-task-data:/app/data",
49-
"mcp-task-orchestrator"
65+
"ghcr.io/jpicklyk/task-orchestrator:latest"
5066
]
5167
}
5268
}
5369
}
5470
```
5571

56-
### 3. Start Using
72+
**Local Development Configuration**
73+
```json
74+
{
75+
"mcpServers": {
76+
"task-orchestrator": {
77+
"command": "docker",
78+
"args": [
79+
"run", "--rm", "-i",
80+
"--volume", "mcp-task-data:/app/data",
81+
"mcp-task-orchestrator:dev"
82+
]
83+
}
84+
}
85+
}
86+
```
87+
88+
#### For Claude Code
89+
Use the JSON configuration command:
90+
91+
```bash
92+
# Production version (latest release)
93+
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","ghcr.io/jpicklyk/task-orchestrator:latest"]}'
94+
95+
# Specific version
96+
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","ghcr.io/jpicklyk/task-orchestrator:1.0.0"]}'
97+
98+
# Latest from main branch
99+
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","ghcr.io/jpicklyk/task-orchestrator:main"]}'
100+
101+
# Local development version (after building locally)
102+
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","mcp-task-orchestrator:dev"]}'
103+
```
104+
105+
### 3. Test Connection (Optional)
106+
```bash
107+
# Test the Docker container runs correctly
108+
docker run --rm -i -v mcp-task-data:/app/data ghcr.io/jpicklyk/task-orchestrator:latest
109+
110+
# Test MCP connection (requires Node.js)
111+
node scripts/test-mcp-connection.js
112+
```
113+
114+
### 4. Start Using
57115
Ask Claude:
58116
- "Create a new project for my web application"
59117
- "Show me the project overview"
@@ -97,20 +155,9 @@ Project (optional)
97155
- **9 Section Management Tools** - Rich documentation
98156
- **9 Template Management Tools** - Workflow automation
99157

100-
## Installation Options
158+
## Alternative Installation Options
101159

102-
### Option 1: Docker (Recommended)
103-
```bash
104-
# Build and run
105-
./scripts/docker-clean-and-build.bat
106-
107-
# Configure environment
108-
MCP_TRANSPORT=stdio
109-
DATABASE_PATH=data/tasks.db
110-
USE_FLYWAY=true
111-
```
112-
113-
### Option 2: Direct JAR
160+
### Option 1: Direct JAR (Without Docker)
114161
```bash
115162
# Build
116163
./gradlew build
@@ -119,6 +166,15 @@ USE_FLYWAY=true
119166
java -jar build/libs/mcp-task-orchestrator-*.jar
120167
```
121168

169+
### Option 2: Development Environment Variables
170+
```bash
171+
# Configure environment for local development
172+
MCP_TRANSPORT=stdio
173+
DATABASE_PATH=data/tasks.db
174+
USE_FLYWAY=true
175+
MCP_DEBUG=true # Enable debug logging
176+
```
177+
122178
## Configuration
123179

124180
| Variable | Description | Default |

docs/database-migrations.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,17 +234,20 @@ Flyway Community Edition doesn't support automatic rollbacks. For complex migrat
234234

235235
### Manual Rollback Process
236236
```bash
237-
# 1. Stop the application
238-
docker-compose down
237+
# 1. Stop the application (if running in background)
238+
docker stop mcp-task-orchestrator 2>/dev/null || true
239239

240240
# 2. Connect to database and run rollback SQL
241241
sqlite3 data/tasks.db < rollback_v5.sql
242242

243243
# 3. Update Flyway history
244244
sqlite3 data/tasks.db "DELETE FROM flyway_schema_history WHERE version = '5';"
245245

246-
# 4. Restart application
247-
docker-compose up
246+
# 4. Restart application (production)
247+
docker run --rm -i -v mcp-task-data:/app/data ghcr.io/jpicklyk/task-orchestrator:latest
248+
249+
# Or restart local development
250+
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator:dev
248251
```
249252

250253
## Troubleshooting
@@ -275,8 +278,11 @@ EXPLAIN QUERY PLAN SELECT * FROM table_name WHERE condition;
275278
### Debugging Migrations
276279

277280
```bash
278-
# Enable debug logging
279-
LOG_LEVEL=debug USE_FLYWAY=true docker-compose up
281+
# Enable debug logging (production)
282+
docker run --rm -i -v mcp-task-data:/app/data -e LOG_LEVEL=debug -e USE_FLYWAY=true ghcr.io/jpicklyk/task-orchestrator:latest
283+
284+
# Or with local development
285+
docker run --rm -i -v mcp-task-data:/app/data -e LOG_LEVEL=debug -e USE_FLYWAY=true mcp-task-orchestrator:dev
280286

281287
# Check Flyway schema history
282288
sqlite3 data/tasks.db "SELECT * FROM flyway_schema_history ORDER BY installed_rank;"

docs/quick-start.md

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,29 @@ Get MCP Task Orchestrator running with Claude Desktop in under 2 minutes. This g
1919

2020
## Step 1: Get the Docker Image
2121

22-
### Option A: Pull Pre-built Image (Fastest)
22+
### Option A: Pull Production Image (Fastest)
2323
```bash
24-
# Pull the latest image
25-
docker pull mcp-task-orchestrator:latest
24+
# Pull the latest release
25+
docker pull ghcr.io/jpicklyk/task-orchestrator:latest
26+
27+
# Or specific version
28+
docker pull ghcr.io/jpicklyk/task-orchestrator:1.0.0
29+
30+
# Or latest build from main branch
31+
docker pull ghcr.io/jpicklyk/task-orchestrator:main
2632
```
2733

28-
### Option B: Build Locally (Recommended for Development)
34+
### Option B: Build Locally (Development)
2935
```bash
3036
# Clone the repository
3137
git clone https://github.com/jpicklyk/task-orchestrator.git
3238
cd task-orchestrator
3339

34-
# Build using the provided script
35-
# Windows
40+
# Build using the provided script (Windows)
3641
./scripts/docker-clean-and-build.bat
3742

38-
# Linux/Mac
39-
./scripts/docker-clean-and-build.sh
43+
# Or manually
44+
docker build -t mcp-task-orchestrator:dev .
4045
```
4146

4247
---
@@ -46,8 +51,11 @@ cd task-orchestrator
4651
Verify the container works:
4752

4853
```bash
49-
# Quick test run
50-
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator
54+
# Quick test run (production image)
55+
docker run --rm -i -v mcp-task-data:/app/data ghcr.io/jpicklyk/task-orchestrator:latest
56+
57+
# Or test local build
58+
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator:dev
5159
```
5260

5361
You should see MCP server startup messages. Press `Ctrl+C` to stop.
@@ -66,6 +74,26 @@ You should see MCP server startup messages. Press `Ctrl+C` to stop.
6674

6775
Open `claude_desktop_config.json` and add:
6876

77+
#### Production Configuration (Recommended)
78+
```json
79+
{
80+
"mcpServers": {
81+
"task-orchestrator": {
82+
"command": "docker",
83+
"args": [
84+
"run",
85+
"--rm",
86+
"-i",
87+
"--volume",
88+
"mcp-task-data:/app/data",
89+
"ghcr.io/jpicklyk/task-orchestrator:latest"
90+
]
91+
}
92+
}
93+
}
94+
```
95+
96+
#### Local Development Configuration
6997
```json
7098
{
7199
"mcpServers": {
@@ -77,7 +105,7 @@ Open `claude_desktop_config.json` and add:
77105
"-i",
78106
"--volume",
79107
"mcp-task-data:/app/data",
80-
"mcp-task-orchestrator"
108+
"mcp-task-orchestrator:dev"
81109
]
82110
}
83111
}
@@ -227,9 +255,13 @@ docker system prune
227255
Verify your setup with this simple test:
228256

229257
```bash
230-
# Test the container directly
258+
# Test the container directly (production)
259+
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | \
260+
docker run --rm -i -v mcp-task-data:/app/data ghcr.io/jpicklyk/task-orchestrator:latest
261+
262+
# Or test local build
231263
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | \
232-
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator
264+
docker run --rm -i -v mcp-task-data:/app/data mcp-task-orchestrator:dev
233265
```
234266

235267
You should see a list of available tools.
@@ -250,7 +282,7 @@ Customize behavior with environment variables:
250282
"--volume", "mcp-task-data:/app/data",
251283
"--env", "MCP_DEBUG=true",
252284
"--env", "DATABASE_PATH=/app/data/my-tasks.db",
253-
"mcp-task-orchestrator"
285+
"ghcr.io/jpicklyk/task-orchestrator:latest"
254286
]
255287
}
256288
}

0 commit comments

Comments
 (0)