@apify/mcpc 0.1.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.
Files changed (178) hide show
  1. package/.claude/settings.local.json +36 -0
  2. package/.eslintrc.json +44 -0
  3. package/.idea/codeStyles/Project.xml +60 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +11 -0
  6. package/.idea/prettier.xml +6 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/.idea/workspace.xml +572 -0
  9. package/LICENSE +201 -0
  10. package/PHASE1-SUMMARY.md +269 -0
  11. package/PUBLISHING.md +111 -0
  12. package/README.md +1056 -0
  13. package/TESTING.md +212 -0
  14. package/TODOs.md +94 -0
  15. package/bin/mcpc +9 -0
  16. package/bin/mcpc-bridge +9 -0
  17. package/dist/bridge/index.d.ts +3 -0
  18. package/dist/bridge/index.d.ts.map +1 -0
  19. package/dist/bridge/index.js +587 -0
  20. package/dist/bridge/index.js.map +1 -0
  21. package/dist/cli/commands/auth.d.ts +9 -0
  22. package/dist/cli/commands/auth.d.ts.map +1 -0
  23. package/dist/cli/commands/auth.js +81 -0
  24. package/dist/cli/commands/auth.js.map +1 -0
  25. package/dist/cli/commands/clean.d.ts +11 -0
  26. package/dist/cli/commands/clean.d.ts.map +1 -0
  27. package/dist/cli/commands/clean.js +224 -0
  28. package/dist/cli/commands/clean.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +8 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +8 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/logging.d.ts +3 -0
  34. package/dist/cli/commands/logging.d.ts.map +1 -0
  35. package/dist/cli/commands/logging.js +22 -0
  36. package/dist/cli/commands/logging.js.map +1 -0
  37. package/dist/cli/commands/prompts.d.ts +6 -0
  38. package/dist/cli/commands/prompts.d.ts.map +1 -0
  39. package/dist/cli/commands/prompts.js +27 -0
  40. package/dist/cli/commands/prompts.js.map +1 -0
  41. package/dist/cli/commands/resources.d.ts +11 -0
  42. package/dist/cli/commands/resources.d.ts.map +1 -0
  43. package/dist/cli/commands/resources.js +70 -0
  44. package/dist/cli/commands/resources.js.map +1 -0
  45. package/dist/cli/commands/sessions.d.ts +28 -0
  46. package/dist/cli/commands/sessions.d.ts.map +1 -0
  47. package/dist/cli/commands/sessions.js +356 -0
  48. package/dist/cli/commands/sessions.js.map +1 -0
  49. package/dist/cli/commands/tools.d.ts +8 -0
  50. package/dist/cli/commands/tools.d.ts.map +1 -0
  51. package/dist/cli/commands/tools.js +54 -0
  52. package/dist/cli/commands/tools.js.map +1 -0
  53. package/dist/cli/commands/utilities.d.ts +3 -0
  54. package/dist/cli/commands/utilities.d.ts.map +1 -0
  55. package/dist/cli/commands/utilities.js +20 -0
  56. package/dist/cli/commands/utilities.js.map +1 -0
  57. package/dist/cli/helpers.d.ts +18 -0
  58. package/dist/cli/helpers.d.ts.map +1 -0
  59. package/dist/cli/helpers.js +165 -0
  60. package/dist/cli/helpers.js.map +1 -0
  61. package/dist/cli/index.d.ts +3 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +326 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/output.d.ts +18 -0
  66. package/dist/cli/output.d.ts.map +1 -0
  67. package/dist/cli/output.js +221 -0
  68. package/dist/cli/output.js.map +1 -0
  69. package/dist/cli/parser.d.ts +19 -0
  70. package/dist/cli/parser.d.ts.map +1 -0
  71. package/dist/cli/parser.js +168 -0
  72. package/dist/cli/parser.js.map +1 -0
  73. package/dist/cli/shell-parser.d.ts +5 -0
  74. package/dist/cli/shell-parser.d.ts.map +1 -0
  75. package/dist/cli/shell-parser.js +38 -0
  76. package/dist/cli/shell-parser.js.map +1 -0
  77. package/dist/cli/shell.d.ts +2 -0
  78. package/dist/cli/shell.d.ts.map +1 -0
  79. package/dist/cli/shell.js +277 -0
  80. package/dist/cli/shell.js.map +1 -0
  81. package/dist/cli/tool-result.d.ts +2 -0
  82. package/dist/cli/tool-result.d.ts.map +1 -0
  83. package/dist/cli/tool-result.js +19 -0
  84. package/dist/cli/tool-result.js.map +1 -0
  85. package/dist/core/factory.d.ts +19 -0
  86. package/dist/core/factory.d.ts.map +1 -0
  87. package/dist/core/factory.js +55 -0
  88. package/dist/core/factory.js.map +1 -0
  89. package/dist/core/index.d.ts +4 -0
  90. package/dist/core/index.d.ts.map +1 -0
  91. package/dist/core/index.js +4 -0
  92. package/dist/core/index.js.map +1 -0
  93. package/dist/core/mcp-client.d.ts +30 -0
  94. package/dist/core/mcp-client.d.ts.map +1 -0
  95. package/dist/core/mcp-client.js +215 -0
  96. package/dist/core/mcp-client.js.map +1 -0
  97. package/dist/core/transports.d.ts +12 -0
  98. package/dist/core/transports.d.ts.map +1 -0
  99. package/dist/core/transports.js +65 -0
  100. package/dist/core/transports.js.map +1 -0
  101. package/dist/lib/auth/auth-profiles.d.ts +7 -0
  102. package/dist/lib/auth/auth-profiles.d.ts.map +1 -0
  103. package/dist/lib/auth/auth-profiles.js +105 -0
  104. package/dist/lib/auth/auth-profiles.js.map +1 -0
  105. package/dist/lib/auth/keychain.d.ts +22 -0
  106. package/dist/lib/auth/keychain.d.ts.map +1 -0
  107. package/dist/lib/auth/keychain.js +92 -0
  108. package/dist/lib/auth/keychain.js.map +1 -0
  109. package/dist/lib/auth/oauth-flow.d.ts +7 -0
  110. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  111. package/dist/lib/auth/oauth-flow.js +236 -0
  112. package/dist/lib/auth/oauth-flow.js.map +1 -0
  113. package/dist/lib/auth/oauth-provider.d.ts +24 -0
  114. package/dist/lib/auth/oauth-provider.d.ts.map +1 -0
  115. package/dist/lib/auth/oauth-provider.js +144 -0
  116. package/dist/lib/auth/oauth-provider.js.map +1 -0
  117. package/dist/lib/auth/oauth-token-manager.d.ts +25 -0
  118. package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -0
  119. package/dist/lib/auth/oauth-token-manager.js +70 -0
  120. package/dist/lib/auth/oauth-token-manager.js.map +1 -0
  121. package/dist/lib/auth/oauth-utils.d.ts +14 -0
  122. package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
  123. package/dist/lib/auth/oauth-utils.js +68 -0
  124. package/dist/lib/auth/oauth-utils.js.map +1 -0
  125. package/dist/lib/auth/token-refresh.d.ts +2 -0
  126. package/dist/lib/auth/token-refresh.d.ts.map +1 -0
  127. package/dist/lib/auth/token-refresh.js +70 -0
  128. package/dist/lib/auth/token-refresh.js.map +1 -0
  129. package/dist/lib/bridge-client.d.ts +23 -0
  130. package/dist/lib/bridge-client.d.ts.map +1 -0
  131. package/dist/lib/bridge-client.js +181 -0
  132. package/dist/lib/bridge-client.js.map +1 -0
  133. package/dist/lib/bridge-manager.d.ts +17 -0
  134. package/dist/lib/bridge-manager.d.ts.map +1 -0
  135. package/dist/lib/bridge-manager.js +240 -0
  136. package/dist/lib/bridge-manager.js.map +1 -0
  137. package/dist/lib/config.d.ts +6 -0
  138. package/dist/lib/config.d.ts.map +1 -0
  139. package/dist/lib/config.js +116 -0
  140. package/dist/lib/config.js.map +1 -0
  141. package/dist/lib/errors.d.ts +23 -0
  142. package/dist/lib/errors.d.ts.map +1 -0
  143. package/dist/lib/errors.js +81 -0
  144. package/dist/lib/errors.js.map +1 -0
  145. package/dist/lib/file-lock.d.ts +2 -0
  146. package/dist/lib/file-lock.d.ts.map +1 -0
  147. package/dist/lib/file-lock.js +46 -0
  148. package/dist/lib/file-lock.js.map +1 -0
  149. package/dist/lib/file-logger.d.ts +19 -0
  150. package/dist/lib/file-logger.d.ts.map +1 -0
  151. package/dist/lib/file-logger.js +126 -0
  152. package/dist/lib/file-logger.js.map +1 -0
  153. package/dist/lib/index.d.ts +6 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +6 -0
  156. package/dist/lib/index.js.map +1 -0
  157. package/dist/lib/logger.d.ts +24 -0
  158. package/dist/lib/logger.d.ts.map +1 -0
  159. package/dist/lib/logger.js +189 -0
  160. package/dist/lib/logger.js.map +1 -0
  161. package/dist/lib/session-client.d.ts +28 -0
  162. package/dist/lib/session-client.d.ts.map +1 -0
  163. package/dist/lib/session-client.js +104 -0
  164. package/dist/lib/session-client.js.map +1 -0
  165. package/dist/lib/sessions.d.ts +9 -0
  166. package/dist/lib/sessions.d.ts.map +1 -0
  167. package/dist/lib/sessions.js +116 -0
  168. package/dist/lib/sessions.js.map +1 -0
  169. package/dist/lib/types.d.ts +117 -0
  170. package/dist/lib/types.d.ts.map +1 -0
  171. package/dist/lib/types.js +2 -0
  172. package/dist/lib/types.js.map +1 -0
  173. package/dist/lib/utils.d.ts +29 -0
  174. package/dist/lib/utils.d.ts.map +1 -0
  175. package/dist/lib/utils.js +173 -0
  176. package/dist/lib/utils.js.map +1 -0
  177. package/package.json +71 -0
  178. package/tsconfig.test.json +11 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(ls:*)",
