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 +7 -7
- package/dist/server.d.ts +17 -0
- package/dist/server.js +47 -1
- package/dist/server.js.map +1 -1
- package/package.json +2 -1
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
});
|
package/dist/server.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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",
|