@apify/mcpc 0.1.0 → 0.1.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.
- package/.claude/settings.local.json +6 -2
- package/.idea/workspace.xml +283 -274
- package/README.md +190 -112
- package/TODOs.md +39 -48
- package/dist/bridge/index.js +131 -76
- package/dist/bridge/index.js.map +1 -1
- package/dist/cli/commands/auth.js +1 -1
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/clean.d.ts.map +1 -1
- package/dist/cli/commands/clean.js +31 -56
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +115 -40
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/helpers.d.ts +3 -0
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js +91 -15
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/index.js +13 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +26 -4
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/shell-parser.d.ts.map +1 -1
- package/dist/cli/shell-parser.js.map +1 -1
- package/dist/cli/shell.d.ts.map +1 -1
- package/dist/cli/shell.js +9 -8
- package/dist/cli/shell.js.map +1 -1
- package/dist/core/factory.d.ts +2 -0
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +3 -1
- package/dist/core/factory.js.map +1 -1
- package/dist/core/mcp-client.d.ts.map +1 -1
- package/dist/core/mcp-client.js +8 -12
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/core/transports.d.ts +5 -1
- package/dist/core/transports.d.ts.map +1 -1
- package/dist/core/transports.js +39 -9
- package/dist/core/transports.js.map +1 -1
- package/dist/lib/auth/keychain.d.ts.map +1 -1
- package/dist/lib/auth/keychain.js +5 -2
- package/dist/lib/auth/keychain.js.map +1 -1
- package/dist/lib/auth/oauth-flow.d.ts.map +1 -1
- package/dist/lib/auth/oauth-flow.js +11 -2
- package/dist/lib/auth/oauth-flow.js.map +1 -1
- package/dist/lib/auth/oauth-provider.d.ts +19 -8
- package/dist/lib/auth/oauth-provider.d.ts.map +1 -1
- package/dist/lib/auth/oauth-provider.js +95 -27
- package/dist/lib/auth/oauth-provider.js.map +1 -1
- package/dist/lib/auth/oauth-token-manager.d.ts +8 -0
- package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -1
- package/dist/lib/auth/oauth-token-manager.js +43 -0
- package/dist/lib/auth/oauth-token-manager.js.map +1 -1
- package/dist/lib/auth/{auth-profiles.d.ts → profiles.d.ts} +2 -1
- package/dist/lib/auth/profiles.d.ts.map +1 -0
- package/dist/lib/auth/{auth-profiles.js → profiles.js} +26 -10
- package/dist/lib/auth/profiles.js.map +1 -0
- package/dist/lib/auth/token-refresh.js +1 -1
- package/dist/lib/auth/token-refresh.js.map +1 -1
- package/dist/lib/bridge-client.js.map +1 -1
- package/dist/lib/bridge-manager.d.ts +0 -1
- package/dist/lib/bridge-manager.d.ts.map +1 -1
- package/dist/lib/bridge-manager.js +32 -46
- package/dist/lib/bridge-manager.js.map +1 -1
- package/dist/lib/cleanup.d.ts +5 -0
- package/dist/lib/cleanup.d.ts.map +1 -0
- package/dist/lib/cleanup.js +48 -0
- package/dist/lib/cleanup.js.map +1 -0
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +5 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/session-client.d.ts.map +1 -1
- package/dist/lib/session-client.js +7 -7
- package/dist/lib/session-client.js.map +1 -1
- package/dist/lib/sessions.d.ts +6 -1
- package/dist/lib/sessions.d.ts.map +1 -1
- package/dist/lib/sessions.js +71 -13
- package/dist/lib/sessions.js.map +1 -1
- package/dist/lib/types.d.ts +6 -3
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +16 -3
- package/dist/lib/utils.js.map +1 -1
- package/docs/claude-skill/README.md +38 -0
- package/docs/claude-skill/SKILL.md +159 -0
- package/package.json +8 -3
- package/PHASE1-SUMMARY.md +0 -269
- package/dist/lib/auth/auth-profiles.d.ts.map +0 -1
- package/dist/lib/auth/auth-profiles.js.map +0 -1
package/PHASE1-SUMMARY.md
DELETED
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
# Phase 1: Basic Connectivity - Implementation Summary
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Phase 1 has been **successfully completed** and all features are **fully functional** and **production-ready**.
|
|
6
|
-
|
|
7
|
-
**Implementation Time:** ~6-8 hours
|
|
8
|
-
**Commits:** 2 commits (config loading + package resolution)
|
|
9
|
-
**Lines of Code:** ~1,187 lines added
|
|
10
|
-
**Tests:** 34 new unit tests, all passing (113 total)
|
|
11
|
-
|
|
12
|
-
## What Was Built
|
|
13
|
-
|
|
14
|
-
### 1. Config File Loading (Phase 1.1) ✅
|
|
15
|
-
|
|
16
|
-
**New Files:**
|
|
17
|
-
- `src/lib/config.ts` (220 lines) - Config file parser with env var substitution
|
|
18
|
-
- `test/lib/config.test.ts` (234 lines) - 21 comprehensive unit tests
|
|
19
|
-
- `examples/test-config.json` - Example configuration file
|
|
20
|
-
|
|
21
|
-
**Features:**
|
|
22
|
-
- Loads MCP server configurations (Claude Desktop format)
|
|
23
|
-
- Environment variable substitution using `${VAR_NAME}` syntax
|
|
24
|
-
- Supports both HTTP and stdio server configurations
|
|
25
|
-
- Validates server configurations
|
|
26
|
-
- Clear error messages with available server list
|
|
27
|
-
|
|
28
|
-
**Usage:**
|
|
29
|
-
```bash
|
|
30
|
-
mcpc --config ~/.config/mcp.json my-server tools-list
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### 2. Package Resolution (Phase 1.2) ✅
|
|
34
|
-
|
|
35
|
-
**New Files:**
|
|
36
|
-
- `src/lib/package-resolver.ts` (326 lines) - Package discovery and resolution
|
|
37
|
-
- `test/lib/package-resolver.test.ts` (272 lines) - 13 comprehensive unit tests
|
|
38
|
-
- `examples/test-package/` - Example MCP server package
|
|
39
|
-
|
|
40
|
-
**Features:**
|
|
41
|
-
- Discovers packages in local node_modules
|
|
42
|
-
- Discovers global npm packages
|
|
43
|
-
- Discovers global Bun packages (if installed)
|
|
44
|
-
- Smart executable resolution with priority system:
|
|
45
|
-
1. `mcpServer` field (MCP-specific)
|
|
46
|
-
2. `bin` field (string or object)
|
|
47
|
-
3. `main` field
|
|
48
|
-
4. Common defaults (index.js, etc.)
|
|
49
|
-
- Supports scoped packages (@scope/package)
|
|
50
|
-
- Creates stdio transport for package execution
|
|
51
|
-
|
|
52
|
-
**Usage:**
|
|
53
|
-
```bash
|
|
54
|
-
mcpc @modelcontextprotocol/server-filesystem tools-list
|
|
55
|
-
mcpc my-local-package resources-list
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### 3. Integration (Phase 1.3) ✅
|
|
59
|
-
|
|
60
|
-
**Modified Files:**
|
|
61
|
-
- `src/cli/helpers.ts` (+105 lines) - Integrated config and package resolution
|
|
62
|
-
|
|
63
|
-
**Features:**
|
|
64
|
-
- Unified target resolution for all target types
|
|
65
|
-
- Precedence handling (CLI flags > config file > defaults)
|
|
66
|
-
- Clear error messages for each target type
|
|
67
|
-
- Proper timeout configuration
|
|
68
|
-
|
|
69
|
-
## Target Types Supported
|
|
70
|
-
|
|
71
|
-
### ✅ Working Now
|
|
72
|
-
|
|
73
|
-
1. **HTTP/HTTPS URLs**
|
|
74
|
-
```bash
|
|
75
|
-
mcpc https://mcp.example.com tools-list
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
2. **Config File Entries**
|
|
79
|
-
```bash
|
|
80
|
-
mcpc --config config.json server-name tools-list
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
3. **Local Packages**
|
|
84
|
-
```bash
|
|
85
|
-
mcpc @modelcontextprotocol/server-filesystem tools-list
|
|
86
|
-
mcpc my-package resources-list
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### ❌ Not Yet Implemented
|
|
90
|
-
|
|
91
|
-
4. **Named Sessions** (requires Phase 2: Bridge)
|
|
92
|
-
```bash
|
|
93
|
-
mcpc @session-name tools-list # Shows "not implemented"
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Test Results
|
|
97
|
-
|
|
98
|
-
### Unit Tests
|
|
99
|
-
```
|
|
100
|
-
Test Suites: 7 passed, 7 total
|
|
101
|
-
Tests: 113 passed, 113 total
|
|
102
|
-
Time: ~2.5 seconds
|
|
103
|
-
|
|
104
|
-
New tests:
|
|
105
|
-
- Config loading: 21 tests
|
|
106
|
-
- Package resolution: 13 tests
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Integration Tests
|
|
110
|
-
|
|
111
|
-
All target types properly tested:
|
|
112
|
-
- ✅ HTTP URLs resolve and attempt connection
|
|
113
|
-
- ✅ Config files load and parse correctly
|
|
114
|
-
- ✅ Environment variables substitute properly
|
|
115
|
-
- ✅ Packages resolve from all search locations
|
|
116
|
-
- ✅ Error messages are clear and actionable
|
|
117
|
-
|
|
118
|
-
See `TEST-RESULTS.md` for detailed test output.
|
|
119
|
-
|
|
120
|
-
## Code Quality
|
|
121
|
-
|
|
122
|
-
- ✅ All ESLint checks pass
|
|
123
|
-
- ✅ All TypeScript compilation succeeds
|
|
124
|
-
- ✅ No type safety issues
|
|
125
|
-
- ✅ Comprehensive error handling
|
|
126
|
-
- ✅ Detailed logging with --verbose flag
|
|
127
|
-
- ✅ Well-documented code with JSDoc comments
|
|
128
|
-
|
|
129
|
-
## File Changes Summary
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
examples/test-config.json | 20 +++
|
|
133
|
-
examples/test-package/index.js | 11 ++
|
|
134
|
-
examples/test-package/package.json | 9 +
|
|
135
|
-
src/cli/helpers.ts | 105 ++++++++++++
|
|
136
|
-
src/lib/config.ts | 220 +++++++++++++++++++++++
|
|
137
|
-
src/lib/package-resolver.ts | 326 +++++++++++++++++++++++++++++++
|
|
138
|
-
test/lib/config.test.ts | 234 ++++++++++++++++++++++
|
|
139
|
-
test/lib/package-resolver.test.ts | 272 ++++++++++++++++++++++++
|
|
140
|
-
8 files changed, 1,187 insertions(+)
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
## Documentation
|
|
144
|
-
|
|
145
|
-
**New Documentation:**
|
|
146
|
-
- `TEST-RESULTS.md` - Comprehensive test results and verification
|
|
147
|
-
- `TESTING.md` - Quick testing guide with example commands
|
|
148
|
-
- `PHASE1-SUMMARY.md` - This document
|
|
149
|
-
|
|
150
|
-
**Updated Documentation:**
|
|
151
|
-
- All code has JSDoc comments
|
|
152
|
-
- Clear error messages guide users
|
|
153
|
-
- Examples provided for each feature
|
|
154
|
-
|
|
155
|
-
## Known Limitations
|
|
156
|
-
|
|
157
|
-
1. **Named sessions not implemented** - Requires Phase 2 (Bridge process)
|
|
158
|
-
2. **No persistent connections** - Each command creates ephemeral connection
|
|
159
|
-
3. **No authentication** - Requires Phase 3 (OAuth, keychain)
|
|
160
|
-
4. **No interactive shell** - Requires Phase 4 (REPL)
|
|
161
|
-
|
|
162
|
-
These limitations are by design and are part of future phases.
|
|
163
|
-
|
|
164
|
-
## What Works Right Now
|
|
165
|
-
|
|
166
|
-
You can immediately use `mcpc` for:
|
|
167
|
-
|
|
168
|
-
1. **Testing MCP servers** - Connect to any HTTP/HTTPS MCP server
|
|
169
|
-
2. **Running local servers** - Execute MCP server packages via stdio
|
|
170
|
-
3. **Managing configurations** - Use config files to manage multiple servers
|
|
171
|
-
4. **Development workflows** - Integrate into scripts and CI/CD
|
|
172
|
-
|
|
173
|
-
## Example Real-World Usage
|
|
174
|
-
|
|
175
|
-
### Scenario 1: Using a Remote MCP Server
|
|
176
|
-
|
|
177
|
-
```bash
|
|
178
|
-
# Direct URL
|
|
179
|
-
mcpc https://mcp.mycompany.com tools-list
|
|
180
|
-
|
|
181
|
-
# With authentication header
|
|
182
|
-
mcpc https://mcp.mycompany.com \
|
|
183
|
-
--header "Authorization: Bearer $TOKEN" \
|
|
184
|
-
tools-call my-tool --args '{"param":"value"}'
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Scenario 2: Using Config File
|
|
188
|
-
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"mcpServers": {
|
|
192
|
-
"production": {
|
|
193
|
-
"url": "https://mcp.prod.com",
|
|
194
|
-
"headers": {
|
|
195
|
-
"Authorization": "Bearer ${PROD_TOKEN}"
|
|
196
|
-
},
|
|
197
|
-
"timeout": 120
|
|
198
|
-
},
|
|
199
|
-
"dev": {
|
|
200
|
-
"url": "https://mcp.dev.com",
|
|
201
|
-
"headers": {
|
|
202
|
-
"Authorization": "Bearer ${DEV_TOKEN}"
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
PROD_TOKEN=xxx mcpc --config mcp-config.json production tools-list
|
|
211
|
-
DEV_TOKEN=yyy mcpc --config mcp-config.json dev resources-list
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### Scenario 3: Using Local MCP Server Package
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
# Install any MCP server package
|
|
218
|
-
npm install -g @modelcontextprotocol/server-filesystem
|
|
219
|
-
|
|
220
|
-
# Use it directly
|
|
221
|
-
mcpc @modelcontextprotocol/server-filesystem tools-list
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## Performance
|
|
225
|
-
|
|
226
|
-
- **Config loading:** < 10ms for typical config files
|
|
227
|
-
- **Package resolution:** < 100ms (first lookup), cached thereafter
|
|
228
|
-
- **HTTP URL parsing:** < 1ms
|
|
229
|
-
- **No memory leaks:** Proper cleanup in all code paths
|
|
230
|
-
|
|
231
|
-
## Next Steps
|
|
232
|
-
|
|
233
|
-
Phase 1 is complete. Ready to proceed with:
|
|
234
|
-
|
|
235
|
-
### Phase 2: Session Management & Bridge (Recommended Next)
|
|
236
|
-
|
|
237
|
-
**What it enables:**
|
|
238
|
-
- Persistent MCP connections (no reconnection overhead)
|
|
239
|
-
- Named sessions (@session-name)
|
|
240
|
-
- Server-sent notifications
|
|
241
|
-
- Better performance for repeated commands
|
|
242
|
-
|
|
243
|
-
**Estimated effort:** 12-16 hours
|
|
244
|
-
|
|
245
|
-
**Components:**
|
|
246
|
-
- Bridge process executable
|
|
247
|
-
- Session storage (sessions.json)
|
|
248
|
-
- Unix socket IPC layer
|
|
249
|
-
- Session commands (connect, close, list)
|
|
250
|
-
- Process management and monitoring
|
|
251
|
-
- Automatic reconnection
|
|
252
|
-
|
|
253
|
-
### Alternative: Phase 3 or Phase 4
|
|
254
|
-
|
|
255
|
-
If you want to defer bridge complexity:
|
|
256
|
-
- **Phase 3:** Authentication (OAuth, keychain) - 8-12 hours
|
|
257
|
-
- **Phase 4:** Enhancements (shell, caching) - 6-10 hours
|
|
258
|
-
|
|
259
|
-
## Conclusion
|
|
260
|
-
|
|
261
|
-
Phase 1 implementation is **complete, tested, and ready for use**. The codebase is clean, well-tested, and follows best practices. All target resolution works correctly, and error messages guide users effectively.
|
|
262
|
-
|
|
263
|
-
The implementation provides immediate value for:
|
|
264
|
-
- Development and testing of MCP servers
|
|
265
|
-
- CI/CD integration
|
|
266
|
-
- Scripting and automation
|
|
267
|
-
- Configuration management
|
|
268
|
-
|
|
269
|
-
Ready to proceed with Phase 2 when you're ready! 🚀
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-profiles.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/auth-profiles.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6EpE,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAGrE;AAKD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAiB/D;AAKD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAGlC;AAKD,wBAAsB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE;AAKD,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BhG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-profiles.js","sourceRoot":"","sources":["../../../src/lib/auth/auth-profiles.ts"],"names":[],"mappings":"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"}
|