Compare commits
1
Commits
3b87b77b7f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb50367921
|
No files matched your search
@@ -37,7 +37,7 @@ jobs:
|
|||||||
version="${GITHUB_REF_NAME#mcp-}"
|
version="${GITHUB_REF_NAME#mcp-}"
|
||||||
binary="ely-eye-mcp"
|
binary="ely-eye-mcp"
|
||||||
if [ "$GOOS" = "windows" ]; then binary="ely-eye-mcp.exe"; fi
|
if [ "$GOOS" = "windows" ]; then binary="ely-eye-mcp.exe"; fi
|
||||||
ldflags="-s -w -X github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli.version=${version}"
|
ldflags="-s -w -X git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli.version=${version}"
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
go build -trimpath -ldflags "$ldflags" -o "dist/${binary}" ./cmd/ely-eye-mcp
|
go build -trimpath -ldflags "$ldflags" -o "dist/${binary}" ./cmd/ely-eye-mcp
|
||||||
base="ely-eye-mcp_${GOOS}_${GOARCH}"
|
base="ely-eye-mcp_${GOOS}_${GOARCH}"
|
||||||
|
|||||||
@@ -70,7 +70,10 @@ go run ./cmd/ely-eye-mcp server --ely-eye-home /path/to/.ely_eye
|
|||||||
|
|
||||||
## Releases
|
## Releases
|
||||||
|
|
||||||
Pushing a `mcp-v*` tag runs `.github/workflows/mcp-release.yml`, which cross-compiles the pure-Go server (CGO disabled) for Linux, macOS, and Windows on amd64 and arm64, then publishes the archives with a `SHA256SUMS` manifest to a GitHub Release. The installers consume those assets.
|
Pushing a `mcp-v*` tag runs `.github/workflows/mcp-release.yml`, which Gitea Actions
|
||||||
|
picks up, cross-compiles the pure-Go server (CGO disabled) for Linux, macOS, and
|
||||||
|
Windows on amd64 and arm64, then publishes the archives with a `SHA256SUMS`
|
||||||
|
manifest to a release on git.zacharyzhang.com. The installers consume those assets.
|
||||||
|
|
||||||
## Security posture
|
## Security posture
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
module github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp
|
module git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp
|
||||||
|
|
||||||
go 1.25.0
|
go 1.25.0
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ function Get-Platform {
|
|||||||
function Resolve-Version {
|
function Resolve-Version {
|
||||||
if ($Version) { return $Version }
|
if ($Version) { return $Version }
|
||||||
try {
|
try {
|
||||||
$releases = Invoke-RestMethod -Uri "https://api.github.com/repos/$Repo/releases" -Headers @{ "User-Agent" = "ely-eye-mcp-installer" }
|
$releases = Invoke-RestMethod -Uri "https://git.zacharyzhang.com/api/v1/repos/$Repo/releases" -Headers @{ "User-Agent" = "ely-eye-mcp-installer" }
|
||||||
}
|
}
|
||||||
catch { return "" }
|
catch { return "" }
|
||||||
$match = $releases | Where-Object { $_.tag_name -like "mcp-*" } | Select-Object -First 1
|
$match = $releases | Where-Object { $_.tag_name -like "mcp-*" } | Select-Object -First 1
|
||||||
@@ -79,8 +79,8 @@ function Build-FromSource {
|
|||||||
function Download-Binary([string]$Tag) {
|
function Download-Binary([string]$Tag) {
|
||||||
$platform = Get-Platform
|
$platform = Get-Platform
|
||||||
$asset = "ely-eye-mcp_$platform.zip"
|
$asset = "ely-eye-mcp_$platform.zip"
|
||||||
$url = "https://github.com/$Repo/releases/download/$Tag/$asset"
|
$url = "https://git.zacharyzhang.com/$Repo/releases/download/$Tag/$asset"
|
||||||
$sumsUrl = "https://github.com/$Repo/releases/download/$Tag/ely-eye-mcp_SHA256SUMS.txt"
|
$sumsUrl = "https://git.zacharyzhang.com/$Repo/releases/download/$Tag/ely-eye-mcp_SHA256SUMS.txt"
|
||||||
$tmp = Join-Path ([IO.Path]::GetTempPath()) ("ely-eye-mcp-" + [Guid]::NewGuid().ToString("N"))
|
$tmp = Join-Path ([IO.Path]::GetTempPath()) ("ely-eye-mcp-" + [Guid]::NewGuid().ToString("N"))
|
||||||
New-Item -ItemType Directory -Force -Path $tmp | Out-Null
|
New-Item -ItemType Directory -Force -Path $tmp | Out-Null
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
# Ely-Eye MCP installer for Linux and macOS.
|
# Ely-Eye MCP installer for Linux and macOS.
|
||||||
#
|
#
|
||||||
# curl -fsSL https://raw.githubusercontent.com/ZacharyZhang-NY/ely-eye/main/ely-eye-mcp/install.sh | bash
|
# curl -fsSL https://git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/raw/branch/main/ely-eye-mcp/install.sh | bash
|
||||||
#
|
#
|
||||||
# By default it downloads a prebuilt, checksum-verified binary for this platform
|
# By default it downloads a prebuilt, checksum-verified binary for this platform
|
||||||
# and needs no toolchain. Run with --method source from a repository checkout to
|
# and needs no toolchain. Run with --method source from a repository checkout to
|
||||||
@@ -79,7 +79,7 @@ sha256() {
|
|||||||
resolve_version() {
|
resolve_version() {
|
||||||
if [[ -n "$VERSION" ]]; then echo "$VERSION"; return 0; fi
|
if [[ -n "$VERSION" ]]; then echo "$VERSION"; return 0; fi
|
||||||
local body
|
local body
|
||||||
body="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases" 2>/dev/null)" || return 0
|
body="$(curl -fsSL "https://git.zacharyzhang.com/api/v1/repos/${REPO}/releases" 2>/dev/null)" || return 0
|
||||||
printf '%s\n' "$body" \
|
printf '%s\n' "$body" \
|
||||||
| grep -oE '"tag_name": *"mcp-[^"]*"' \
|
| grep -oE '"tag_name": *"mcp-[^"]*"' \
|
||||||
| head -n 1 \
|
| head -n 1 \
|
||||||
@@ -97,8 +97,8 @@ download_binary() {
|
|||||||
local tag="$1" platform asset url sums tmp
|
local tag="$1" platform asset url sums tmp
|
||||||
platform="$(detect_platform)"
|
platform="$(detect_platform)"
|
||||||
asset="ely-eye-mcp_${platform}.tar.gz"
|
asset="ely-eye-mcp_${platform}.tar.gz"
|
||||||
url="https://github.com/${REPO}/releases/download/${tag}/${asset}"
|
url="https://git.zacharyzhang.com/${REPO}/releases/download/${tag}/${asset}"
|
||||||
sums="https://github.com/${REPO}/releases/download/${tag}/ely-eye-mcp_SHA256SUMS.txt"
|
sums="https://git.zacharyzhang.com/${REPO}/releases/download/${tag}/ely-eye-mcp_SHA256SUMS.txt"
|
||||||
tmp="$(mktemp -d)"
|
tmp="$(mktemp -d)"
|
||||||
trap 'rm -rf "$tmp"' RETURN
|
trap 'rm -rf "$tmp"' RETURN
|
||||||
echo "Downloading $asset from release $tag."
|
echo "Downloading $asset from release $tag."
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
const maxErrorBody = 4096
|
const maxErrorBody = 4096
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/mcpserver"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/mcpserver"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/setup"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/setup"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
// version is stamped at release build time via -ldflags -X. The default is the
|
// version is stamped at release build time via -ldflags -X. The default is the
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
var profileBudgets = map[string]int64{
|
var profileBudgets = map[string]int64{
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
const storeCardBody = `{"schema_version":11,"atoms":3,"sources":3,"modalities":{"text":2,"image":1},
|
const storeCardBody = `{"schema_version":11,"atoms":3,"sources":3,"modalities":{"text":2,"image":1},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
func directoryServer(t *testing.T, body string, seen *[]string) *httptest.Server {
|
func directoryServer(t *testing.T, body string, seen *[]string) *httptest.Server {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
const manifestBody = `{"cartridge_id":"home_1","name":"home","created_at":"2026-05-01T12:00:00Z",` +
|
const manifestBody = `{"cartridge_id":"home_1","name":"home","created_at":"2026-05-01T12:00:00Z",` +
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
func searchTestServer(t *testing.T, recorded *map[string]any) *httptest.Server {
|
func searchTestServer(t *testing.T, recorded *map[string]any) *httptest.Server {
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package mcpserver
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
// askingServer records the path and query string of every request so a test can
|
// askingServer records the path and query string of every request so a test can
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/contextpack"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/contextpack"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
"github.com/modelcontextprotocol/go-sdk/mcp"
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
func recordingServer(t *testing.T, status int, body string, seen *[]string) *httptest.Server {
|
func recordingServer(t *testing.T, status int, body string, seen *[]string) *httptest.Server {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Store) FetchAtom(ctx context.Context, atomID string) (domain.Atom, error) {
|
func (s *Store) FetchAtom(ctx context.Context, atomID string) (domain.Atom, error) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Store) ListCartridges(ctx context.Context, limit int) ([]domain.Cartridge, error) {
|
func (s *Store) ListCartridges(ctx context.Context, limit int) ([]domain.Cartridge, error) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Store) evalProofsRoot() string {
|
func (s *Store) evalProofsRoot() string {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type proofDir struct {
|
type proofDir struct {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
|
||||||
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
"git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
|
||||||
_ "modernc.org/sqlite"
|
_ "modernc.org/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user