@prmichaelsen/acp-mcp 0.1.0 → 0.2.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/.env.example +8 -2
- package/CHANGELOG.md +46 -0
- package/README.md +44 -3
- package/dist/config.d.ts +10 -0
- package/dist/server-factory.d.ts +4 -3
- package/dist/server-factory.js +20402 -13
- package/dist/server-factory.js.map +4 -4
- package/dist/server.js +20798 -12
- package/dist/server.js.map +4 -4
- package/dist/tools/acp-remote-list-files.d.ts +4 -3
- package/dist/utils/ssh-connection.d.ts +39 -0
- package/package.json +1 -1
- package/src/config.ts +36 -1
- package/src/server-factory.ts +25 -6
- package/src/server.ts +28 -2
- package/src/tools/acp-remote-list-files.ts +17 -15
- package/src/utils/ssh-connection.ts +138 -0
package/.env.example
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Logging
|
|
2
2
|
LOG_LEVEL=info
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
|
|
4
|
+
# SSH Configuration (required for standalone server)
|
|
5
|
+
SSH_HOST=example.com
|
|
6
|
+
SSH_PORT=22
|
|
7
|
+
SSH_USERNAME=your-username
|
|
8
|
+
SSH_PRIVATE_KEY_PATH=/path/to/your/private/key
|
|
9
|
+
|
|
10
|
+
# Note: When using with mcp-auth, SSH credentials are provided
|
|
11
|
+
# programmatically via the createServer() factory function
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.2.0] - 2026-02-22
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- SSH-based remote file listing functionality
|
|
12
|
+
- `ssh2` library integration for remote machine connections
|
|
13
|
+
- `SSHConnectionManager` utility class for managing SSH connections
|
|
14
|
+
- `ServerConfig` interface for SSH credentials (host, port, username, privateKey)
|
|
15
|
+
- Environment variable configuration for standalone server (SSH_HOST, SSH_USERNAME, SSH_PRIVATE_KEY_PATH)
|
|
16
|
+
- TypeScript declaration files (.d.ts) generation in build process
|
|
17
|
+
- Comprehensive SSH configuration documentation in README
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- `acp_remote_list_files` tool now operates on remote machines via SSH instead of local filesystem
|
|
21
|
+
- `createServer()` factory function now accepts `ServerConfig` with SSH credentials
|
|
22
|
+
- Server initialization now establishes SSH connection before starting
|
|
23
|
+
- Updated `.env.example` with SSH configuration variables
|
|
24
|
+
- Enhanced README with SSH setup instructions for both standalone and mcp-auth usage
|
|
25
|
+
|
|
26
|
+
### Technical Details
|
|
27
|
+
- Added `src/types/ssh-config.ts` for SSH configuration types
|
|
28
|
+
- Added `src/utils/ssh-connection.ts` for SSH connection management
|
|
29
|
+
- Updated `src/config.ts` to load SSH credentials from environment
|
|
30
|
+
- Updated `src/server.ts` to use SSH for remote operations
|
|
31
|
+
- Updated `src/server-factory.ts` to accept SSH config parameter
|
|
32
|
+
- Updated `src/tools/acp-remote-list-files.ts` to use SSH instead of local fs
|
|
33
|
+
- Build process now generates TypeScript declarations alongside JavaScript
|
|
34
|
+
|
|
35
|
+
## [0.1.0] - 2026-02-22
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- Initial MCP server scaffold
|
|
39
|
+
- TypeScript configuration for ESM modules
|
|
40
|
+
- Dual export pattern (standalone + factory for mcp-auth)
|
|
41
|
+
- esbuild configuration for fast builds
|
|
42
|
+
- `acp_remote_list_files` tool (local filesystem - replaced in 0.2.0)
|
|
43
|
+
- Development workflow scripts
|
|
44
|
+
- Complete documentation
|
|
45
|
+
- Jest test configuration with colocated tests
|
|
46
|
+
- prepublishOnly build hook
|
package/README.md
CHANGED
|
@@ -41,8 +41,17 @@ Add to your Claude Desktop configuration:
|
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
43
|
import { createServer } from '@prmichaelsen/acp-mcp/factory';
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
import { readFileSync } from 'fs';
|
|
45
|
+
|
|
46
|
+
const server = await createServer({
|
|
47
|
+
userId: 'user-123',
|
|
48
|
+
ssh: {
|
|
49
|
+
host: 'remote.example.com',
|
|
50
|
+
port: 22,
|
|
51
|
+
username: 'remote-user',
|
|
52
|
+
privateKey: readFileSync('/path/to/private/key', 'utf-8'),
|
|
53
|
+
},
|
|
54
|
+
});
|
|
46
55
|
```
|
|
47
56
|
|
|
48
57
|
## Available Tools
|
|
@@ -53,12 +62,44 @@ const server = await createServer('user-123');
|
|
|
53
62
|
|
|
54
63
|
## Configuration
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
### Standalone Server Configuration
|
|
66
|
+
|
|
67
|
+
Copy `.env.example` to `.env` and configure SSH credentials:
|
|
57
68
|
|
|
58
69
|
```bash
|
|
59
70
|
cp .env.example .env
|
|
60
71
|
```
|
|
61
72
|
|
|
73
|
+
Edit `.env` with your SSH connection details:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# SSH Configuration (required)
|
|
77
|
+
SSH_HOST=your-remote-server.com
|
|
78
|
+
SSH_PORT=22
|
|
79
|
+
SSH_USERNAME=your-username
|
|
80
|
+
SSH_PRIVATE_KEY_PATH=/path/to/your/ssh/private/key
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### mcp-auth Configuration
|
|
84
|
+
|
|
85
|
+
When using with mcp-auth, SSH credentials are provided programmatically:
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { createServer } from '@prmichaelsen/acp-mcp/factory';
|
|
89
|
+
import { readFileSync } from 'fs';
|
|
90
|
+
|
|
91
|
+
// SSH credentials provided by mcp-auth wrapper
|
|
92
|
+
const server = await createServer({
|
|
93
|
+
userId: 'user-123',
|
|
94
|
+
ssh: {
|
|
95
|
+
host: process.env.REMOTE_HOST,
|
|
96
|
+
port: parseInt(process.env.REMOTE_PORT || '22'),
|
|
97
|
+
username: process.env.REMOTE_USERNAME,
|
|
98
|
+
privateKey: readFileSync(process.env.REMOTE_KEY_PATH, 'utf-8'),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
62
103
|
## Scripts
|
|
63
104
|
|
|
64
105
|
- `npm run dev` - Start development server with hot reload
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
export interface Config {
|
|
2
2
|
logLevel: string;
|
|
3
|
+
ssh: {
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
username: string;
|
|
7
|
+
privateKeyPath: string;
|
|
8
|
+
};
|
|
3
9
|
}
|
|
4
10
|
export declare const config: Config;
|
|
11
|
+
/**
|
|
12
|
+
* Load SSH private key from file
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadSSHPrivateKey(): string;
|
package/dist/server-factory.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { ServerConfig } from './types/ssh-config.js';
|
|
2
3
|
/**
|
|
3
|
-
* Create an MCP server instance for a specific user
|
|
4
|
+
* Create an MCP server instance for a specific user with SSH configuration
|
|
4
5
|
* This factory function is used by mcp-auth for multi-tenant support
|
|
5
6
|
*
|
|
6
|
-
* @param
|
|
7
|
+
* @param serverConfig - Configuration including userId and SSH credentials
|
|
7
8
|
* @returns Configured MCP Server instance
|
|
8
9
|
*/
|
|
9
|
-
export declare function createServer(
|
|
10
|
+
export declare function createServer(serverConfig: ServerConfig): Promise<Server>;
|