@apify/mcpc 0.1.7 → 0.1.9

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 (51) hide show
  1. package/.claude/settings.local.json +12 -1
  2. package/.idea/workspace.xml +169 -170
  3. package/CHANGELOG.md +97 -0
  4. package/README.md +40 -22
  5. package/dist/bridge/index.js +29 -9
  6. package/dist/bridge/index.js.map +1 -1
  7. package/dist/cli/commands/sessions.d.ts.map +1 -1
  8. package/dist/cli/commands/sessions.js +2 -2
  9. package/dist/cli/commands/sessions.js.map +1 -1
  10. package/dist/cli/commands/tools.d.ts +3 -1
  11. package/dist/cli/commands/tools.d.ts.map +1 -1
  12. package/dist/cli/commands/tools.js +1 -1
  13. package/dist/cli/commands/tools.js.map +1 -1
  14. package/dist/cli/index.js +13 -7
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/output.d.ts +6 -3
  17. package/dist/cli/output.d.ts.map +1 -1
  18. package/dist/cli/output.js +21 -5
  19. package/dist/cli/output.js.map +1 -1
  20. package/dist/cli/parser.d.ts.map +1 -1
  21. package/dist/cli/parser.js +1 -0
  22. package/dist/cli/parser.js.map +1 -1
  23. package/dist/core/factory.d.ts +1 -0
  24. package/dist/core/factory.d.ts.map +1 -1
  25. package/dist/core/factory.js +9 -1
  26. package/dist/core/factory.js.map +1 -1
  27. package/dist/core/mcp-client.d.ts +2 -0
  28. package/dist/core/mcp-client.d.ts.map +1 -1
  29. package/dist/core/mcp-client.js +9 -0
  30. package/dist/core/mcp-client.js.map +1 -1
  31. package/dist/core/transports.d.ts +1 -0
  32. package/dist/core/transports.d.ts.map +1 -1
  33. package/dist/core/transports.js +4 -0
  34. package/dist/core/transports.js.map +1 -1
  35. package/dist/lib/bridge-manager.d.ts +1 -0
  36. package/dist/lib/bridge-manager.d.ts.map +1 -1
  37. package/dist/lib/bridge-manager.js +10 -2
  38. package/dist/lib/bridge-manager.js.map +1 -1
  39. package/dist/lib/session-client.js +2 -2
  40. package/dist/lib/session-client.js.map +1 -1
  41. package/dist/lib/sessions.d.ts.map +1 -1
  42. package/dist/lib/sessions.js +2 -2
  43. package/dist/lib/sessions.js.map +1 -1
  44. package/dist/lib/types.d.ts +1 -0
  45. package/dist/lib/types.d.ts.map +1 -1
  46. package/dist/lib/utils.d.ts +1 -0
  47. package/dist/lib/utils.d.ts.map +1 -1
  48. package/dist/lib/utils.js +9 -0
  49. package/dist/lib/utils.js.map +1 -1
  50. package/docs/TODOs.md +13 -0
  51. package/package.json +4 -4
@@ -97,7 +97,18 @@
97
97
  "Bash(E2E_ISOLATED_ALL=1 TESTS=\"human-output output-invariants\" ./test/e2e/run.sh:*)",
98
98
  "Bash(E2E_ISOLATED_ALL=1 TESTS=\"output-invariants human-output\" ./test/e2e/run.sh:*)",
99
99
  "Bash(npm publish:*)",
100
- "Bash(MCPC_RELEASE=1 npm publish:*)"
100
+ "Bash(MCPC_RELEASE=1 npm publish:*)",
101
+ "WebFetch(domain:www.philschmid.de)",
102
+ "Bash(mcpc @apify close:*)",
103
+ "Bash(mcpc:*)",
104
+ "Bash(__NEW_LINE_be84ee31121f5014__ echo \"\")",
105
+ "Bash(MCPC_HOME_DIR=/tmp/mcpc-test-restart ./dist/cli/index.js:*)",
106
+ "Bash(./dist/cli/index.js:*)",
107
+ "Bash(./dist/cli/index.js @test-restart close:*)",
108
+ "Bash(MCPC_HOME_DIR=/tmp/mcpc-test-json node:*)",
109
+ "Bash(MCPC_HOME_DIR=/tmp/mcpc-test-json MCPC_VERBOSE=1 node:*)",
110
+ "Bash(MCPC_HOME_DIR=/tmp/mcpc-test-json DEBUG=* node:*)",
111
+ "Bash(MCPC_HOME_DIR=/tmp/mcpc-test-new node:*)"
101
112
  ]
