Skip to content

Commit 3771269

Browse files
committed
Add initial implementation
Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
0 parents  commit 3771269

File tree

22 files changed

+2191
-0
lines changed

22 files changed

+2191
-0
lines changed

.github/workflows/build.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Build artifacts
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
build:
11+
name: Build and Test
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
16+
17+
- name: Set up Go
18+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
19+
with:
20+
go-version-file: 'go.mod'
21+
cache: true
22+
23+
- name: Install Task
24+
uses: arduino/setup-task@v2
25+
with:
26+
version: '3.x'
27+
repo-token: ${{ secrets.GITHUB_TOKEN }}
28+
29+
- name: Install dependencies
30+
run: task install
31+
32+
- name: Build
33+
run: task build
34+
35+
- name: Test
36+
run: task test
37+
38+
- name: Upload build artifacts
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: sqlite-mcp
42+
path: build/sqlite-mcp
43+
retention-days: 7

.github/workflows/lint.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Linting
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
15+
16+
- name: Set up Go
17+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
18+
with:
19+
go-version-file: 'go.mod'
20+
cache: true
21+
22+
- name: Run golangci-lint
23+
uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0
24+
with:
25+
args: --timeout=5m

.github/workflows/main.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# These workflows run on every push to the main branch
2+
name: Main Branch Checks
3+
permissions:
4+
contents: read
5+
6+
on:
7+
workflow_dispatch:
8+
push:
9+
branches: [ main ]
10+
11+
jobs:
12+
linting:
13+
name: Linting
14+
uses: ./.github/workflows/lint.yml
15+
tests:
16+
name: Tests
17+
uses: ./.github/workflows/test.yml
18+
build:
19+
name: Build
20+
uses: ./.github/workflows/build.yml
21+
needs: [linting, tests]

.github/workflows/pr.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# These set of workflows run on every pull request
2+
name: PR Checks
3+
permissions:
4+
contents: read
5+
6+
on:
7+
workflow_dispatch:
8+
pull_request:
9+
10+
jobs:
11+
linting:
12+
name: Linting
13+
uses: ./.github/workflows/lint.yml
14+
tests:
15+
name: Tests
16+
uses: ./.github/workflows/test.yml

.github/workflows/test.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Tests
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
test:
11+
name: Test
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
15+
16+
- name: Set up Go
17+
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
18+
with:
19+
go-version-file: 'go.mod'
20+
cache: true
21+
22+
- name: Install Task
23+
uses: arduino/setup-task@v2
24+
with:
25+
version: '3.x'
26+
repo-token: ${{ secrets.GITHUB_TOKEN }}
27+
28+
- name: Test
29+
run: task test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build/

.golangci.yml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
version: "2"
2+
run:
3+
issues-exit-code: 1
4+
output:
5+
formats:
6+
text:
7+
path: stdout
8+
print-linter-name: true
9+
print-issued-lines: true
10+
linters:
11+
default: none
12+
enable:
13+
- depguard
14+
- exhaustive
15+
- goconst
16+
- gocyclo
17+
- gosec
18+
- govet
19+
- ineffassign
20+
- lll
21+
- paralleltest
22+
- promlinter
23+
- revive
24+
- staticcheck
25+
- thelper
26+
- tparallel
27+
- unparam
28+
- unused
29+
settings:
30+
depguard:
31+
rules:
32+
prevent_unmaintained_packages:
33+
list-mode: lax
34+
files:
35+
- $all
36+
- '!$test'
37+
deny:
38+
- pkg: io/ioutil
39+
desc: this is deprecated
40+
gocyclo:
41+
min-complexity: 15
42+
gosec:
43+
excludes:
44+
- G601
45+
lll:
46+
line-length: 130
47+
revive:
48+
severity: warning
49+
rules:
50+
- name: blank-imports
51+
severity: warning
52+
- name: context-as-argument
53+
- name: context-keys-type
54+
- name: duplicated-imports
55+
- name: error-naming
56+
- name: error-return
57+
- name: exported
58+
severity: error
59+
- name: if-return
60+
- name: identical-branches
61+
- name: indent-error-flow
62+
- name: import-shadowing
63+
- name: package-comments
64+
- name: redefines-builtin-id
65+
- name: struct-tag
66+
- name: unconditional-recursion
67+
- name: unnecessary-stmt
68+
- name: unreachable-code
69+
- name: unused-parameter
70+
- name: unused-receiver
71+
- name: unhandled-error
72+
disabled: true
73+
exclusions:
74+
generated: lax
75+
rules:
76+
- linters:
77+
- lll
78+
- gocyclo
79+
- errcheck
80+
- dupl
81+
- gosec
82+
- paralleltest
83+
path: (.+)_test\.go
84+
- linters:
85+
- lll
86+
path: .golangci.yml
87+
paths:
88+
- third_party$
89+
- builtin$
90+
- examples$
91+
formatters:
92+
enable:
93+
- gci
94+
- gofmt
95+
settings:
96+
gci:
97+
sections:
98+
- standard
99+
- default
100+
- prefix(github.com/StacklokLabs/sqlite-mcp)
101+
exclusions:
102+
generated: lax
103+
paths:
104+
- third_party$
105+
- builtin$
106+
- examples$

.ko.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
builds:
2+
- id: sqlite-mcp
3+
dir: .
4+
main: ./cmd/server
5+
ldflags:
6+
- -X main.version={{.Env.VERSION}}
7+
labels:
8+
org.opencontainers.image.created: "{{.Env.CREATION_TIME}}"
9+
org.opencontainers.image.description: "SQLite MCP Server - A Model Context Protocol server for SQLite databases"
10+
org.opencontainers.image.licenses: "Apache-2.0"
11+
org.opencontainers.image.revision: "{{.Env.GITHUB_SHA}}"
12+
org.opencontainers.image.source: "{{.Env.GITHUB_SERVER_URL}}/{{.Env.GITHUB_REPOSITORY}}"
13+
org.opencontainers.image.title: "sqlite-mcp"
14+
org.opencontainers.image.url: "{{.Env.GITHUB_SERVER_URL}}/{{.Env.GITHUB_REPOSITORY}}"
15+
org.opencontainers.image.version: "{{.Env.VERSION}}"
16+
17+
defaultImageName: ghcr.io/stackloklabs/sqlite-mcp

0 commit comments

Comments
 (0)