Skip to content

Commit 43c077e

Browse files
committed
feat: first release
- Initial release of Maestro MCP Server - Support for Milvus and Weaviate vector databases - Mock database for testing and development - Comprehensive MCP tool set for vector database operations - Configuration management with YAML and environment variables - Comprehensive test suite with unit, integration, and end-to-end tests - Production-ready features including health checks, logging, and graceful shutdown - Build, test, lint, and deployment scripts - GitHub Actions CI/CD workflows
1 parent 140b203 commit 43c077e

File tree

27 files changed

+5915
-14
lines changed

27 files changed

+5915
-14
lines changed

.env.example

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Maestro MCP Server Environment Configuration
2+
# Copy this file to .env and update the values as needed
3+
4+
# Server Configuration
5+
MAESTRO_MCP_SERVER_HOST=localhost
6+
MAESTRO_MCP_SERVER_PORT=8030
7+
8+
# Database Configuration
9+
MAESTRO_MCP_DATABASE_TYPE=postgres
10+
MAESTRO_MCP_DATABASE_HOST=localhost
11+
MAESTRO_MCP_DATABASE_PORT=5432
12+
MAESTRO_MCP_DATABASE_DATABASE=maestro
13+
MAESTRO_MCP_DATABASE_USERNAME=maestro
14+
MAESTRO_MCP_DATABASE_PASSWORD=password
15+
MAESTRO_MCP_DATABASE_SSL_MODE=disable
16+
17+
# Logging Configuration
18+
MAESTRO_MCP_LOGGING_LEVEL=info
19+
MAESTRO_MCP_LOGGING_FORMAT=json
20+
MAESTRO_MCP_LOGGING_OUTPUT=stdout
21+
22+
# MCP Configuration
23+
MAESTRO_MCP_TOOL_TIMEOUT=15s
24+
25+
# Embedding Configuration
26+
MAESTRO_MCP_EMBEDDING_PROVIDER=openai
27+
MAESTRO_MCP_EMBEDDING_MODEL=text-embedding-ada-002
28+
MAESTRO_MCP_EMBEDDING_API_KEY=your_openai_api_key_here
29+
MAESTRO_MCP_EMBEDDING_URL=
30+
MAESTRO_MCP_EMBEDDING_VECTOR_SIZE=1536
31+
32+
# Vector Database Configuration
33+
MAESTRO_MCP_VECTOR_DB_TYPE=milvus
34+
35+
# Milvus Configuration
36+
MAESTRO_MCP_VECTOR_DB_MILVUS_HOST=localhost
37+
MAESTRO_MCP_VECTOR_DB_MILVUS_PORT=19530
38+
MAESTRO_MCP_VECTOR_DB_MILVUS_USERNAME=
39+
MAESTRO_MCP_VECTOR_DB_MILVUS_PASSWORD=
40+
MAESTRO_MCP_VECTOR_DB_MILVUS_DATABASE=default
41+
42+
# Weaviate Configuration
43+
MAESTRO_MCP_VECTOR_DB_WEAVIATE_URL=http://localhost:8080
44+
MAESTRO_MCP_VECTOR_DB_WEAVIATE_API_KEY=
45+
MAESTRO_MCP_VECTOR_DB_WEAVIATE_TIMEOUT=10s
46+
47+
# Custom Embedding Configuration (for local embedding services)
48+
CUSTOM_EMBEDDING_URL=http://localhost:8000/embed
49+
CUSTOM_EMBEDDING_MODEL=nomic-embed-text
50+
CUSTOM_EMBEDDING_VECTORSIZE=768
51+
CUSTOM_EMBEDDING_API_KEY=your_custom_api_key_here
52+
CUSTOM_EMBEDDING_HEADERS='{"Authorization": "Bearer your_token"}'
53+
54+
# OpenAI Configuration (if using OpenAI embeddings)
55+
OPENAI_API_KEY=your_openai_api_key_here
56+
57+
# Timeout Configuration (optional overrides)
58+
MAESTRO_MCP_TIMEOUTS_HEALTH=30s
59+
MAESTRO_MCP_TIMEOUTS_QUERY=30s
60+
MAESTRO_MCP_TIMEOUTS_WRITE_SINGLE=900s
61+
MAESTRO_MCP_TIMEOUTS_WRITE_BULK=3600s
62+
MAESTRO_MCP_TIMEOUTS_DELETE=60s
63+
MAESTRO_MCP_TIMEOUTS_CLEANUP=60s
64+
MAESTRO_MCP_TIMEOUTS_SETUP_DATABASE=60s
65+
MAESTRO_MCP_TIMEOUTS_LIST_DOCUMENTS=30s
66+
MAESTRO_MCP_TIMEOUTS_COUNT_DOCUMENTS=15s
67+
MAESTRO_MCP_TIMEOUTS_LIST_COLLECTIONS=15s
68+
MAESTRO_MCP_TIMEOUTS_GET_COLLECTION_INFO=30s