102
113
  }
103
114
  }
@@ -4,9 +4,8 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="84071bae-f051-424d-a0e4-1540170b1e94" name="Changes" comment="Docs">
8
- <change beforePath="$PROJECT_DIR$/docs/TODOs.md" beforeDir="false" afterPath="$PROJECT_DIR$/docs/TODOs.md" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/src/cli/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli/index.ts" afterDir="false" />
7
+ <list default="true" id="84071bae-f051-424d-a0e4-1540170b1e94" name="Changes" comment="`tools-list` now shows only a compact list to support dynamic tool discovery, added --full option for full details">
8
+ <change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
10
9
  </list>
11
10
  <option name="SHOW_DIALOG" value="false" />
12
11
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -14,7 +13,7 @@
14
13
  <option name="LAST_RESOLUTION" value="IGNORE" />
15
14
  </component>
16
15
  <component name="EmbeddingIndexingInfo">
17
- <option name="cachedIndexableFilesCount" value="118" />
16
+ <option name="cachedIndexableFilesCount" value="120" />
18
17
  <option name="fileBasedEmbeddingIndicesEnabled" value="true" />
19
18
  </component>
20
19
  <component name="Git.Settings">
@@ -82,9 +81,9 @@
82
81
  <recent name="$PROJECT_DIR$/docs" />
83
82
  </key>
84
83
  <key name="MoveFile.RECENT_KEYS">
84
+ <recent name="$PROJECT_DIR$/docs" />
85
85
  <recent name="$PROJECT_DIR$/docs/images" />
86
86
  <recent name="$PROJECT_DIR$/docs/examples" />
87
- <recent name="$PROJECT_DIR$/docs" />
88
87
  <recent name="$PROJECT_DIR$/test/coverage" />
89
88
  <recent name="$PROJECT_DIR$/test/playground" />
90
89
  </key>
@@ -115,159 +114,7 @@
115
114
  <workItem from="1766435124813" duration="175094000" />
116
115
  <workItem from="1767121309931" duration="139790000" />
117
116
  <workItem from="1767397304824" duration="654000" />
