@akms/mcp 0.3.2 → 0.4.0
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.
- package/CHANGELOG.md +14 -0
- package/README.md +77 -109
- package/lib/cli.js +683 -654
- package/lib/cli.js.map +1 -0
- package/lib/db.js +8423 -0
- package/lib/db.js.map +1 -0
- package/lib/s3.js +4339 -0
- package/lib/s3.js.map +1 -0
- package/lib/ssh.js +7854 -0
- package/lib/ssh.js.map +1 -0
- package/lib/wsl.js +7256 -0
- package/lib/wsl.js.map +1 -0
- package/package.json +45 -6
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@akms/mcp`.
|
|
4
4
|
|
|
5
|
+
## [0.4.0] - 2026-10-27
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Ship setup and the Database, SSH, WSL and S3 servers as one `@akms/mcp` package. The only command is `akms-mcp`; server entries use `lib/db.js`, `lib/ssh.js`, `lib/wsl.js` and `lib/s3.js`.
|
|
10
|
+
- Add a reviewed Migrate registry step that moves old direct paths and standard npx entries to `@akms/mcp`. Preserve launches waiting for the unified runtime; keep registry version 2.
|
|
11
|
+
- Group every kind: each AI service gets one `akms_<kind>` entry per kind. Remove the per-connection layout and the switch between layouts; Migrate registry groups kinds an older setup listed one entry per connection, and a per-connection default.
|
|
12
|
+
- Combine installation, updates and migration in Runtime. Show migration only when it can apply and display old/new package versions, list the upgrade steps while one is unfinished, offer **Update launch commands** only when a grouped entry no longer starts the installed runtime, and offer removal of unused legacy packages after checking client references; removal defaults to No.
|
|
13
|
+
- Each kind's screen lists only its connections; Register, Sync and Runtime are in the main menu, which marks Runtime when an update or registry migration is available.
|
|
14
|
+
- Consolidate user installation, security and upgrade guidance in README, with kind-specific configuration and tool guides under `docs/`.
|
|
15
|
+
- The separate `@akms/mcp-db`, `@akms/mcp-ssh`, `@akms/mcp-wsl` and `@akms/mcp-s3` packages are superseded and will be deprecated. Existing legacy entries remain migration sources.
|
|
16
|
+
|
|
17
|
+
Earlier kind-specific release histories: [Database](docs/db/CHANGELOG.md), [SSH](docs/ssh/CHANGELOG.md), [WSL](docs/wsl/CHANGELOG.md), [S3](docs/s3/CHANGELOG.md).
|
|
18
|
+
|
|
5
19
|
## [0.3.2] - 2026-10-26
|
|
6
20
|
|
|
7
21
|
### Changed
|
package/README.md
CHANGED
|
@@ -1,171 +1,139 @@
|
|
|
1
1
|
# @akms/mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP servers for PostgreSQL databases, SSH hosts, Windows Subsystem for Linux (WSL) and S3 buckets, with one setup menu and one shared connection catalog.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
npx -y --prefer-online @akms/mcp@latest
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Requires **Node.js 22+ and npm**. WSL setup runs from Windows.
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
? AKMS MCP · Connection setup
|
|
13
|
-
❯ Database PostgreSQL connections
|
|
14
|
-
SSH Remote hosts
|
|
15
|
-
WSL Local Linux distros · Windows
|
|
16
|
-
S3 AWS S3 and S3-compatible buckets
|
|
17
|
-
────────────────────────
|
|
18
|
-
Register Choose AI services once
|
|
19
|
-
Sync Review and retry shared settings
|
|
20
|
-
Runtime AKMS installation and direct launches
|
|
21
|
-
Updates Check installed MCP releases
|
|
22
|
-
Quit
|
|
23
|
-
|
|
24
|
-
↑↓ move · enter select · esc back
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Use **Register** to select Claude Code, Codex, Claude Desktop and/or Cursor once. Every menu remains available before registration; Add displays a Register instruction until at least one service is selected. Then choose a server type and save a connection: its package applies the entry to every registered service. Exiting its settings returns to this menu. **Sync** reviews differences and retries pending changes. Register and Sync run locally without installing a child MCP.
|
|
5
|
+
Choose Claude Code, Codex, Claude Desktop and/or Cursor once. Connections you save are applied to every registered AI service. Each connection keeps its own credentials and access policy.
|
|
28
6
|
|
|
29
|
-
**
|
|
30
|
-
|
|
31
|
-
## Install and run
|
|
32
|
-
|
|
33
|
-
```sh
|
|
34
|
-
npm install -g @akms/mcp@latest
|
|
35
|
-
akms-mcp
|
|
36
|
-
```
|
|
7
|
+
Requires **Node.js 22+ and npm**. WSL runs on Windows with an installed Linux distribution.
|
|
37
8
|
|
|
38
|
-
|
|
9
|
+
## Install and set up
|
|
39
10
|
|
|
40
11
|
```sh
|
|
41
|
-
akms
|
|
42
|
-
akms-mcp db
|
|
43
|
-
akms-mcp ssh
|
|
44
|
-
akms-mcp wsl
|
|
45
|
-
akms-mcp s3
|
|
46
|
-
akms-mcp sync
|
|
12
|
+
npx -y @akms/mcp@latest
|
|
47
13
|
```
|
|
48
14
|
|
|
49
|
-
|
|
15
|
+
1. Open **Runtime** and choose **Install AKMS MCP**. This installs one runtime for all four kinds.
|
|
16
|
+
2. Open **Register**, select the AI services you use, then choose **Apply registration** and confirm the review.
|
|
17
|
+
3. Open **Database**, **SSH**, **WSL** or **S3**, add a connection and save it. The kind's screen contains its connections and a Back action; shared settings are in the main menu.
|
|
18
|
+
4. Restart or reconnect your AI clients to load the saved connections.
|
|
50
19
|
|
|
51
|
-
|
|
20
|
+
Add requires at least one registered service. Existing matching connections are imported when you apply registration; differing versions remain available for review in **Sync > Import existing connections**.
|
|
52
21
|
|
|
53
|
-
|
|
22
|
+
You can open a kind's setup directly:
|
|
54
23
|
|
|
55
24
|
```sh
|
|
56
|
-
npx -y
|
|
25
|
+
npx -y @akms/mcp@latest db
|
|
26
|
+
npx -y @akms/mcp@latest ssh
|
|
27
|
+
npx -y @akms/mcp@latest wsl
|
|
28
|
+
npx -y @akms/mcp@latest s3
|
|
57
29
|
```
|
|
58
30
|
|
|
59
|
-
|
|
60
|
-
2. Open **Register**, select your AI services, then choose **Apply registration** and confirm the review. Matching existing connections are imported into the shared catalog, and their individual client entries are replaced by one `akms_<kind>` entry per service.
|
|
61
|
-
3. Answer **Yes** to **Compare existing settings and choose which to share?** when versions differ, even if only their descriptions differ. Select the connection, choose **Use 1** or **Use 2**, keep the shared connection name to replace its old entries, and confirm **Import ... and apply it?**. If you defer this choice, use **Import existing connections** or reopen Register and Apply to return to the comparison.
|
|
62
|
-
4. Run **Sync** if any saved changes remain unfinished.
|
|
63
|
-
5. Restart or reconnect your AI clients to load the new entries. In Codex, start a new thread and archive the old threads whose servers you want to retire: each thread owns its MCP processes, and archiving stopped those processes in the isolated Codex 0.164.0 check.
|
|
64
|
-
6. Call `db_catalog_status`, `ssh_catalog_status`, `wsl_catalog_status` or `s3_catalog_status` for each kind you use and check its loaded and skipped connections. Tools now include the connection prefix, such as `pg_alpha__db_query` or `ssh_dev__ssh_exec`.
|
|
31
|
+
To install the setup command globally instead:
|
|
65
32
|
|
|
66
|
-
|
|
33
|
+
```sh
|
|
34
|
+
npm install -g @akms/mcp@latest
|
|
35
|
+
akms-mcp
|
|
36
|
+
```
|
|
67
37
|
|
|
68
|
-
|
|
38
|
+
`akms-mcp setup` and `akms-mcp config` open the same main menu. `akms-mcp register` and `akms-mcp sync` open the shared registration and comparison screens. `--target codex` preselects Codex in Register; saves still apply to all registered services. Run `akms-mcp --help` for the command reference.
|
|
69
39
|
|
|
70
|
-
**
|
|
40
|
+
The package exposes **one command, `akms-mcp`**. Database, SSH, WSL and S3 servers have separate entry files inside the same package; they do not need separate npm installations.
|
|
71
41
|
|
|
72
|
-
|
|
42
|
+
## Choose a connection kind
|
|
73
43
|
|
|
74
|
-
|
|
44
|
+
### Database
|
|
75
45
|
|
|
76
|
-
|
|
46
|
+
Query PostgreSQL directly or through an SSH tunnel. SQL goes through a PostgreSQL parser, with optional read-only mode, DDL restrictions, statement timeouts and result limits. See [Database connections, configuration and tools](docs/db.md).
|
|
77
47
|
|
|
78
|
-
|
|
48
|
+
### SSH
|
|
79
49
|
|
|
80
|
-
|
|
50
|
+
Run commands, keep working-directory sessions, and transfer files over SFTP. Configure a private key, password or SSH agent, optional jump hosts, host-key pinning and per-host command/path rules. See [SSH connections, configuration and tools](docs/ssh.md).
|
|
81
51
|
|
|
82
|
-
|
|
52
|
+
### WSL
|
|
83
53
|
|
|
84
|
-
|
|
54
|
+
Run commands and work with files in a registered Linux distribution and user on Windows. Command and file policies include additional protection for Windows paths mounted under `/mnt`. See [WSL connections, configuration and tools](docs/wsl.md).
|
|
85
55
|
|
|
86
|
-
|
|
56
|
+
### S3
|
|
87
57
|
|
|
88
|
-
|
|
58
|
+
List objects, inspect and edit UTF-8 content, and upload or download files in one bucket and optional key prefix. Supports AWS S3 and explicitly configured S3-compatible endpoints. See [S3 connections, configuration and tools](docs/s3.md).
|
|
89
59
|
|
|
90
|
-
|
|
60
|
+
## Runtime and updates
|
|
91
61
|
|
|
92
|
-
**Runtime
|
|
62
|
+
**Runtime** installs and updates the single `@akms/mcp` runtime. Choose **Check for updates**, then **Update to <version>** when a newer release is available. Opening the main menu does not query npm: **Update available <version>** means the installed runtime is older than the setup version already running. A linked development installation is shown as such and is never offered an update.
|
|
93
63
|
|
|
94
|
-
|
|
64
|
+
Runtime also contains **Migrate registry** when changes are ready to apply, **Update launch commands** when an `akms_<kind>` entry no longer starts the installed runtime (for example after Node moved), and **Remove old packages** when unused legacy installations can be removed. While an upgrade from the separate packages is unfinished, Runtime lists its steps (install, migrate, remove old packages) and marks each done, next or blocked.
|
|
95
65
|
|
|
96
|
-
|
|
66
|
+
The catalog directory is `~/.akms/mcp`, or `$AKMS_MCP_HOME` when set. Runtime installs below that directory:
|
|
97
67
|
|
|
98
|
-
|
|
68
|
+
| Platform | Runtime prefix | Package directory |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| Windows | `<catalog>/runtime` | `<catalog>/runtime/node_modules/@akms/mcp` |
|
|
71
|
+
| macOS / Linux | `<catalog>/runtime` | `<catalog>/runtime/lib/node_modules/@akms/mcp` |
|
|
99
72
|
|
|
100
|
-
|
|
73
|
+
Saved MCP entries start Node directly with `lib/db.js`, `lib/ssh.js`, `lib/wsl.js` or `lib/s3.js`. npm installation runs during setup; an AI client's server connection does not keep an npm/npx wrapper running.
|
|
101
74
|
|
|
102
|
-
|
|
75
|
+
After saving changed settings or updating the runtime, setup checks MCP startup using `initialize` and `tools/list`. This check does not execute database, SSH, WSL or S3 tools. Fix any startup failures before reconnecting clients. Running processes keep their loaded code until restarted.
|
|
103
76
|
|
|
104
|
-
|
|
77
|
+
## How connections appear in AI services
|
|
105
78
|
|
|
106
|
-
|
|
79
|
+
Connections are grouped by kind: each AI service gets one entry per kind. Six database connections appear as one `akms_db` entry and four SSH hosts as one `akms_ssh` entry. Each AI client session starts one process per kind. Passwords stay in the AKMS catalog; a service entry holds only the command that starts its server.
|
|
107
80
|
|
|
108
|
-
|
|
81
|
+
Each server reads a catalog snapshot at startup. Tools include the saved connection name, such as `pg_main__db_query` or `remote_main__ssh_exec`. Connections open lazily; listing tools does not connect to remote services. Call `db_catalog_status`, `ssh_catalog_status`, `wsl_catalog_status` or `s3_catalog_status` to inspect loaded and skipped connections without printing credentials. If the catalog is missing or invalid, a newly started server exposes its status tool so the problem remains visible.
|
|
109
82
|
|
|
110
|
-
|
|
83
|
+
Connection names use ASCII letters, digits, underscores or hyphens: Database up to 35 characters, SSH/WSL up to 30, and S3 up to 37. The names `akms_db`, `akms_ssh`, `akms_wsl` and `akms_s3` are reserved.
|
|
111
84
|
|
|
112
|
-
|
|
85
|
+
## Register, compare and import
|
|
113
86
|
|
|
114
|
-
|
|
87
|
+
**Register** shares the service selection across all kinds. Newly registered services receive saved connections. Unregistering removes only AKMS-managed entries from that service and keeps the catalog.
|
|
115
88
|
|
|
116
|
-
|
|
89
|
+
**Sync** compares saved settings with client settings and retries unfinished changes. Select an item to see the AKMS version beside the current service version, then choose which one to use. Secret values stay hidden in comparisons. Changes made outside setup remain intact until you approve a version.
|
|
117
90
|
|
|
118
|
-
|
|
91
|
+
When Sync shows **Not yet imported**, choose **Import existing connections** on that screen. Review the versions and choose one, or use a new connection name to keep both. A runtime wait is shown separately from a failed write; retained entries identify the services in which they remain.
|
|
119
92
|
|
|
120
|
-
|
|
93
|
+
## Upgrading from 0.3.x to 0.4.0
|
|
121
94
|
|
|
122
|
-
|
|
95
|
+
Versions 0.3.x and earlier used the separate `@akms/mcp-db`, `@akms/mcp-ssh`, `@akms/mcp-wsl` and `@akms/mcp-s3` packages. Version 0.4.0 includes these servers in `@akms/mcp`.
|
|
123
96
|
|
|
124
|
-
|
|
97
|
+
1. Run `npx -y @akms/mcp@latest` to open the current setup.
|
|
98
|
+
2. Open **Runtime**. The main menu marks it **Not installed** until the unified runtime is installed, then **Registry update available**. Choose **Install AKMS MCP** first when it is offered.
|
|
99
|
+
3. Choose **Migrate registry** in Runtime when it is available. Review the old/new package versions, launch paths and proposed replacements, then approve the migration; its apply confirmation defaults to **No**.
|
|
100
|
+
4. Applying the migration runs synchronization to rewrite managed client entries. Open **Sync** to resolve retained external edits or retry unfinished writes. A kind still listed one entry per connection is grouped into `akms_<kind>`, and the registry remains version 2.
|
|
101
|
+
5. Open **Runtime > Remove old packages** when it is offered. It lists legacy packages only when the catalog and inspected client settings no longer use them. Removal is optional and defaults to **No**; finish migration and Sync before removing packages still in use.
|
|
102
|
+
6. Restart or reconnect your AI clients to replace running servers.
|
|
103
|
+
7. Call each kind's `*_catalog_status` tool and confirm its loaded connections.
|
|
125
104
|
|
|
126
|
-
The
|
|
105
|
+
The new target is `node .../node_modules/@akms/mcp/lib/<kind>.js --catalog`. Migrate registry moves old direct paths and standard npx entries, and groups connections still listed one entry each. A connection saved with a custom command is not started on its own any more; its settings load in the grouped entry. Externally edited entries require review. If installation is deferred or fails, old launches are kept; install from **Runtime**, then choose **Migrate registry** there.
|
|
127
106
|
|
|
128
|
-
|
|
129
|
-
npx -y --prefer-online @akms/mcp@latest
|
|
130
|
-
```
|
|
107
|
+
## Upgrading from 0.2.x
|
|
131
108
|
|
|
132
|
-
|
|
109
|
+
For clients with individual npx entries and no shared catalog:
|
|
133
110
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
| AWS S3 | `S3_BUCKET`, `S3_REGION`, `S3_AUTH=static`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY` | Existing bucket and credentials permitted to access it; temporary credentials also need `S3_SESSION_TOKEN`. With an available AWS credential provider, omit the three static-auth fields. |
|
|
140
|
-
| S3-compatible | `S3_BACKEND=compatible`, `S3_BUCKET`, `S3_ENDPOINT`, `S3_REGION`, `S3_AUTH=static`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY` | Existing bucket, service endpoint, signing region and credentials. |
|
|
111
|
+
1. Run `npx -y @akms/mcp@latest`, open **Runtime** and choose **Install AKMS MCP**.
|
|
112
|
+
2. Open **Register**, select your services and apply. Matching copies become one shared connection; differing copies stay unchanged until you choose a version.
|
|
113
|
+
3. Complete the offered comparison, or use **Sync > Import existing connections**. Review description-only differences too. Keep the connection name to replace its old entries, or choose a new name to keep both.
|
|
114
|
+
4. Run **Sync** to finish pending changes. If **Registry update available** appears, review **Runtime > Migrate registry** as described above.
|
|
115
|
+
5. Restart or reconnect clients, then check the appropriate `*_catalog_status` tools.
|
|
141
116
|
|
|
142
|
-
|
|
117
|
+
If you register before installing the runtime, **Waiting for runtime** is a normal pending state. Existing entries stay until the replacement is ready. Install from **Runtime**, then use **Runtime > Migrate registry** if offered and **Sync** to finish. Installing the runtime alone does not finish the conversion.
|
|
143
118
|
|
|
144
|
-
|
|
119
|
+
Each client session owns its MCP processes. Start a fresh session or thread after upgrading, and close old sessions whose servers you want to stop.
|
|
145
120
|
|
|
146
|
-
|
|
121
|
+
## Catalog security and recovery
|
|
147
122
|
|
|
148
|
-
|
|
123
|
+
The shared catalog is `~/.akms/mcp/registry.json`, or `$AKMS_MCP_HOME/registry.json`. It contains complete connection settings, including passwords and secret values **in plaintext**. Grouped AI client entries hold no connection credentials; manual or older entries that have not been imported still hold their own values. The previous revision, `registry.previous.json`, also contains saved credentials. SSH private-key settings store file paths, not the key files themselves.
|
|
149
124
|
|
|
150
|
-
|
|
125
|
+
On POSIX, new catalog files request mode `0600` and new catalog directories `0700`; existing permissions are not tightened. Windows uses inherited parent-directory ACLs. Check access permissions when choosing a custom location.
|
|
151
126
|
|
|
152
|
-
|
|
153
|
-
|---|---|---|
|
|
154
|
-
| Database | `@akms/mcp-db` | `config` |
|
|
155
|
-
| SSH | `@akms/mcp-ssh` | `config` |
|
|
156
|
-
| WSL | `@akms/mcp-wsl` | `config` |
|
|
157
|
-
| S3 | `@akms/mcp-s3` | `config` |
|
|
127
|
+
**Keep both catalog files private:** do not commit them, share them, copy them to another person or PC, paste their contents into chats/issues/AI conversations, or ask an AI agent to print them. Exclude them from cloud sync and shared backups, or protect those copies. If exposed, change the affected passwords or rotate the affected keys/tokens, then update the saved connections.
|
|
158
128
|
|
|
159
|
-
|
|
129
|
+
SSH local-transfer guards block the standard `.akms/mcp` catalog tree and also protect the two catalog files at a custom `AKMS_MCP_HOME` when available to the process. WSL's Windows-path checks apply through `/mnt/<drive>/`; remote SSH paths and native Linux paths have no catalog-specific block. These guards do not replace filesystem permissions or private storage.
|
|
160
130
|
|
|
161
|
-
|
|
131
|
+
Each successful catalog-changing operation atomically keeps one pre-operation revision in **`registry.previous.json`**. Internal bookkeeping and a no-op Sync do not replace that revision. This is one previous revision, not a backup history.
|
|
162
132
|
|
|
163
|
-
|
|
133
|
+
To recover, close setup commands, preserve the current file if needed, then copy `registry.previous.json` over `registry.json`. Reopen setup, review **Sync** and reconnect clients. Restoring the catalog does not automatically restore client files. A session entry contains no connection credentials, so Import cannot reconstruct a missing catalog from that entry alone.
|
|
164
134
|
|
|
165
135
|
## Terminal controls
|
|
166
136
|
|
|
167
|
-
Use arrow keys and Enter
|
|
168
|
-
|
|
169
|
-
Outside an interactive terminal, menus show numbers and accept a number, key or label. For scripted setup, the direct command is easiest: `akms-mcp db` passes stdin to the database setup screen.
|
|
137
|
+
Use arrow keys and Enter to select; Esc goes back one level. Colors are disabled with `NO_COLOR` or when output is piped. Piped prompts use the same choices as numbered lists and accept a number, action key or label.
|
|
170
138
|
|
|
171
|
-
See [
|
|
139
|
+
See [CHANGELOG.md](CHANGELOG.md) for release changes and [README_DEV.md](README_DEV.md) for contribution notes. Licensed under [MIT](LICENSE.md).
|