.github/workflows/ci.yml

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main, develop ]
8+
9+
env:
10+
GO_VERSION: '1.21'
11+
MAESTRO_MCP_SERVER_HOST: localhost
12+
MAESTRO_MCP_SERVER_PORT: 8030
13+
MAESTRO_MCP_VECTOR_DB_TYPE: milvus
14+
MAESTRO_MCP_EMBEDDING_PROVIDER: openai
15+
MAESTRO_MCP_EMBEDDING_MODEL: text-embedding-ada-002
16+
MAESTRO_MCP_EMBEDDING_API_KEY: test-key
17+
MAESTRO_MCP_EMBEDDING_VECTOR_SIZE: 1536
18+
19+
jobs:
20+
lint:
21+
name: Lint
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
27+
- name: Set up Go
28+
uses: actions/setup-go@v4
29+
with:
30+
go-version: ${{ env.GO_VERSION }}
31+
32+
- name: Install dependencies
33+
run: |
34+
go mod download
35+
go mod verify
36+
37+
- name: Run linter
38+
run: ./lint.sh --skip-security
39+
40+
build:
41+
name: Build
42+
runs-on: ubuntu-latest
43+
needs: lint
44+
steps:
45+
- name: Checkout code
46+
uses: actions/checkout@v4
47+
48+
- name: Set up Go
49+
uses: actions/setup-go@v4
50+
with:
51+
go-version: ${{ env.GO_VERSION }}
52+
53+
- name: Install dependencies
54+
run: |
55+
go mod download
56+
go mod verify
57+
58+
- name: Build
59+
run: ./build.sh
60+
61+
- name: Upload build artifacts
62+
uses: actions/upload-artifact@v3
63+
with:
64+
name: maestro-mcp-binary
65+
path: bin/maestro-mcp
66+
67+
test:
68+
name: Test
69+
runs-on: ubuntu-latest
70+
needs: lint
71+
steps:
72+
- name: Checkout code
73+
uses: actions/checkout@v4
74+
75+
- name: Set up Go
76+
uses: actions/setup-go@v4
77+
with:
78+
go-version: ${{ env.GO_VERSION }}
79+
80+
- name: Install dependencies
81+
run: |
82+
go mod download
83+
go mod verify
84+
85+
- name: Run unit tests
86+
run: ./test.sh unit
87+
88+
- name: Run tests with coverage
89+
run: ./test.sh coverage
90+
91+
- name: Upload coverage reports
92+
uses: codecov/codecov-action@v3
93+
with:
94+
file: ./coverage/coverage.out
95+
flags: unittests
96+
name: codecov-umbrella
97+
fail_ci_if_error: false
98+
99+
integration-test:
100+
name: Integration Test
101+
runs-on: ubuntu-latest
102+
needs: [lint, build]
103+
steps:
104+
- name: Checkout code
105+
uses: actions/checkout@v4
106+
107+
- name: Set up Go
108+
uses: actions/setup-go@v4
109+
with:
110+
go-version: ${{ env.GO_VERSION }}
111+
112+
- name: Install dependencies
113+
run: |
114+
go mod download
115+
go mod verify
116+
117+
- name: Download build artifacts
118+
uses: actions/download-artifact@v3
119+
with:
120+
name: maestro-mcp-binary
121+
path: bin/
122+
123+
- name: Make binary executable
124+
run: chmod +x bin/maestro-mcp
125+
126+
- name: Run integration tests
127+
run: ./test.sh integration
128+
129+
- name: Run end-to-end tests
130+
run: ./e2e.sh
131+
132+
security:
133+
name: Security Scan
134+
runs-on: ubuntu-latest
135+
needs: lint
136+
steps:
137+
- name: Checkout code
138+
uses: actions/checkout@v4
139+
140+
- name: Set up Go
141+
uses: actions/setup-go@v4
142+
with:
143+
go-version: ${{ env.GO_VERSION }}
144+
145+
- name: Install dependencies
146+
run: |
147+
go mod download
148+
go mod verify
149+
150+
- name: Run security scan
151+
run: |
152+
# Install gosec
153+
go install github.com/securecodewarrior/gosec/v2/cmd/gosec@latest
154+
155+
# Run gosec
156+
gosec ./src/...
157+
158+
- name: Run vulnerability check
159+
run: |
160+
# Install govulncheck
161+
go install golang.org/x/vuln/cmd/govulncheck@latest
162+
163+
# Run vulnerability check
164+
govulncheck ./src/...
165+
166+
matrix-test:
167+
name: Matrix Test
168+
runs-on: ${{ matrix.os }}
169+
needs: lint
170+
strategy:
171+
matrix:
172+
os: [ubuntu-latest, macos-latest, windows-latest]
173+
go-version: ['1.21', '1.22']
174+
steps:
175+
- name: Checkout code
176+
uses: actions/checkout@v4
177+
178+
- name: Set up Go
179+
uses: actions/setup-go@v4
180+
with:
181+
go-version: ${{ matrix.go-version }}
182+
183+
- name: Install dependencies
184+
run: |
185+
go mod download
186+
go mod verify
187+
188+
- name: Run tests
189+
run: ./test.sh unit
190+
191+
- name: Build
192+
run: ./build.sh

0 commit comments

Comments
 (0)