118
- <workItem from="1767400124038" duration="5456000" />
119
- </task>
120
- <task id="LOCAL-00301" summary="Writing">
121
- <option name="closed" value="true" />
122
- <created>1767256060393</created>
123
- <option name="number" value="00301" />
124
- <option name="presentableId" value="LOCAL-00301" />
125
- <option name="project" value="LOCAL" />
126
- <updated>1767256060393</updated>
127
- </task>
128
- <task id="LOCAL-00302" summary="Writing">
129
- <option name="closed" value="true" />
130
- <created>1767256636124</created>
131
- <option name="number" value="00302" />
132
- <option name="presentableId" value="LOCAL-00302" />
133
- <option name="project" value="LOCAL" />
134
- <updated>1767256636124</updated>
135
- </task>
136
- <task id="LOCAL-00303" summary="Tests">
137
- <option name="closed" value="true" />
138
- <created>1767256961080</created>
139
- <option name="number" value="00303" />
140
- <option name="presentableId" value="LOCAL-00303" />
141
- <option name="project" value="LOCAL" />
142
- <updated>1767256961080</updated>
143
- </task>
144
- <task id="LOCAL-00304" summary="Renamed &quot;session&quot; to &quot;connect&quot;, it's feels better">
145
- <option name="closed" value="true" />
146
- <created>1767257359213</created>
147
- <option name="number" value="00304" />
148
- <option name="presentableId" value="LOCAL-00304" />
149
- <option name="project" value="LOCAL" />
150
- <updated>1767257359213</updated>
151
- </task>
152
- <task id="LOCAL-00305" summary="Fixed --timeout">
153
- <option name="closed" value="true" />
154
- <created>1767258330178</created>
155
- <option name="number" value="00305" />
156
- <option name="presentableId" value="LOCAL-00305" />
157
- <option name="project" value="LOCAL" />
158
- <updated>1767258330178</updated>
159
- </task>
160
- <task id="LOCAL-00306" summary="Fixes">
161
- <option name="closed" value="true" />
162
- <created>1767258961101</created>
163
- <option name="number" value="00306" />
164
- <option name="presentableId" value="LOCAL-00306" />
165
- <option name="project" value="LOCAL" />
166
- <updated>1767258961101</updated>
167
- </task>
168
- <task id="LOCAL-00307" summary="Writing">
169
- <option name="closed" value="true" />
170
- <created>1767260069457</created>
171
- <option name="number" value="00307" />
172
- <option name="presentableId" value="LOCAL-00307" />
173
- <option name="project" value="LOCAL" />
174
- <updated>1767260069457</updated>
175
- </task>
176
- <task id="LOCAL-00308" summary="Cosmetic">
177
- <option name="closed" value="true" />
178
- <created>1767260684183</created>
179
- <option name="number" value="00308" />
180
- <option name="presentableId" value="LOCAL-00308" />
181
- <option name="project" value="LOCAL" />
182
- <updated>1767260684183</updated>
183
- </task>
184
- <task id="LOCAL-00309" summary="Implemented --proxy command">
185
- <option name="closed" value="true" />
186
- <created>1767260968448</created>
187
- <option name="number" value="00309" />
188
- <option name="presentableId" value="LOCAL-00309" />
189
- <option name="project" value="LOCAL" />
190
- <updated>1767260968448</updated>
191
- </task>
192
- <task id="LOCAL-00310" summary="Writing and tests">
193
- <option name="closed" value="true" />
194
- <created>1767262727887</created>
195
- <option name="number" value="00310" />
196
- <option name="presentableId" value="LOCAL-00310" />
197
- <option name="project" value="LOCAL" />
198
- <updated>1767262727887</updated>
199
- </task>
200
- <task id="LOCAL-00311" summary="Writing">
201
- <option name="closed" value="true" />
202
- <created>1767262976779</created>
203
- <option name="number" value="00311" />
204
- <option name="presentableId" value="LOCAL-00311" />
205
- <option name="project" value="LOCAL" />
206
- <updated>1767262976779</updated>
207
- </task>
208
- <task id="LOCAL-00312" summary="Tests and nits">
209
- <option name="closed" value="true" />
210
- <created>1767263177871</created>
211
- <option name="number" value="00312" />
212
- <option name="presentableId" value="LOCAL-00312" />
213
- <option name="project" value="LOCAL" />
214
- <updated>1767263177871</updated>
215
- </task>
216
- <task id="LOCAL-00313" summary="Final touches">
217
- <option name="closed" value="true" />
218
- <created>1767264480849</created>
219
- <option name="number" value="00313" />
220
- <option name="presentableId" value="LOCAL-00313" />
221
- <option name="project" value="LOCAL" />
222
- <updated>1767264480849</updated>
223
- </task>
224
- <task id="LOCAL-00314" summary="Final touches">
225
- <option name="closed" value="true" />
226
- <created>1767264631473</created>
227
- <option name="number" value="00314" />
228
- <option name="presentableId" value="LOCAL-00314" />
229
- <option name="project" value="LOCAL" />
230
- <updated>1767264631473</updated>
231
- </task>
232
- <task id="LOCAL-00315" summary="Final touches">
233
- <option name="closed" value="true" />
234
- <created>1767295534266</created>
235
- <option name="number" value="00315" />
236
- <option name="presentableId" value="LOCAL-00315" />
237
- <option name="project" value="LOCAL" />
238
- <updated>1767295534266</updated>
239
- </task>
240
- <task id="LOCAL-00316" summary="More tests">
241
- <option name="closed" value="true" />
242
- <created>1767300734831</created>
243
- <option name="number" value="00316" />
244
- <option name="presentableId" value="LOCAL-00316" />
245
- <option name="project" value="LOCAL" />
246
- <updated>1767300734831</updated>
247
- </task>
248
- <task id="LOCAL-00317" summary="Writing">
249
- <option name="closed" value="true" />
250
- <created>1767303169928</created>
251
- <option name="number" value="00317" />
252
- <option name="presentableId" value="LOCAL-00317" />
253
- <option name="project" value="LOCAL" />
254
- <updated>1767303169928</updated>
255
- </task>
256
- <task id="LOCAL-00318" summary="Writing">
257
- <option name="closed" value="true" />
258
- <created>1767304929607</created>
259
- <option name="number" value="00318" />
260
- <option name="presentableId" value="LOCAL-00318" />
261
- <option name="project" value="LOCAL" />
262
- <updated>1767304929607</updated>
263
- </task>
264
- <task id="LOCAL-00319" summary="Renamed &quot;dead&quot; to &quot;crashed&quot; session, final touches">
265
- <option name="closed" value="true" />
266
- <created>1767305903020</created>
267
- <option name="number" value="00319" />
268
- <option name="presentableId" value="LOCAL-00319" />
269
- <option name="project" value="LOCAL" />
270
- <updated>1767305903020</updated>
117
+ <workItem from="1767400124038" duration="78154000" />
271
118
  </task>
