acuity-mcp-server 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Cross-platform launcher for Acuity MCP Server
4
+ // Uses only CommonJS syntax compatible with Node 10+
5
+ // No npm dependencies - just spawns the platform-specific script
6
+
7
+ var spawn = require('child_process').spawn;
8
+ var path = require('path');
9
+ var os = require('os');
10
+ var fs = require('fs');
11
+
12
+ var scriptDir = __dirname;
13
+ var isWindows = os.platform() === 'win32';
14
+
15
+ var script = isWindows
16
+ ? path.join(scriptDir, 'acuity-mcp.cmd')
17
+ : path.join(scriptDir, 'acuity-mcp.sh');
18
+
19
+ // Check if script exists
20
+ if (!fs.existsSync(script)) {
21
+ console.error('Error: Could not find launcher script:', script);
22
+ process.exit(1);
23
+ }
24
+
25
+ // Spawn the platform-specific script
26
+ var child = spawn(script, process.argv.slice(2), {
27
+ stdio: 'inherit',
28
+ shell: isWindows
29
+ });
30
+
31
+ child.on('error', function(err) {
32
+ console.error('Error starting Acuity MCP Server:', err.message);
33
+ process.exit(1);
34
+ });
35
+
36
+ child.on('exit', function(code) {
37
+ process.exit(code || 0);
38
+ });
@@ -0,0 +1,109 @@
1
+ @echo off
2
+ setlocal enabledelayedexpansion
3
+
4
+ :: Acuity MCP Server - Auto Node Finder for Windows
5
+ :: Automatically finds Node.js 20+ and runs the MCP server
6
+
7
+ set "SCRIPT_DIR=%~dp0"
8
+ set "SERVER_JS=%SCRIPT_DIR%..\dist\main.js"
9
+ set "MIN_NODE_VERSION=20"
10
+ set "NODE_BIN="
11
+
12
+ :: Check nvm-windows
13
+ if exist "%USERPROFILE%\.nvm" (
14
+ for /d %%d in ("%USERPROFILE%\.nvm\v2*") do (
15
+ if exist "%%d\node.exe" (
16
+ call :check_version "%%d\node.exe"
17
+ if defined NODE_BIN goto :run_server
18
+ )
19
+ )
20
+ )
21
+
22
+ :: Check fnm
23
+ if exist "%USERPROFILE%\.fnm\node-versions" (
24
+ for /d %%d in ("%USERPROFILE%\.fnm\node-versions\v2*") do (
25
+ if exist "%%d\installation\node.exe" (
26
+ call :check_version "%%d\installation\node.exe"
27
+ if defined NODE_BIN goto :run_server
28
+ )
29
+ )
30
+ )
31
+
32
+ :: Check volta
33
+ if exist "%USERPROFILE%\.volta\bin\node.exe" (
34
+ call :check_version "%USERPROFILE%\.volta\bin\node.exe"
35
+ if defined NODE_BIN goto :run_server
36
+ )
37
+
38
+ :: Check Program Files
39
+ if exist "C:\Program Files\nodejs\node.exe" (
40
+ call :check_version "C:\Program Files\nodejs\node.exe"
41
+ if defined NODE_BIN goto :run_server
42
+ )
43
+
44
+ :: Check PATH
45
+ where node >nul 2>&1
46
+ if %errorlevel% equ 0 (
47
+ for /f "tokens=*" %%i in ('where node') do (
48
+ call :check_version "%%i"
49
+ if defined NODE_BIN goto :run_server
50
+ )
51
+ )
52
+
53
+ :: No suitable Node found
54
+ goto :show_error
55
+
56
+ :check_version
57
+ set "test_node=%~1"
58
+ for /f "tokens=1 delims=v." %%v in ('"%test_node%" -v 2^>nul') do (
59
+ set "ver=%%v"
60
+ )
61
+ :: Remove 'v' prefix if present
62
+ set "ver=%ver:v=%"
63
+ if defined ver (
64
+ if %ver% geq %MIN_NODE_VERSION% (
65
+ set "NODE_BIN=%test_node%"
66
+ )
67
+ )
68
+ goto :eof
69
+
70
+ :run_server
71
+ "%NODE_BIN%" "%SERVER_JS%" %*
72
+ goto :end
73
+
74
+ :show_error
75
+ echo.
76
+ echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
77
+ echo ERROR: Node.js 20 or higher is required to run Acuity MCP Server
78
+ echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
79
+ echo.
80
+ echo Required: ^>= 20.0.0
81
+ echo.
82
+ echo ━━━ How to install Node.js 20+ ━━━
83
+ echo.
84
+ echo Option 1 - winget:
85
+ echo ^> winget install OpenJS.NodeJS.LTS
86
+ echo.
87
+ echo Option 2 - Official installer:
88
+ echo https://nodejs.org/en/download/
89
+ echo.
90
+ echo ━━━ Already have Node 20+ installed? ━━━
91
+ echo.
92
+ echo The script searched these locations:
93
+ echo * %%USERPROFILE%%\.nvm\
94
+ echo * %%USERPROFILE%%\.fnm\node-versions\
95
+ echo * %%USERPROFILE%%\.volta\bin\
96
+ echo * C:\Program Files\nodejs\
97
+ echo * PATH environment variable
98
+ echo.
99
+ echo If Node 20+ is installed elsewhere, add PATH to Claude Desktop config:
100
+ echo %%APPDATA%%\Claude\claude_desktop_config.json
101
+ echo.
102
+ echo "env": {
103
+ echo "PATH": "C:\path\to\node;%%PATH%%"
104
+ echo }
105
+ echo.
106
+ exit /b 1
107
+
108
+ :end
109
+ endlocal
@@ -0,0 +1,156 @@
1
+ #!/bin/bash
2
+
3
+ # Acuity MCP Server - Auto Node Finder
4
+ # Automatically finds Node.js 20+ and runs the MCP server
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
7
+ SERVER_JS="$SCRIPT_DIR/../dist/main.js"
8
+ MIN_NODE_VERSION=20
9
+
10
+ # Colors for output
11
+ RED='\033[0;31m'
12
+ GREEN='\033[0;32m'
13
+ YELLOW='\033[0;33m'
14
+ CYAN='\033[0;36m'
15
+ NC='\033[0m' # No Color
16
+
17
+ # Check if a node binary is version 20+
18
+ check_node_version() {
19
+ local node_bin="$1"
20
+ if [ -x "$node_bin" ]; then
21
+ local version=$("$node_bin" -v 2>/dev/null | sed 's/v//' | cut -d. -f1)
22
+ if [ -n "$version" ] && [ "$version" -ge "$MIN_NODE_VERSION" ]; then
23
+ echo "$node_bin"
24
+ return 0
25
+ fi
26
+ fi
27
+ return 1
28
+ }
29
+
30
+ # Find Node.js 20+ in various locations
31
+ find_node() {
32
+ # 1. Check nvm versions (most common for developers)
33
+ if [ -d "$HOME/.nvm/versions/node" ]; then
34
+ for dir in $(ls -d "$HOME/.nvm/versions/node"/v[2-9][0-9]* 2>/dev/null | sort -rV); do
35
+ local node_bin="$dir/bin/node"
36
+ if result=$(check_node_version "$node_bin"); then
37
+ echo "$result"
38
+ return 0
39
+ fi
40
+ done
41
+ fi
42
+
43
+ # 2. Check fnm versions (fast node manager)
44
+ if [ -d "$HOME/.fnm/node-versions" ]; then
45
+ for dir in $(ls -d "$HOME/.fnm/node-versions"/v[2-9][0-9]* 2>/dev/null | sort -rV); do
46
+ local node_bin="$dir/installation/bin/node"
47
+ if result=$(check_node_version "$node_bin"); then
48
+ echo "$result"
49
+ return 0
50
+ fi
51
+ done
52
+ fi
53
+
54
+ # 3. Check volta
55
+ if [ -d "$HOME/.volta/bin" ]; then
56
+ local node_bin="$HOME/.volta/bin/node"
57
+ if result=$(check_node_version "$node_bin"); then
58
+ echo "$result"
59
+ return 0
60
+ fi
61
+ fi
62
+
63
+ # 4. Check homebrew (macOS)
64
+ for node_bin in "/opt/homebrew/bin/node" "/usr/local/bin/node"; do
65
+ if result=$(check_node_version "$node_bin"); then
66
+ echo "$result"
67
+ return 0
68
+ fi
69
+ done
70
+
71
+ # 5. Check common Linux locations
72
+ for node_bin in "/usr/bin/node" "/usr/local/bin/node"; do
73
+ if result=$(check_node_version "$node_bin"); then
74
+ echo "$result"
75
+ return 0
76
+ fi
77
+ done
78
+
79
+ # 6. Check PATH as last resort
80
+ if command -v node &>/dev/null; then
81
+ local node_bin=$(command -v node)
82
+ if result=$(check_node_version "$node_bin"); then
83
+ echo "$result"
84
+ return 0
85
+ fi
86
+ fi
87
+
88
+ return 1
89
+ }
90
+
91
+ # Show error message with install instructions
92
+ show_error() {
93
+ local current_version="$1"
94
+
95
+ echo -e "\n${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
96
+ echo -e "${RED}❌ ERROR: Node.js 20 or higher is required to run Acuity MCP Server${NC}"
97
+ echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"
98
+
99
+ if [ -n "$current_version" ]; then
100
+ echo -e " Found Node.js: ${YELLOW}$current_version${NC} (too old)"
101
+ else
102
+ echo -e " ${YELLOW}No Node.js found${NC}"
103
+ fi
104
+ echo -e " Required: ${GREEN}>= 20.0.0${NC}\n"
105
+
106
+ echo -e "${CYAN}━━━ How to install Node.js 20+ ━━━${NC}\n"
107
+
108
+ # Detect OS
109
+ case "$(uname -s)" in
110
+ Darwin)
111
+ echo -e "${YELLOW}📦 macOS:${NC}\n"
112
+ echo " Option 1 - Homebrew (recommended):"
113
+ echo -e " ${GREEN}$ brew install node@22${NC}\n"
114
+ echo " Option 2 - Official installer:"
115
+ echo -e " \033[4mhttps://nodejs.org/en/download/\033[0m\n"
116
+ ;;
117
+ Linux)
118
+ echo -e "${YELLOW}📦 Linux:${NC}\n"
119
+ echo " Option 1 - NodeSource (recommended):"
120
+ echo -e " ${GREEN}$ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -${NC}"
121
+ echo -e " ${GREEN}$ sudo apt-get install -y nodejs${NC}\n"
122
+ echo " Option 2 - Official binaries:"
123
+ echo -e " \033[4mhttps://nodejs.org/en/download/\033[0m\n"
124
+ ;;
125
+ esac
126
+
127
+ echo -e "${CYAN}━━━ Already have Node 20+ installed? ━━━${NC}\n"
128
+ echo " The script searched these locations:"
129
+ echo " • ~/.nvm/versions/node/"
130
+ echo " • ~/.fnm/node-versions/"
131
+ echo " • ~/.volta/bin/"
132
+ echo " • /opt/homebrew/bin/"
133
+ echo " • /usr/local/bin/"
134
+ echo " • /usr/bin/"
135
+ echo ""
136
+ echo " If Node 20+ is installed elsewhere, add PATH to Claude Desktop config:"
137
+ echo -e " ${YELLOW}~/Library/Application Support/Claude/claude_desktop_config.json${NC}\n"
138
+ echo -e " ${GREEN}\"env\": {"
139
+ echo " \"PATH\": \"/path/to/node/bin:/usr/bin:/bin\""
140
+ echo -e " }${NC}\n"
141
+ }
142
+
143
+ # Main
144
+ NODE_BIN=$(find_node)
145
+
146
+ if [ -z "$NODE_BIN" ]; then
147
+ # Try to get current node version for error message
148
+ if command -v node &>/dev/null; then
149
+ current=$(node -v 2>/dev/null)
150
+ fi
151
+ show_error "$current"
152
+ exit 1
153
+ fi
154
+
155
+ # Run the server with found Node
156
+ exec "$NODE_BIN" "$SERVER_JS" "$@"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acuity-mcp-server",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "MCP server for Acuity Project Management - enables LLM access to project data",
5
5
  "engines": {
6
6
  "node": ">=20"
@@ -8,9 +8,10 @@
8
8
  "type": "module",
9
9
  "main": "dist/index.js",
10
10
  "bin": {
11
- "acuity-mcp-server": "./dist/index.js"
11
+ "acuity-mcp-server": "./bin/acuity-mcp.cjs"
12
12
  },
13
13
  "files": [
14
+ "bin",
14
15
  "dist",
15
16
  "!dist/**/__tests__",
16
17
  "openapi.yaml",