5
+ "WebSearch",
6
+ "Bash(npm test:*)",
7
+ "Bash(npm run lint)",
8
+ "Bash(node bin/mcpc:*)",
9
+ "Bash(node bin/mcpc-bridge:*)",
10
+ "Bash(npm install:*)",
11
+ "Bash(npm run build:*)",
12
+ "Bash(npm run test:coverage:*)",
13
+ "Bash(npm run lint:fix:*)",
14
+ "Bash(node:*)",
15
+ "Bash(cat:*)",
16
+ "Bash(mcpc --version:*)",
17
+ "Bash(mcpc --help:*)",
18
+ "Bash(EXAMPLE_API_TOKEN=test123 node dist/cli/index.js:*)",
19
+ "Bash(~/.mcpc/sessions.json <<'EOF'\n{\n \"sessions\": {\n \"apify\": {\n \"name\": \"apify\",\n \"target\": \"https://mcp.apify.com\",\n \"transport\": \"http\",\n \"profileName\": \"default\",\n \"pid\": 12345,\n \"socketPath\": \"/Users/test/.mcpc/bridges/apify.sock\",\n \"protocolVersion\": \"2025-11-25\",\n \"serverInfo\": {\n \"name\": \"Apify MCP Server\",\n \"version\": \"1.0.0\"\n },\n \"createdAt\": \"2025-12-01T10:00:00Z\",\n \"updatedAt\": \"2025-12-01T10:00:00Z\"\n },\n \"local\": {\n \"name\": \"local\",\n \"target\": \"@modelcontextprotocol/server-filesystem\",\n \"transport\": \"stdio\",\n \"pid\": 12346,\n \"socketPath\": \"/Users/test/.mcpc/bridges/local.sock\",\n \"protocolVersion\": \"2025-11-25\",\n \"createdAt\": \"2025-12-10T15:00:00Z\",\n \"updatedAt\": \"2025-12-10T15:00:00Z\"\n }\n }\n}\nEOF)",
20
+ "Bash(~/.mcpc/auth-profiles.json <<'EOF'\n{\n \"profiles\": {\n \"https://mcp.apify.com\": {\n \"default\": {\n \"name\": \"default\",\n \"serverUrl\": \"https://mcp.apify.com\",\n \"authType\": \"oauth\",\n \"oauthIssuer\": \"https://auth.apify.com\",\n \"scopes\": [\"read\", \"write\"],\n \"authenticatedAt\": \"2025-12-01T10:00:00Z\",\n \"expiresAt\": \"2026-12-01T10:00:00Z\",\n \"createdAt\": \"2025-12-01T10:00:00Z\",\n \"updatedAt\": \"2025-12-01T10:00:00Z\"\n }\n }\n }\n}\nEOF)",
21
+ "Bash(MCPC_JSON=1 node dist/cli/index.js:*)",
22
+ "Bash(MCPC_VERBOSE=true node:*)",
23
+ "Bash(~/.mcpc/sessions.json <<'EOF'\n{\n \"sessions\": {\n \"@test\": {\n \"name\": \"@test\",\n \"target\": \"npx\",\n \"transport\": \"stdio\",\n \"socketPath\": \"/Users/jancurn/.mcpc/bridges/@test.sock\"\n }\n }\n}\nEOF)",
24
+ "Bash(# Create a proper test with existing @fs session that works\ncat > ~/.mcpc/sessions.json <<'EOF'\n{\n \"sessions\": {\n \"@fs\": {\n \"name\": \"@fs\",\n \"target\": \"npx\",\n \"transport\": \"stdio\",\n \"pid\": 99999,\n \"socketPath\": \"/Users/jancurn/.mcpc/bridges/@fs.sock\",\n \"createdAt\": \"2025-12-20T20:41:47.097Z\",\n \"updatedAt\": \"2025-12-20T20:41:47.097Z\"\n }\n }\n}\nEOF\n# Create orphaned and active session log files\nrm -f ~/.mcpc/logs/bridge-*.log*\ntouch ~/.mcpc/logs/bridge-@fake1.log\ntouch ~/.mcpc/logs/bridge-@fake1.log.1\ntouch ~/.mcpc/logs/bridge-@fake1.log.2\ntouch ~/.mcpc/logs/bridge-@fake2.log\ntouch ~/.mcpc/logs/bridge-@fake2.log.1\ntouch ~/.mcpc/logs/bridge-@fs.log\ntouch ~/.mcpc/logs/bridge-@fs.log.1\necho \"\"Before cleanup:\"\"\nls ~/.mcpc/logs/bridge-*.log*)",
25
+ "Bash(# Set up test scenario\ncat > ~/.mcpc/sessions.json <<'EOF'\n{\n \"sessions\": {\n \"@fs\": {\n \"name\": \"@fs\",\n \"target\": \"npx\",\n \"transport\": \"stdio\",\n \"socketPath\": \"/Users/jancurn/.mcpc/bridges/@fs.sock\"\n }\n }\n}\nEOF\n\n# Clean up old files\nrm -f ~/.mcpc/logs/bridge-*.log*\n\n# Create test files with different ages\n# Recent orphaned file \\(should NOT be deleted\\)\ntouch ~/.mcpc/logs/bridge-@recent.log\ntouch ~/.mcpc/logs/bridge-@recent.log.1\n\n# Old orphaned file \\(should be deleted\\) - set mtime to 8 days ago\ntouch -t $\\(date -v-8d +%Y%m%d%H%M.%S\\) ~/.mcpc/logs/bridge-@old.log 2>/dev/null || \\\\\n touch -d \"\"8 days ago\"\" ~/.mcpc/logs/bridge-@old.log 2>/dev/null || \\\\\n echo \"\"Note: Could not set old file timestamp on this system\"\"\ntouch -t $\\(date -v-8d +%Y%m%d%H%M.%S\\) ~/.mcpc/logs/bridge-@old.log.1 2>/dev/null || \\\\\n touch -d \"\"8 days ago\"\" ~/.mcpc/logs/bridge-@old.log.1 2>/dev/null || \\\\\n true\n\n# Active session file \\(should NOT be deleted\\)\ntouch ~/.mcpc/logs/bridge-@fs.log\ntouch ~/.mcpc/logs/bridge-@fs.log.1\n\necho \"\"Before cleanup:\"\"\nls -lh ~/.mcpc/logs/bridge-*.log* 2>/dev/null || echo \"\"No bridge log files\"\")",
26
+ "Bash(grep:*)",
27
+ "Bash(# Kill the bridge process kill 54453 || true sleep 1 # Now try to use the session - should auto-restart the bridge node dist/cli/index.js @fs-test tools-list --verbose 2>&1)",
28
+ "Bash(chmod:*)",
29
+ "Bash(npx tsx:*)",
30
+ "Bash(pkill:*)",
31
+ "Bash(test/e2e/run.sh:*)",
32
+ "Bash(echo:*)",
33
+ "Bash(tree:*)"
34
+ ]
35
+ }
36
+ }
package/.eslintrc.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "root": true,
3
+ "parser": "@typescript-eslint/parser",
4
+ "parserOptions": {
5
+ "ecmaVersion": 2022,
6
+ "sourceType": "module",
7
+ "project": "./tsconfig.json"
8
+ },
9
+ "plugins": [
10
+ "@typescript-eslint"
11
+ ],
12
+ "extends": [
13
+ "eslint:recommended",
14
+ "plugin:@typescript-eslint/recommended",
15
+ "plugin:@typescript-eslint/recommended-requiring-type-checking"
16
+ ],
17
+ "rules": {
18
+ "@typescript-eslint/no-unused-vars": [
19
+ "error",
20
+ {
21
+ "argsIgnorePattern": "^_",
22
+ "varsIgnorePattern": "^_"
23
+ }
24
+ ],
25
+ "@typescript-eslint/explicit-function-return-type": [
26
+ "warn",
27
+ {
28
+ "allowExpressions": true
29
+ }
30
+ ],
31
+ "@typescript-eslint/no-explicit-any": "warn",
32
+ "@typescript-eslint/no-non-null-assertion": "warn",
33
+ "no-console": "off"
34
+ },
35
+ "env": {
36
+ "node": true,
37
+ "es2022": true
38
+ },
39
+ "ignorePatterns": [
40
+ "dist",
41
+ "node_modules",
42
+ "*.js"
43
+ ]
44
+ }
@@ -0,0 +1,60 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <code_scheme name="Project" version="173">
3
+ <option name="LINE_SEPARATOR" value="&#10;" />
4
+ <HTMLCodeStyleSettings>
5
+ <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
6
+ </HTMLCodeStyleSettings>
7
+ <JSCodeStyleSettings version="0">
8
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
9
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
10
+ <option name="USE_DOUBLE_QUOTES" value="false" />
11
+ <option name="FORCE_QUOTE_STYlE" value="true" />
12
+ <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
13
+ <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
14
+ <option name="SPACES_WITHIN_IMPORTS" value="true" />
15
+ </JSCodeStyleSettings>
16
+ <TypeScriptCodeStyleSettings version="0">
17
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
18
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
19
+ <option name="USE_DOUBLE_QUOTES" value="false" />
20
+ <option name="FORCE_QUOTE_STYlE" value="true" />
21
+ <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
22
+ <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
23
+ <option name="SPACES_WITHIN_IMPORTS" value="true" />
24
+ </TypeScriptCodeStyleSettings>
25
+ <VueCodeStyleSettings>
26
+ <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
27
+ <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
28
+ </VueCodeStyleSettings>
29
+ <codeStyleSettings language="HTML">
30
+ <option name="SOFT_MARGINS" value="100" />
31
+ <indentOptions>
32
+ <option name="INDENT_SIZE" value="2" />
33
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
34
+ <option name="TAB_SIZE" value="2" />
35
+ </indentOptions>
36
+ </codeStyleSettings>
37
+ <codeStyleSettings language="JavaScript">
38
+ <option name="SOFT_MARGINS" value="100" />
39
+ <indentOptions>
40
+ <option name="INDENT_SIZE" value="2" />
41
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
42
+ <option name="TAB_SIZE" value="2" />
43
+ </indentOptions>
44
+ </codeStyleSettings>
45
+ <codeStyleSettings language="TypeScript">
46
+ <option name="SOFT_MARGINS" value="100" />
47
+ <indentOptions>
48
+ <option name="INDENT_SIZE" value="2" />
49
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
50
+ <option name="TAB_SIZE" value="2" />
51
+ </indentOptions>
52
+ </codeStyleSettings>
53
+ <codeStyleSettings language="Vue">
54
+ <option name="SOFT_MARGINS" value="100" />
55
+ <indentOptions>
56
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
57
+ </indentOptions>
58
+ </codeStyleSettings>
59
+ </code_scheme>
60
+ </component>
@@ -0,0 +1,5 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <state>
3
+ <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
+ </state>
5
+ </component>
@@ -0,0 +1,11 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="ES6PreferShortImport" enabled="false" level="WARNING" enabled_by_default="false" />
5
+ <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
6
+ <inspection_tool class="UnnecessaryLocalVariableJS" enabled="false" level="WARNING" enabled_by_default="false">
7
+ <option name="m_ignoreImmediatelyReturnedVariables" value="false" />
8
+ <option name="m_ignoreAnnotatedVariables" value="false" />
9
+ </inspection_tool>
10
+ </profile>
11
+ </component>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="PrettierConfiguration">
4
+ <option name="myConfigurationMode" value="AUTOMATIC" />
5
+ </component>
6
+ </project>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>