From 86c5b2973b9bbc411b59b89c276699a4dbc3171e Mon Sep 17 00:00:00 2001 From: Blaine Motsinger Date: Wed, 9 Sep 2026 12:17:58 -0400 Subject: [PATCH 1/5] GH-16: add MIT license --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6de464d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Blaine Motsinger + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file From 3f27dda285b8bcb1de8e2f1cd2674e6067b6c7e4 Mon Sep 17 00:00:00 2001 From: Blaine Motsinger Date: Wed, 9 Sep 2026 12:36:17 -0400 Subject: [PATCH 2/5] GH-16: add license section to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5bfd12c..5a766b4 100644 --- a/README.md +++ b/README.md @@ -193,3 +193,7 @@ Anti-patterns that erase the savings: - Storing whole documents or source code in `detail`. - Mirroring the same rules in both `AGENTS.md` and the store intentlessly. - Running `query_knowledge` with no query against org-level docs (returns every section). + +## License + +MIT — Copyright (c) 2026 Blaine Motsinger. See [LICENSE](LICENSE). From f4ada1621c7c84773705c38a9f1e304261687bab Mon Sep 17 00:00:00 2001 From: Blaine Motsinger Date: Wed, 9 Sep 2026 12:42:20 -0400 Subject: [PATCH 3/5] GH-16: add linux/arm64 to build-all targets --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 52850d8..a0afda6 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ BINARY := knowledge-mcp VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) GOFLAGS := -ldflags "-X main.version=$(VERSION)" -PLATFORMS := linux/amd64 darwin/amd64 darwin/arm64 windows/amd64 +PLATFORMS := linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 .PHONY: all build build-all test clean install lint fmt tidy From 4ec34aa5a2dc30e29a2900149f54751f4d4cb9f0 Mon Sep 17 00:00:00 2001 From: Blaine Motsinger Date: Wed, 9 Sep 2026 12:43:00 -0400 Subject: [PATCH 4/5] GH-16: add release workflow --- .github/workflows/release.yml | 130 ++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..07f8f4f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,130 @@ +name: Release + +on: + workflow_dispatch: + inputs: + version: + description: 'Version number (e.g., 1.0.0)' + required: true + type: string + +jobs: + test: + name: Run Tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '1.25.5' + cache: true + + - name: Run tests + run: go test -v ./... + + build: + name: Build ${{ matrix.goos }}-${{ matrix.goarch }} + runs-on: ${{ matrix.runner }} + needs: test + strategy: + matrix: + include: + - runner: ubuntu-latest + goos: linux + goarch: amd64 + suffix: '' + can_test: true + - runner: ubuntu-latest + goos: linux + goarch: arm64 + suffix: '' + can_test: false # Cross-compiled, can't run natively + - runner: macos-15 + goos: darwin + goarch: amd64 + suffix: '' + can_test: true # Rosetta on arm64 runner + - runner: macos-latest + goos: darwin + goarch: arm64 + suffix: '' + can_test: true + - runner: windows-latest + goos: windows + goarch: amd64 + suffix: '.exe' + can_test: true + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: '1.25.5' + cache: true + + - name: Build binary + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + CGO_ENABLED: '0' + run: | + go build -ldflags="-s -w -X main.version=v${{ github.event.inputs.version }}" -o knowledge-mcp-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }} + + - name: Smoke test binary + if: matrix.can_test + shell: bash + run: | + OUTPUT=$(./knowledge-mcp-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }} --version) + EXPECTED="v${{ github.event.inputs.version }}" + if [ "$OUTPUT" != "$EXPECTED" ]; then + echo "Version mismatch: expected $EXPECTED, got $OUTPUT" + exit 1 + fi + echo "Smoke test passed: $OUTPUT" + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: knowledge-mcp-${{ matrix.goos }}-${{ matrix.goarch }} + path: knowledge-mcp-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }} + + release: + name: Create Release + runs-on: ubuntu-latest + needs: build + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Prepare release assets + run: | + mkdir -p release + find artifacts -type f -name 'knowledge-mcp-*' -exec mv {} release/ \; + ls -la release/ + + - name: Create tag + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git tag -a "v${{ github.event.inputs.version }}" -m "Release v${{ github.event.inputs.version }}" + git push origin "v${{ github.event.inputs.version }}" + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ github.event.inputs.version }} + name: knowledge-mcp v${{ github.event.inputs.version }} + generate_release_notes: true + files: release/* \ No newline at end of file From ef8979bcd7c38551314783d7c767c6e9ef1d1141 Mon Sep 17 00:00:00 2001 From: Blaine Motsinger Date: Wed, 9 Sep 2026 12:55:18 -0400 Subject: [PATCH 5/5] GH-16: rename module to knowledge-mcp --- .agents/conventions.yaml | 2 +- go.mod | 2 +- main.go | 8 ++++---- tools/init.go | 4 ++-- tools/integration_test.go | 6 +++--- tools/list.go | 6 +++--- tools/list_projects.go | 2 +- tools/query.go | 6 +++--- tools/tools_test.go | 6 +++--- tools/update.go | 6 +++--- tools/write.go | 6 +++--- 11 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.agents/conventions.yaml b/.agents/conventions.yaml index 7bc9b75..fbdb1b0 100644 --- a/.agents/conventions.yaml +++ b/.agents/conventions.yaml @@ -8,7 +8,7 @@ entries: Verify: go test ./... and go vet ./... must pass before work is claimed done; go build ./... must compile all packages. Make targets: all (fmt tidy lint test build), build, build-all, test, clean, install, lint (golangci-lint or go vet fallback), fmt, tidy. Build command: make build or go build -o knowledge-mcp . Binary installs to /home/blaine/bin/knowledge-mcp. - Module: github.com/renderorange/agents_knowledge (README title knowledge-mcp). Go style follows the codebase, not external linters. + Module: github.com/renderorange/knowledge-mcp (README title knowledge-mcp). Go style follows the codebase, not external linters. rule: 'gofmt -l and go vet ./... and go test ./... must all pass before claiming a change is done' source: code review, 2026-09-08 date: "2026-09-08" diff --git a/go.mod b/go.mod index 9bdae26..9f6784e 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/renderorange/agents_knowledge +module github.com/renderorange/knowledge-mcp go 1.25.5 diff --git a/main.go b/main.go index 540b9e3..aef2ec9 100644 --- a/main.go +++ b/main.go @@ -16,10 +16,10 @@ import ( "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" - "github.com/renderorange/agents_knowledge/tools" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" + "github.com/renderorange/knowledge-mcp/tools" ) var version = "dev" diff --git a/tools/init.go b/tools/init.go index 76461ed..0e10f64 100644 --- a/tools/init.go +++ b/tools/init.go @@ -7,8 +7,8 @@ import ( "path/filepath" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" "gopkg.in/yaml.v3" ) diff --git a/tools/integration_test.go b/tools/integration_test.go index 38a4cc5..cc8d481 100644 --- a/tools/integration_test.go +++ b/tools/integration_test.go @@ -9,9 +9,9 @@ import ( "testing" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" "gopkg.in/yaml.v3" ) diff --git a/tools/list.go b/tools/list.go index 6efb711..b1f6948 100644 --- a/tools/list.go +++ b/tools/list.go @@ -7,9 +7,9 @@ import ( "strings" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" ) // ListHandler handles the list_knowledge MCP tool. diff --git a/tools/list_projects.go b/tools/list_projects.go index 5df3d4f..e8b5e43 100644 --- a/tools/list_projects.go +++ b/tools/list_projects.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/projects" + "github.com/renderorange/knowledge-mcp/projects" ) // ListProjectsHandler handles the list_projects MCP tool. diff --git a/tools/query.go b/tools/query.go index f2882cb..d6f0758 100644 --- a/tools/query.go +++ b/tools/query.go @@ -6,9 +6,9 @@ import ( "fmt" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" ) // QueryHandler handles the query_knowledge MCP tool. diff --git a/tools/tools_test.go b/tools/tools_test.go index a6e02a5..22c5ff7 100644 --- a/tools/tools_test.go +++ b/tools/tools_test.go @@ -10,9 +10,9 @@ import ( "testing" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" ) func TestInitHandler(t *testing.T) { diff --git a/tools/update.go b/tools/update.go index ffc620e..e65fd1e 100644 --- a/tools/update.go +++ b/tools/update.go @@ -7,9 +7,9 @@ import ( "path/filepath" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" ) // UpdateHandler handles the update_knowledge MCP tool. diff --git a/tools/write.go b/tools/write.go index 6995744..c7e6175 100644 --- a/tools/write.go +++ b/tools/write.go @@ -7,9 +7,9 @@ import ( "path/filepath" "github.com/mark3labs/mcp-go/mcp" - "github.com/renderorange/agents_knowledge/knowledge" - "github.com/renderorange/agents_knowledge/projects" - "github.com/renderorange/agents_knowledge/search" + "github.com/renderorange/knowledge-mcp/knowledge" + "github.com/renderorange/knowledge-mcp/projects" + "github.com/renderorange/knowledge-mcp/search" ) const maxDetailSize = 1024 * 1024 // 1MB