@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.
Files changed (95) hide show
  1. package/.claude/settings.local.json +6 -2
  2. package/.idea/workspace.xml +283 -274
  3. package/README.md +190 -112
  4. package/TODOs.md +39 -48
  5. package/dist/bridge/index.js +131 -76
  6. package/dist/bridge/index.js.map +1 -1
  7. package/dist/cli/commands/auth.js +1 -1
  8. package/dist/cli/commands/auth.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts.map +1 -1
  10. package/dist/cli/commands/clean.js +31 -56
  11. package/dist/cli/commands/clean.js.map +1 -1
  12. package/dist/cli/commands/sessions.d.ts.map +1 -1
  13. package/dist/cli/commands/sessions.js +115 -40
  14. package/dist/cli/commands/sessions.js.map +1 -1
  15. package/dist/cli/helpers.d.ts +3 -0
  16. package/dist/cli/helpers.d.ts.map +1 -1
  17. package/dist/cli/helpers.js +91 -15
  18. package/dist/cli/helpers.js.map +1 -1
  19. package/dist/cli/index.js +13 -5
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cli/output.d.ts.map +1 -1
  22. package/dist/cli/output.js +26 -4
  23. package/dist/cli/output.js.map +1 -1
  24. package/dist/cli/shell-parser.d.ts.map +1 -1
  25. package/dist/cli/shell-parser.js.map +1 -1
  26. package/dist/cli/shell.d.ts.map +1 -1
  27. package/dist/cli/shell.js +9 -8
  28. package/dist/cli/shell.js.map +1 -1
  29. package/dist/core/factory.d.ts +2 -0
  30. package/dist/core/factory.d.ts.map +1 -1
  31. package/dist/core/factory.js +3 -1
  32. package/dist/core/factory.js.map +1 -1
  33. package/dist/core/mcp-client.d.ts.map +1 -1
  34. package/dist/core/mcp-client.js +8 -12
  35. package/dist/core/mcp-client.js.map +1 -1
  36. package/dist/core/transports.d.ts +5 -1
  37. package/dist/core/transports.d.ts.map +1 -1
  38. package/dist/core/transports.js +39 -9
  39. package/dist/core/transports.js.map +1 -1
  40. package/dist/lib/auth/keychain.d.ts.map +1 -1
  41. package/dist/lib/auth/keychain.js +5 -2
  42. package/dist/lib/auth/keychain.js.map +1 -1
  43. package/dist/lib/auth/oauth-flow.d.ts.map +1 -1
  44. package/dist/lib/auth/oauth-flow.js +11 -2
  45. package/dist/lib/auth/oauth-flow.js.map +1 -1
  46. package/dist/lib/auth/oauth-provider.d.ts +19 -8
  47. package/dist/lib/auth/oauth-provider.d.ts.map +1 -1
  48. package/dist/lib/auth/oauth-provider.js +95 -27
  49. package/dist/lib/auth/oauth-provider.js.map +1 -1
  50. package/dist/lib/auth/oauth-token-manager.d.ts +8 -0
  51. package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -1
  52. package/dist/lib/auth/oauth-token-manager.js +43 -0
  53. package/dist/lib/auth/oauth-token-manager.js.map +1 -1
  54. package/dist/lib/auth/{auth-profiles.d.ts → profiles.d.ts} +2 -1
  55. package/dist/lib/auth/profiles.d.ts.map +1 -0
  56. package/dist/lib/auth/{auth-profiles.js → profiles.js} +26 -10
  57. package/dist/lib/auth/profiles.js.map +1 -0
  58. package/dist/lib/auth/token-refresh.js +1 -1
  59. package/dist/lib/auth/token-refresh.js.map +1 -1
  60. package/dist/lib/bridge-client.js.map +1 -1
  61. package/dist/lib/bridge-manager.d.ts +0 -1
  62. package/dist/lib/bridge-manager.d.ts.map +1 -1
  63. package/dist/lib/bridge-manager.js +32 -46
  64. package/dist/lib/bridge-manager.js.map +1 -1
  65. package/dist/lib/cleanup.d.ts +5 -0
  66. package/dist/lib/cleanup.d.ts.map +1 -0
  67. package/dist/lib/cleanup.js +48 -0
  68. package/dist/lib/cleanup.js.map +1 -0
  69. package/dist/lib/errors.d.ts +1 -1
  70. package/dist/lib/errors.d.ts.map +1 -1
  71. package/dist/lib/errors.js +5 -1
  72. package/dist/lib/errors.js.map +1 -1
  73. package/dist/lib/index.d.ts +1 -0
  74. package/dist/lib/index.d.ts.map +1 -1
  75. package/dist/lib/index.js +1 -0
  76. package/dist/lib/index.js.map +1 -1
  77. package/dist/lib/session-client.d.ts.map +1 -1
  78. package/dist/lib/session-client.js +7 -7
  79. package/dist/lib/session-client.js.map +1 -1
  80. package/dist/lib/sessions.d.ts +6 -1
  81. package/dist/lib/sessions.d.ts.map +1 -1
  82. package/dist/lib/sessions.js +71 -13
  83. package/dist/lib/sessions.js.map +1 -1
  84. package/dist/lib/types.d.ts +6 -3
  85. package/dist/lib/types.d.ts.map +1 -1
  86. package/dist/lib/utils.d.ts +2 -1
  87. package/dist/lib/utils.d.ts.map +1 -1
  88. package/dist/lib/utils.js +16 -3
  89. package/dist/lib/utils.js.map +1 -1
  90. package/docs/claude-skill/README.md +38 -0
  91. package/docs/claude-skill/SKILL.md +159 -0
  92. package/package.json +8 -3
  93. package/PHASE1-SUMMARY.md +0 -269
  94. package/dist/lib/auth/auth-profiles.d.ts.map +0 -1
  95. 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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"}