linkedin-toolkit-mcp 2.0.0 → 2.0.2

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # linkedin-toolkit-mcp
2
2
 
3
3
  The MCP server, localhost bridge, HTTP action API, SQLite mirror and `lit` CLI for
4
- [LinkedIn Toolkit](https://github.com/FormatixAI/linkedin-toolkit).
4
+ [LinkedIn Toolkit](https://github.com/OpenRecruiterTools/linkedin-toolkit).
5
5
 
6
6
  This package is the half that agents talk to. The other half is a Chrome extension that drives
7
7
  **your own logged-in LinkedIn session** — there is no headless browser, no hosted service, no
@@ -15,7 +15,7 @@ npx linkedin-toolkit-mcp
15
15
  ## Pairing
16
16
 
17
17
  1. Install the extension: download the `linkedin-toolkit-extension-*.zip` from
18
- [Releases](https://github.com/FormatixAI/linkedin-toolkit/releases), unzip it, then
18
+ [Releases](https://github.com/OpenRecruiterTools/linkedin-toolkit/releases), unzip it, then
19
19
  `chrome://extensions` → **Developer mode** → **Load unpacked** → pick the folder.
20
20
  2. Run `npx linkedin-toolkit-mcp`. The first run prints a pairing token and stores it in
21
21
  `~/.linkedin-toolkit/config.json` (owner-only).
@@ -65,16 +65,16 @@ raised by this server, the CLI, an agent or a config file.
65
65
 
66
66
  Automating your LinkedIn account may breach LinkedIn's User Agreement, and accounts are restricted
67
67
  and banned for it. That risk is yours. Read
68
- [docs/safety.md](https://github.com/FormatixAI/linkedin-toolkit/blob/main/docs/safety.md) before
68
+ [docs/safety.md](https://github.com/OpenRecruiterTools/linkedin-toolkit/blob/master/docs/safety.md) before
69
69
  you point anything at an account you care about.
70
70
 
71
71
  ## Documentation
72
72
 
73
- - [Action contract](https://github.com/FormatixAI/linkedin-toolkit/blob/main/docs/actions.md) —
73
+ - [Action contract](https://github.com/OpenRecruiterTools/linkedin-toolkit/blob/master/docs/actions.md) —
74
74
  every action, param, result, error code and event.
75
- - [Agent setup](https://github.com/FormatixAI/linkedin-toolkit/blob/main/docs/agents/README.md) —
75
+ - [Agent setup](https://github.com/OpenRecruiterTools/linkedin-toolkit/blob/master/docs/agents/README.md) —
76
76
  Claude Code, OpenAI Agents, LangChain, n8n and the rest.
77
- - [Safety](https://github.com/FormatixAI/linkedin-toolkit/blob/main/docs/safety.md).
77
+ - [Safety](https://github.com/OpenRecruiterTools/linkedin-toolkit/blob/master/docs/safety.md).
78
78
 
79
79
  MIT licensed. Issues and pull requests:
80
- <https://github.com/FormatixAI/linkedin-toolkit>
80
+ <https://github.com/OpenRecruiterTools/linkedin-toolkit>
package/dist/server.d.ts CHANGED
@@ -1,3 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import { Toolkit } from './toolkit.js';
3
+ /**
4
+ * The package binary normally starts an MCP server for an agent. Let people
5
+ * discover the companion CLI without accidentally starting a long-lived
6
+ * server when they only asked for usage information.
7
+ */
8
+ export declare function isCliInfoRequest(argv: string[]): boolean;
9
+ /** `--help`, but not `--version`: only help gets the explanatory preamble. */
10
+ export declare function isHelpRequest(argv: string[]): boolean;
11
+ /**
12
+ * What `npx linkedin-toolkit-mcp --help` prints above the `lit` usage.
13
+ *
14
+ * Someone who reaches this binary from a client's MCP settings, a registry
15
+ * listing or `npx` has usually never seen the extension, so the usage alone
16
+ * ("Usage: lit ...") answers a question they did not ask. These lines say what
17
+ * the binary is, how to wire it in, and where the pairing token is.
18
+ */
19
+ export declare const HELP_INTRO: string;
3
20
  export declare function startStdioServer(): Promise<Toolkit>;
package/dist/server.js CHANGED
@@ -10,6 +10,41 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
10
10
  import { loadConfig } from './config.js';
11
11
  import { Toolkit } from './toolkit.js';
12
12
  import { createMcpServer } from './tools.js';
13
+ /**
14
+ * The package binary normally starts an MCP server for an agent. Let people
15
+ * discover the companion CLI without accidentally starting a long-lived
16
+ * server when they only asked for usage information.
17
+ */
18
+ export function isCliInfoRequest(argv) {
19
+ return argv.some((arg) => ['--help', '-h', '--version', '-V'].includes(arg));
20
+ }
21
+ /** `--help`, but not `--version`: only help gets the explanatory preamble. */
22
+ export function isHelpRequest(argv) {
23
+ return argv.some((arg) => ['--help', '-h'].includes(arg));
24
+ }
25
+ /**
26
+ * What `npx linkedin-toolkit-mcp --help` prints above the `lit` usage.
27
+ *
28
+ * Someone who reaches this binary from a client's MCP settings, a registry
29
+ * listing or `npx` has usually never seen the extension, so the usage alone
30
+ * ("Usage: lit ...") answers a question they did not ask. These lines say what
31
+ * the binary is, how to wire it in, and where the pairing token is.
32
+ */
33
+ export const HELP_INTRO = [
34
+ 'linkedin-toolkit-mcp is a stdio MCP server. It carries no LinkedIn code itself: it pairs',
35
+ 'with the LinkedIn Toolkit Chrome extension over a localhost WebSocket and drives your own',
36
+ 'logged-in session — no headless browser, no hosted service, no account of ours.',
37
+ '',
38
+ 'Wire it into an MCP client with:',
39
+ ' {"command": "npx", "args": ["-y", "linkedin-toolkit-mcp"]}',
40
+ '',
41
+ 'The pairing token is printed on first start and stored in ~/.linkedin-toolkit/config.json;',
42
+ 'read it back with `lit config get token --reveal` and paste it into the extension popup.',
43
+ 'Run `lit serve --http` instead for the HTTP action API and MCP over Streamable HTTP.',
44
+ '',
45
+ 'The rest of this help is the bundled `lit` CLI, which ships in the same package:',
46
+ '',
47
+ ].join('\n');
13
48
  export async function startStdioServer() {
14
49
  const { config } = loadConfig();
15
50
  const toolkit = new Toolkit({ config });
@@ -30,7 +65,18 @@ const invokedDirectly = process.argv[1]
30
65
  process.argv[1].endsWith('server.js')
31
66
  : false;
32
67
  if (invokedDirectly) {
33
- startStdioServer().catch((err) => {
68
+ const argv = process.argv.slice(2);
69
+ const start = isCliInfoRequest(argv)
70
+ ? async () => {
71
+ if (isHelpRequest(argv))
72
+ process.stdout.write(`${HELP_INTRO}\n`);
73
+ const { run } = await import('./cli.js');
74
+ const code = await run(argv);
75
+ if (code !== 0)
76
+ process.exit(code);
77
+ }
78
+ : startStdioServer;
79
+ start().catch((err) => {
34
80
  process.stderr.write(`linkedin-toolkit-mcp: failed to start: ${String(err)}\n`);
35
81
  process.exit(1);
36
82
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAEtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4DAA4D,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI;QACjF,uCAAuC,MAAM,CAAC,KAAK,IAAI,CAC1D,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC;AAEV,IAAI,eAAe,EAAE,CAAC;IACpB,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "linkedin-toolkit-mcp",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
+ "mcpName": "io.github.FormatixAI/linkedin-toolkit",
4
5
  "description": "MCP server, localhost bridge, HTTP action API, SQLite mirror and lit CLI for LinkedIn Toolkit.",
5
6
  "license": "MIT",
6
7
  "type": "module",