272
119
  <task id="LOCAL-00320" summary="Final touches">
273
120
  <option name="closed" value="true" />
@@ -509,7 +356,159 @@
509
356
  <option name="project" value="LOCAL" />
510
357
  <updated>1767467232772</updated>
511
358
  </task>
512
- <option name="localTasksCounter" value="350" />
359
+ <task id="LOCAL-00350" summary="Docs">
360
+ <option name="closed" value="true" />
361
+ <created>1767495856786</created>
362
+ <option name="number" value="00350" />
363
+ <option name="presentableId" value="LOCAL-00350" />
364
+ <option name="project" value="LOCAL" />
365
+ <updated>1767495856786</updated>
366
+ </task>
367
+ <task id="LOCAL-00351" summary="Docs">
368
+ <option name="closed" value="true" />
369
+ <created>1767496287506</created>
370
+ <option name="number" value="00351" />
371
+ <option name="presentableId" value="LOCAL-00351" />
372
+ <option name="project" value="LOCAL" />
373
+ <updated>1767496287506</updated>
374
+ </task>
375
+ <task id="LOCAL-00352" summary="Docs">
376
+ <option name="closed" value="true" />
377
+ <created>1767501783702</created>
378
+ <option name="number" value="00352" />
379
+ <option name="presentableId" value="LOCAL-00352" />
380
+ <option name="project" value="LOCAL" />
381
+ <updated>1767501783702</updated>
382
+ </task>
383
+ <task id="LOCAL-00353" summary="Docs">
384
+ <option name="closed" value="true" />
385
+ <created>1767555748507</created>
386
+ <option name="number" value="00353" />
387
+ <option name="presentableId" value="LOCAL-00353" />
388
+ <option name="project" value="LOCAL" />
389
+ <updated>1767555748507</updated>
390
+ </task>
391
+ <task id="LOCAL-00354" summary="Docs">
392
+ <option name="closed" value="true" />
393
+ <created>1767561058376</created>
394
+ <option name="number" value="00354" />
395
+ <option name="presentableId" value="LOCAL-00354" />
396
+ <option name="project" value="LOCAL" />
397
+ <updated>1767561058377</updated>
398
+ </task>
399
+ <task id="LOCAL-00355" summary="Docs">
400
+ <option name="closed" value="true" />
401
+ <created>1767949515517</created>
402
+ <option name="number" value="00355" />
403
+ <option name="presentableId" value="LOCAL-00355" />
404
+ <option name="project" value="LOCAL" />
405
+ <updated>1767949515517</updated>
406
+ </task>
407
+ <task id="LOCAL-00356" summary="Docs">
408
+ <option name="closed" value="true" />
409
+ <created>1767950436457</created>
410
+ <option name="number" value="00356" />
411
+ <option name="presentableId" value="LOCAL-00356" />
412
+ <option name="project" value="LOCAL" />
413
+ <updated>1767950436457</updated>
414
+ </task>
415
+ <task id="LOCAL-00357" summary="Docs">
416
+ <option name="closed" value="true" />
417
+ <created>1768313561028</created>
418
+ <option name="number" value="00357" />
419
+ <option name="presentableId" value="LOCAL-00357" />
420
+ <option name="project" value="LOCAL" />
421
+ <updated>1768313561028</updated>
422
+ </task>
423
+ <task id="LOCAL-00358" summary="TS code mode draft">
424
+ <option name="closed" value="true" />
425
+ <created>1768313607831</created>
426
+ <option name="number" value="00358" />
427
+ <option name="presentableId" value="LOCAL-00358" />
428
+ <option name="project" value="LOCAL" />
429
+ <updated>1768313607831</updated>
430
+ </task>
431
+ <task id="LOCAL-00359" summary="Improved session expiration handling">
432
+ <option name="closed" value="true" />
433
+ <created>1768314790513</created>
434
+ <option name="number" value="00359" />
435
+ <option name="presentableId" value="LOCAL-00359" />
436
+ <option name="project" value="LOCAL" />
437
+ <updated>1768314790513</updated>
438
+ </task>
439
+ <task id="LOCAL-00360" summary="Fixed incorrect flagging of expired sessions as dead">
440
+ <option name="closed" value="true" />
441
+ <created>1768469231118</created>
442
+ <option name="number" value="00360" />
443
+ <option name="presentableId" value="LOCAL-00360" />
444
+ <option name="project" value="LOCAL" />
445
+ <updated>1768469231118</updated>
446
+ </task>
447
+ <task id="LOCAL-00361" summary="Copy">
448
+ <option name="closed" value="true" />
449
+ <created>1768470113068</created>
450
+ <option name="number" value="00361" />
451
+ <option name="presentableId" value="LOCAL-00361" />
452
+ <option name="project" value="LOCAL" />
453
+ <updated>1768470113068</updated>
454
+ </task>
455
+ <task id="LOCAL-00362" summary="Fixed help">
456
+ <option name="closed" value="true" />
457
+ <created>1768473976578</created>
458
+ <option name="number" value="00362" />
459
+ <option name="presentableId" value="LOCAL-00362" />
460
+ <option name="project" value="LOCAL" />
461
+ <updated>1768473976578</updated>
462
+ </task>
463
+ <task id="LOCAL-00363" summary="Nits">
464
+ <option name="closed" value="true" />
465
+ <created>1768474365832</created>
466
+ <option name="number" value="00363" />
467
+ <option name="presentableId" value="LOCAL-00363" />
468
+ <option name="project" value="LOCAL" />
469
+ <updated>1768474365832</updated>
470
+ </task>
471
+ <task id="LOCAL-00364" summary="Require explicit restart when server rejects MCP session ID&#10;&#10;Remove automatic reconnection when server rejects session ID during bridge restart. Session is now marked as 'expired' and user must explicitly run 'mcpc @session restart' to create a fresh session.">
472
+ <option name="closed" value="true" />
473
+ <created>1769003190833</created>
474
+ <option name="number" value="00364" />
475
+ <option name="presentableId" value="LOCAL-00364" />
476
+ <option name="project" value="LOCAL" />
477
+ <updated>1769003190833</updated>
478
+ </task>
479
+ <task id="LOCAL-00365" summary="Fixes">
480
+ <option name="closed" value="true" />
481
+ <created>1769003457187</created>
482
+ <option name="number" value="00365" />
483
+ <option name="presentableId" value="LOCAL-00365" />
484
+ <option name="project" value="LOCAL" />
485
+ <updated>1769003457187</updated>
486
+ </task>
487
+ <task id="LOCAL-00366" summary="Added changelog, better release process">
488
+ <option name="closed" value="true" />
489
+ <created>1769005694924</created>
490
+ <option name="number" value="00366" />
491
+ <option name="presentableId" value="LOCAL-00366" />
492
+ <option name="project" value="LOCAL" />
493
+ <updated>1769005694924</updated>
494
+ </task>
495
+ <task id="LOCAL-00367" summary="Updated package.json URLs">
496
+ <option name="closed" value="true" />
497
+ <created>1769505670158</created>
498
+ <option name="number" value="00367" />
499
+ <option name="presentableId" value="LOCAL-00367" />
500
+ <option name="project" value="LOCAL" />
501
+ <updated>1769505670158</updated>
502
+ </task>
503
+ <task id="LOCAL-00368" summary="`tools-list` now shows only a compact list to support dynamic tool discovery, added --full option for full details">
504
+ <option name="closed" value="true" />
505
+ <created>1770064327434</created>
506
+ <option name="number" value="00368" />
507
+ <option name="presentableId" value="LOCAL-00368" />
508
+ <option name="project" value="LOCAL" />
509
+ <updated>1770064327434</updated>
510
+ </task>
511
+ <option name="localTasksCounter" value="369" />
513
512
  <servers />
