@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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Logging
2
2
  LOG_LEVEL=info
3
3
 
4
- # Add your environment variables here
5
- # EXAMPLE_API_KEY=your-api-key-here
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
- const server = await createServer('user-123');
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
- Copy `.env.example` to `.env` and configure:
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;
@@ -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 userId - The unique identifier for the user
7
+ * @param serverConfig - Configuration including userId and SSH credentials
7
8
  * @returns Configured MCP Server instance
8
9
  */
9
- export declare function createServer(userId: string): Promise<Server>;
10
+ export declare function createServer(serverConfig: ServerConfig): Promise<Server>;