514
513
  </component>
515
514
  <component name="TypeScriptGeneratedFilesManager">
@@ -616,15 +615,6 @@
616
615
  </option>
617
616
  </component>
618
617
  <component name="VcsManagerConfiguration">
619
- <MESSAGE value="Fixed handling --schema for outputSchema" />
620
- <MESSAGE value="Tests" />
621
- <MESSAGE value="Renamed &quot;session&quot; to &quot;connect&quot;, it's feels better" />
622
- <MESSAGE value="Fixed --timeout" />
623
- <MESSAGE value="Implemented --proxy command" />
624
- <MESSAGE value="Writing and tests" />
625
- <MESSAGE value="Tests and nits" />
626
- <MESSAGE value="More tests" />
627
- <MESSAGE value="Renamed &quot;dead&quot; to &quot;crashed&quot; session, final touches" />
628
618
  <MESSAGE value="Final touches" />
629
619
  <MESSAGE value="More final touches" />
630
620
  <MESSAGE value="Even more final touches" />
@@ -638,9 +628,18 @@
638
628
  <MESSAGE value="Cosmetic" />
639
629
  <MESSAGE value="New gif in README" />
640
630
  <MESSAGE value="Cosmetic improvements" />
631
+ <MESSAGE value="Docs" />
632
+ <MESSAGE value="TS code mode draft" />
633
+ <MESSAGE value="Improved session expiration handling" />
634
+ <MESSAGE value="Fixed incorrect flagging of expired sessions as dead" />
635
+ <MESSAGE value="Copy" />
636
+ <MESSAGE value="Fixed help" />
641
637
  <MESSAGE value="Nits" />
638
+ <MESSAGE value="Require explicit restart when server rejects MCP session ID&#10;&#10;Remove automatic reconnection when server rejects session ID during bridge restart. Session is now marked as 'expired' and user must explicitly run 'mcpc @session restart' to create a fresh session." />
642
639
  <MESSAGE value="Fixes" />
643
- <MESSAGE value="Docs" />
644
- <option name="LAST_COMMIT_MESSAGE" value="Docs" />
640
+ <MESSAGE value="Added changelog, better release process" />
641
+ <MESSAGE value="Updated package.json URLs" />
642
+ <MESSAGE value="`tools-list` now shows only a compact list to support dynamic tool discovery, added --full option for full details" />
643
+ <option name="LAST_COMMIT_MESSAGE" value="`tools-list` now shows only a compact list to support dynamic tool discovery, added --full option for full details" />
645
644
  </component>
646
645
  </project>
package/CHANGELOG.md ADDED
@@ -0,0 +1,97 @@
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.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.9] - 2026-02-02
11
+
12
+ ### Added
13
+ - Added CHANGELOG.md for tracking changes
14
+ - Automated GitHub release creation in publish script
15
+
16
+ ### Changed
17
+ - `tools-list` now shows a compact summary by default to support dynamic tool discovery
18
+ - Added `--full` flag to `tools-list` for detailed tool information
19
+ - Publish script now automatically updates CHANGELOG.md version on release
20
+
21
+ ## [0.1.8] - 2026-01-21
22
+
23
+ ### Changed
24
+ - Session is now marked as expired (not auto-reconnected) when server rejects MCP session ID
25
+ - Users must explicitly run `mcpc @session restart` to recover from expired sessions
26
+
27
+ ### Fixed
28
+ - Fixed incorrect flagging of expired sessions as crashed
29
+ - Fixed session expiration detection for various error message formats
30
+ - Fixed help command output
31
+
32
+ ## [0.1.7] - 2026-01-03
33
+
34
+ ### Changed
35
+ - Documentation improvements and updates
36
+ - Various cosmetic improvements to CLI output
37
+
38
+ ### Fixed
39
+ - Minor bug fixes
40
+
41
+ ## [0.1.6] - 2026-01-02
42
+
43
+ ### Added
44
+ - Session notifications with timestamps for tracking list changes (`tools/list_changed`, `resources/list_changed`, `prompts/list_changed`)
45
+
46
+ ### Changed
47
+ - Renamed `_meta` to `_mcpc` in JSON output for MCP spec conformance
48
+ - Improved formatting of prompts output
49
+ - Various cosmetic improvements
50
+
51
+ ### Fixed
52
+ - Fixed proxy server issues
53
+ - Fixed screenshot URL in README
54
+
55
+ ## [0.1.5] - 2026-01-01
56
+
57
+ ### Added
58
+ - Implemented `--proxy` option for exposing sessions as local MCP servers
59
+ - Added `mcpc @session restart` command
60
+
61
+ ### Changed
62
+ - Renamed `session` command to `connect` for clarity
63
+ - Renamed "dead" session status to "crashed" for clarity
64
+
65
+ ### Fixed
66
+ - Fixed `--timeout` option handling
67
+
68
+ ## [0.1.4] - 2025-12-31
69
+
70
+ ### Added
71
+ - Implemented `--schema` and `--schema-mode` options for tools
72
+ - Added `mcpc @session restart` command
73
+
74
+ ### Changed
75
+ - Renamed `tools-schema` command to `tools-get`
76
+ - Improved formatting for prompts and tools output
77
+ - Security review and improvements
78
+
79
+ ## [0.1.3] - 2025-12-29
80
+
81
+ ### Added
82
+ - Initial public release
83
+ - Support for Streamable HTTP and stdio transports
84
+ - Session management with persistent bridge processes
85
+ - OAuth 2.1 authentication with PKCE
86
+ - Full MCP protocol support: tools, resources, prompts
87
+ - Interactive shell mode
88
+ - JSON output mode for scripting
89
+
90
+ [Unreleased]: https://github.com/apify/mcpc/compare/v0.1.9...HEAD
91
+ [0.1.9]: https://github.com/apify/mcpc/compare/v0.1.8...v0.1.9
92
+ [0.1.8]: https://github.com/apify/mcpc/compare/v0.1.7...v0.1.8
93
+ [0.1.7]: https://github.com/apify/mcpc/compare/v0.1.6...v0.1.7
94
+ [0.1.6]: https://github.com/apify/mcpc/compare/v0.1.5...v0.1.6
95
+ [0.1.5]: https://github.com/apify/mcpc/compare/v0.1.4...v0.1.5
96
+ [0.1.4]: https://github.com/apify/mcpc/compare/v0.1.3...v0.1.4
97
+ [0.1.3]: https://github.com/apify/mcpc/releases/tag/v0.1.3
package/README.md CHANGED
@@ -10,13 +10,13 @@ After all, UNIX-compatible shell script is THE most universal coding language.
10
10
  ![mcpc screenshot](https://raw.githubusercontent.com/apify/mcpc/main/docs/images/mcpc-demo.gif)
11
11
 
12
12
  **Key features:**
13
- - 🌎 **Highly compatible** - Works with any MCP server over Streamable HTTP or stdio.
13
+ - 🌎 **Compatible** - Works with any MCP server over Streamable HTTP or stdio.
14
14
  - 🔄 **Persistent sessions** - Keep multiple server connections alive simultaneously.
15
- - 🚀 **Zero setup** - Connect to remote servers instantly with just a URL.
16
15
  - 🔧 **Strong MCP support** - Instructions, tools, resources, prompts, dynamic discovery.
17
- - 🔌 **JSON output** - Easy integration with `jq`, scripts, and other CLI tools.
18
- - ðŸĪ– **AI-friendly** - Designed for both function calling and code mode with sandboxing.
16
+ - 🔌 **Code mode** - JSON output enables integration with CLI tools like `jq` and scripting.
17
+ - ðŸĪ– **AI sandboxing** - MCP proxy server to securely access authenticated sessions from AI-generated code.
19
18
  - 🔒 **Secure** - Full OAuth 2.1 support, OS keychain for credentials storage.
19
+ - ðŸŠķ **Lightweight** - Minimal dependencies, works on Mac/Win/Linux, doesn't use LLMs on its own.
20
20
 
21
21
 
22
22
  ## Table of contents
@@ -36,6 +36,7 @@ After all, UNIX-compatible shell script is THE most universal coding language.
36
36
  - [Security](#security)
37
37
  - [Errors](#errors)
38
38
  - [Development](#development)
39
+ - [Related work](#related-work)
39
40
  - [License](#license)
40
41
 
41
42
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
@@ -101,7 +102,7 @@ Options:
101
102
  -H, --header <header> HTTP header for remote MCP server (can be repeated)
102
103
  -v, --version Output the version number
103
104
  --verbose Enable debug logging
104
- --profile <name> OAuth profile for the server ("default" if skipped)
105
+ --profile <name> OAuth profile for the server ("default" if not provided)
105
106
  --schema <file> Validate tool/prompt schema against expected schema
106
107
  --schema-mode <mode> Schema validation mode: strict, compatible (default), ignore
107
108
  --timeout <seconds> Request timeout in seconds (default: 300)
@@ -115,17 +116,17 @@ Targets:
115
116
  <config-entry> Entry in MCP config file specified by --config (e.g. "fs")
116
117
  <server-url> Remote MCP server URL (e.g. "mcp.apify.com")
117
118
 
118
- Management commands (<target> missing):
119
- login Create OAuth profile with credentials to access remote server
119
+ Management commands:
120
+ login Create OAuth profile with credentials for remote server
120
121
  logout Remove OAuth profile for remote server
121
122
  connect @<session> Connect to server and create named persistent session
122
- restart @<session> Kill and restart a session
123
- close @<session> Close a session
123
+ restart Kill and restart a session
124
+ close Close a session
124
125
 
125
- MCP commands (<target> provided):
126
+ MCP server commands:
126
127
  help Show server info ("help" can be omitted)
127
128
  shell Open interactive shell
128
- tools-list Send "tools/list" MCP request...
129
+ tools-list [--full] Send "tools/list" MCP request...
129
130
  tools-get <tool-name>
130
131
  tools-call <tool-name> [arg1:=val1 arg2:=val2 ... | <args-json> | <stdin]
131
132
  prompts-list
@@ -138,12 +139,13 @@ MCP commands (<target> provided):
138
139
  resources-templates-list
139
140
  logging-set-level <level>
140
141
  ping
141
-
142
+
143
+ Run "mcpc" (without <target>) to show available sessions and profiles.
142
144
  ```
143
145
 
144
- ### Management commands
146
+ ### General actions
145
147
 
146
- When `<target>` is missing, `mcpc` provides general management commands.
148
+ When `<target>` is omitted, `mcpc` provides general actions:
147
149
 
148
150
  ```bash
149
151
  # List all sessions and OAuth profiles (also in JSON mode)
@@ -154,15 +156,13 @@ mcpc --json
154
156
  mcpc --help
155
157
  mcpc --version
156
158
 
157
- # Clean expired sessions and old log files
159
+ # Clean expired sessions and old log files (see below for details)
158
160
  mcpc --clean
159
161
  ```
160
162
 
161
- For additional management commands, see [OAuth profiles](#oauth-profiles) and [Cleanup](#cleanup).
162
-
163
163
  ### Targets
164
164
 
165
- To connect to an MCP server, you need to specify a `<target>`, which can be one of (in order of precedence):
165
+ To connect and interact with an MCP server, you need to specify a `<target>`, which can be one of (in this order of precedence):
166
166
 
167
167
  - **Entry in a config file** (e.g. `--config .vscode/mcp.json filesystem`) - see [Config file](#mcp-server-config-file)
168
168
  - **Remote MCP server URL** (e.g. `https://mcp.apify.com`)
@@ -178,7 +178,7 @@ connects, and enables you to interact with it.
178
178
 
179
179
  ### MCP commands
180
180
 
181
- Examples of sending MCP commands to various targets:
181
+ When `<target>` is provided, `mcpc` sends MCP requests to the target server:
182
182
 
183
183
  ```bash
184
184
  # Server from config file (stdio)
@@ -754,10 +754,13 @@ and includes the `_mcpc` field with relevant server/session metadata.
754
754
  List, inspect, and call server-provided tools:
755
755
 
756
756
  ```bash
757
- # List available tools
757
+ # List available tools (only names and attributes - useful for dynamic discovery)
758
758
  mcpc @apify tools-list
759
759
 
760
- # Get tool schema details
760
+ # List available tools (full details including input/output args and description)
761
+ mcpc @apify tools-list --full
762
+
763
+ # Get tool schema with full details
761
764
  mcpc @apify tools-get search-actors
762
765
 
763
766
  # Call a tool with arguments
@@ -1057,11 +1060,26 @@ The main `mcpc` process doesn't save log files, but supports [verbose mode](#ver
1057
1060
 
1058
1061
  ## Development
1059
1062
 
1060
- The initial version of `mcpc` was developed by [Jan Curn](https://x.com/jancurn) of [Apify](https://apify.com)
1063
+ The initial version of `mcpc` was developed and [launched by Jan Curn](https://x.com/jancurn/status/2007144080959291756) of [Apify](https://apify.com)
1061
1064
  with the help of Claude Code, during late nights over Christmas 2025 in North Beach, San Francisco.
1062
1065
 
1063
1066
  See [CONTRIBUTING](./CONTRIBUTING.md) for development setup, architecture overview, and contribution guidelines.
1064
1067
 
1068
+ ## Related work
1069
+
1070
+ - https://github.com/steipete/mcporter
1071
+ - https://github.com/philschmid/mcp-cli (https://www.philschmid.de/mcp-cli)
1072
+ - https://github.com/chrishayuk/mcp-cli
1073
+ - https://github.com/wong2/mcp-cli
1074
+ - https://github.com/f/mcptools
1075
+ - https://github.com/adhikasp/mcp-client-cli
1076
+ - https://github.com/mattzcarey/cloudflare-mcp
1077
+ - https://github.com/TeamSparkAI/mcpGraph
1078
+ - https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool (https://x.com/trq212/status/2011523109871108570)
1079
+ - https://cursor.com/blog/dynamic-context-discovery
1080
+ - https://www.anthropic.com/engineering/code-execution-with-mcp
1081
+ - https://blog.cloudflare.com/code-mode/
1082
+
1065
1083
  ## License
1066
1084
 
1067
1085
  Apache-2.0 - see [LICENSE](./LICENSE) for details.