linkedin-toolkit-mcp 2.0.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.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/bridge.d.ts +95 -0
- package/dist/bridge.js +259 -0
- package/dist/bridge.js.map +1 -0
- package/dist/cli.d.ts +83 -0
- package/dist/cli.js +898 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.js +149 -0
- package/dist/config.js.map +1 -0
- package/dist/contract.d.ts +6770 -0
- package/dist/contract.js +926 -0
- package/dist/contract.js.map +1 -0
- package/dist/db.d.ts +64 -0
- package/dist/db.js +542 -0
- package/dist/db.js.map +1 -0
- package/dist/fake-data.d.ts +277 -0
- package/dist/fake-data.js +789 -0
- package/dist/fake-data.js.map +1 -0
- package/dist/fake-extension.d.ts +51 -0
- package/dist/fake-extension.js +151 -0
- package/dist/fake-extension.js.map +1 -0
- package/dist/gen.d.ts +5 -0
- package/dist/gen.js +22 -0
- package/dist/gen.js.map +1 -0
- package/dist/http.d.ts +27 -0
- package/dist/http.js +329 -0
- package/dist/http.js.map +1 -0
- package/dist/openapi.d.ts +30 -0
- package/dist/openapi.js +306 -0
- package/dist/openapi.js.map +1 -0
- package/dist/prompts.d.ts +9 -0
- package/dist/prompts.js +65 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +7 -0
- package/dist/resources.js +73 -0
- package/dist/resources.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +38 -0
- package/dist/server.js.map +1 -0
- package/dist/toolkit.d.ts +82 -0
- package/dist/toolkit.js +171 -0
- package/dist/toolkit.js.map +1 -0
- package/dist/tools.d.ts +31 -0
- package/dist/tools.js +103 -0
- package/dist/tools.js.map +1 -0
- package/dist/webhooks.d.ts +52 -0
- package/dist/webhooks.js +112 -0
- package/dist/webhooks.js.map +1 -0
- package/openapi.json +8334 -0
- package/package.json +45 -0
- package/tools.json +1205 -0
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const OPENAPI_VERSION = "3.1.0";
|
|
3
|
+
export declare const API_VERSION = "2.0.0";
|
|
4
|
+
type JsonSchema = Record<string, unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* A fully inlined, self-contained JSON schema — what `tools.json` needs, since
|
|
7
|
+
* each tool definition is handed to an agent framework on its own.
|
|
8
|
+
*
|
|
9
|
+
* The one recursive type, a campaign `Step` whose `branch` contains further
|
|
10
|
+
* steps, cannot be expressed inline, so nested branch steps degrade to "any"
|
|
11
|
+
* here; zod still validates them completely at runtime, and the OpenAPI
|
|
12
|
+
* document expresses them properly through `#/components/schemas/Step`.
|
|
13
|
+
* zod-to-json-schema warns about the recursion on every call, which would
|
|
14
|
+
* drown the server log, so the warning is muted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function jsonSchema(schema: z.ZodTypeAny): JsonSchema;
|
|
17
|
+
/** Machine-readable tool definitions: the input for the client packages. */
|
|
18
|
+
export declare function toolsJson(): {
|
|
19
|
+
version: string;
|
|
20
|
+
tools: {
|
|
21
|
+
name: string;
|
|
22
|
+
action: string | null;
|
|
23
|
+
description: string;
|
|
24
|
+
write: boolean;
|
|
25
|
+
inputSchema: JsonSchema;
|
|
26
|
+
}[];
|
|
27
|
+
};
|
|
28
|
+
export declare function buildOpenApi(): JsonSchema;
|
|
29
|
+
export declare function openApiDocument(): JsonSchema;
|
|
30
|
+
export {};
|
package/dist/openapi.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI 3.1, generated from `contract.ts` so it can never drift from the
|
|
3
|
+
* actions the server actually serves. `npm run gen` writes it to
|
|
4
|
+
* `openapi.json`, alongside `tools.json`; the Node and Python clients and the
|
|
5
|
+
* docs are generated from those two files.
|
|
6
|
+
*/
|
|
7
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { ACTIONS, CampaignSchema, CompanySchema, ConfigSchema, EngagerSchema, ERROR_CODES, ListMemberSchema, ListSchema, MessageSchema, PackSchema, PARAMS, ProfileSchema, QueueItemSchema, RateLimitSchema, ResearchRowSchema, ResolvedRowSchema, RESULTS, StatusSchema, StepSchema, ThreadSchema, TOOLS, WriteResultSchema, isWriteAction, toolInputSchema, } from './contract.js';
|
|
10
|
+
export const OPENAPI_VERSION = '3.1.0';
|
|
11
|
+
export const API_VERSION = '2.0.0';
|
|
12
|
+
/**
|
|
13
|
+
* A fully inlined, self-contained JSON schema — what `tools.json` needs, since
|
|
14
|
+
* each tool definition is handed to an agent framework on its own.
|
|
15
|
+
*
|
|
16
|
+
* The one recursive type, a campaign `Step` whose `branch` contains further
|
|
17
|
+
* steps, cannot be expressed inline, so nested branch steps degrade to "any"
|
|
18
|
+
* here; zod still validates them completely at runtime, and the OpenAPI
|
|
19
|
+
* document expresses them properly through `#/components/schemas/Step`.
|
|
20
|
+
* zod-to-json-schema warns about the recursion on every call, which would
|
|
21
|
+
* drown the server log, so the warning is muted.
|
|
22
|
+
*/
|
|
23
|
+
export function jsonSchema(schema) {
|
|
24
|
+
const warn = console.warn;
|
|
25
|
+
console.warn = () => undefined;
|
|
26
|
+
try {
|
|
27
|
+
const generated = zodToJsonSchema(schema, {
|
|
28
|
+
target: 'jsonSchema7',
|
|
29
|
+
$refStrategy: 'none',
|
|
30
|
+
});
|
|
31
|
+
delete generated.$schema;
|
|
32
|
+
return generated;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
console.warn = warn;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Machine-readable tool definitions: the input for the client packages. */
|
|
39
|
+
export function toolsJson() {
|
|
40
|
+
return {
|
|
41
|
+
version: API_VERSION,
|
|
42
|
+
tools: TOOLS.map((tool) => ({
|
|
43
|
+
name: tool.name,
|
|
44
|
+
action: tool.action,
|
|
45
|
+
description: tool.description,
|
|
46
|
+
write: tool.write,
|
|
47
|
+
inputSchema: jsonSchema(toolInputSchema(tool)),
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The shared types, emitted once into `components/schemas` and referenced from
|
|
53
|
+
* every path. This is also how the recursive `Step` type is expressed properly
|
|
54
|
+
* rather than degrading to "any".
|
|
55
|
+
*/
|
|
56
|
+
const DEFINITIONS = {
|
|
57
|
+
Profile: ProfileSchema,
|
|
58
|
+
Company: CompanySchema,
|
|
59
|
+
Engager: EngagerSchema,
|
|
60
|
+
Thread: ThreadSchema,
|
|
61
|
+
Message: MessageSchema,
|
|
62
|
+
List: ListSchema,
|
|
63
|
+
ListMember: ListMemberSchema,
|
|
64
|
+
Step: StepSchema,
|
|
65
|
+
Campaign: CampaignSchema,
|
|
66
|
+
QueueItem: QueueItemSchema,
|
|
67
|
+
ResearchRow: ResearchRowSchema,
|
|
68
|
+
ResolvedRow: ResolvedRowSchema,
|
|
69
|
+
Pack: PackSchema,
|
|
70
|
+
WriteResult: WriteResultSchema,
|
|
71
|
+
RateLimit: RateLimitSchema,
|
|
72
|
+
Status: StatusSchema,
|
|
73
|
+
Config: ConfigSchema,
|
|
74
|
+
};
|
|
75
|
+
const DEFINITION_PATH = 'components/schemas';
|
|
76
|
+
/** Like `jsonSchema`, but referencing the shared component schemas. */
|
|
77
|
+
function refSchema(schema) {
|
|
78
|
+
const generated = zodToJsonSchema(schema, {
|
|
79
|
+
target: 'jsonSchema7',
|
|
80
|
+
$refStrategy: 'root',
|
|
81
|
+
definitions: DEFINITIONS,
|
|
82
|
+
definitionPath: DEFINITION_PATH,
|
|
83
|
+
});
|
|
84
|
+
delete generated.$schema;
|
|
85
|
+
delete generated[DEFINITION_PATH];
|
|
86
|
+
return generated;
|
|
87
|
+
}
|
|
88
|
+
function componentSchemas() {
|
|
89
|
+
const generated = zodToJsonSchema(z.object({}), {
|
|
90
|
+
target: 'jsonSchema7',
|
|
91
|
+
$refStrategy: 'root',
|
|
92
|
+
definitions: DEFINITIONS,
|
|
93
|
+
definitionPath: DEFINITION_PATH,
|
|
94
|
+
});
|
|
95
|
+
return (generated[DEFINITION_PATH] ?? {});
|
|
96
|
+
}
|
|
97
|
+
function envelopeSchema(action) {
|
|
98
|
+
return {
|
|
99
|
+
oneOf: [
|
|
100
|
+
{
|
|
101
|
+
type: 'object',
|
|
102
|
+
required: ['id', 'ok', 'data'],
|
|
103
|
+
properties: {
|
|
104
|
+
id: { type: 'string' },
|
|
105
|
+
ok: { const: true },
|
|
106
|
+
data: refSchema(RESULTS[action]),
|
|
107
|
+
rateLimit: { $ref: '#/components/schemas/RateLimit' },
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{ $ref: '#/components/schemas/ErrorEnvelope' },
|
|
111
|
+
],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The four actions that really do wait for a human in Copilot mode. Everything
|
|
116
|
+
* else in `WRITE_ACTIONS` is a write in the contract's sense — it changes
|
|
117
|
+
* state — but `config.set`, `list.delete` and the rest never reach LinkedIn
|
|
118
|
+
* and never wait for anybody, and a blanket "queues for approval" on them was
|
|
119
|
+
* simply untrue.
|
|
120
|
+
*/
|
|
121
|
+
const QUEUEING_ACTIONS = new Set([
|
|
122
|
+
'outreach.invite',
|
|
123
|
+
'outreach.message',
|
|
124
|
+
'outreach.inmail',
|
|
125
|
+
'outreach.comment',
|
|
126
|
+
]);
|
|
127
|
+
function writeNote(action) {
|
|
128
|
+
if (!isWriteAction(action))
|
|
129
|
+
return '';
|
|
130
|
+
if (QUEUEING_ACTIONS.has(action)) {
|
|
131
|
+
return ' This is a write action: it is rate-capped and queues for human approval in Copilot mode.';
|
|
132
|
+
}
|
|
133
|
+
if (action.startsWith('outreach.')) {
|
|
134
|
+
return ' This is a write action: it is rate-capped and metered against the visit bucket, and is sent directly rather than queued.';
|
|
135
|
+
}
|
|
136
|
+
return ' This is a write action: it changes state on this machine and in the extension, and sends nothing to LinkedIn.';
|
|
137
|
+
}
|
|
138
|
+
export function buildOpenApi() {
|
|
139
|
+
const paths = {};
|
|
140
|
+
for (const action of ACTIONS) {
|
|
141
|
+
paths[`/actions/${action}`] = {
|
|
142
|
+
post: {
|
|
143
|
+
operationId: `action_${action.replace('.', '_')}`,
|
|
144
|
+
summary: action,
|
|
145
|
+
description: `Run the \`${action}\` action on the connected extension.${writeNote(action)}`,
|
|
146
|
+
tags: [action.split('.')[0]],
|
|
147
|
+
security: [{ bearerAuth: [] }],
|
|
148
|
+
requestBody: {
|
|
149
|
+
required: true,
|
|
150
|
+
content: { 'application/json': { schema: refSchema(PARAMS[action]) } },
|
|
151
|
+
},
|
|
152
|
+
responses: {
|
|
153
|
+
'200': {
|
|
154
|
+
description: 'Action envelope.',
|
|
155
|
+
content: { 'application/json': { schema: envelopeSchema(action) } },
|
|
156
|
+
},
|
|
157
|
+
'401': {
|
|
158
|
+
description: 'Missing or wrong bearer token.',
|
|
159
|
+
content: {
|
|
160
|
+
'application/json': { schema: { $ref: '#/components/schemas/ErrorEnvelope' } },
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
for (const tool of TOOLS) {
|
|
168
|
+
paths[`/tools/${tool.name}`] = {
|
|
169
|
+
post: {
|
|
170
|
+
operationId: `tool_${tool.name}`,
|
|
171
|
+
summary: tool.name,
|
|
172
|
+
description: tool.description,
|
|
173
|
+
tags: ['tools'],
|
|
174
|
+
security: [{ bearerAuth: [] }],
|
|
175
|
+
requestBody: {
|
|
176
|
+
required: true,
|
|
177
|
+
content: { 'application/json': { schema: refSchema(toolInputSchema(tool)) } },
|
|
178
|
+
},
|
|
179
|
+
responses: {
|
|
180
|
+
'200': {
|
|
181
|
+
description: 'Tool envelope.',
|
|
182
|
+
content: {
|
|
183
|
+
'application/json': { schema: { $ref: '#/components/schemas/Envelope' } },
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
paths['/health'] = {
|
|
191
|
+
get: {
|
|
192
|
+
operationId: 'health',
|
|
193
|
+
summary: 'Liveness and extension connection state. No authentication.',
|
|
194
|
+
tags: ['server'],
|
|
195
|
+
security: [],
|
|
196
|
+
responses: {
|
|
197
|
+
'200': {
|
|
198
|
+
description: 'Server health.',
|
|
199
|
+
content: {
|
|
200
|
+
'application/json': {
|
|
201
|
+
schema: {
|
|
202
|
+
type: 'object',
|
|
203
|
+
required: ['ok', 'extensionConnected', 'version'],
|
|
204
|
+
properties: {
|
|
205
|
+
ok: { type: 'boolean' },
|
|
206
|
+
extensionConnected: { type: 'boolean' },
|
|
207
|
+
version: { type: 'string' },
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
paths['/openapi.json'] = {
|
|
217
|
+
get: {
|
|
218
|
+
operationId: 'openapi',
|
|
219
|
+
summary: 'This document.',
|
|
220
|
+
tags: ['server'],
|
|
221
|
+
security: [],
|
|
222
|
+
responses: { '200': { description: 'OpenAPI 3.1 document.' } },
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
paths['/mcp'] = {
|
|
226
|
+
post: {
|
|
227
|
+
operationId: 'mcp',
|
|
228
|
+
summary: 'Model Context Protocol over Streamable HTTP.',
|
|
229
|
+
description: 'JSON-RPC 2.0 MCP messages. Point an MCP client at this URL with the pairing token as a bearer token.',
|
|
230
|
+
tags: ['server'],
|
|
231
|
+
security: [{ bearerAuth: [] }],
|
|
232
|
+
requestBody: {
|
|
233
|
+
required: true,
|
|
234
|
+
content: { 'application/json': { schema: { type: 'object' } } },
|
|
235
|
+
},
|
|
236
|
+
responses: { '200': { description: 'MCP response or SSE stream.' } },
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
return {
|
|
240
|
+
openapi: OPENAPI_VERSION,
|
|
241
|
+
info: {
|
|
242
|
+
title: 'LinkedIn Toolkit',
|
|
243
|
+
version: API_VERSION,
|
|
244
|
+
description: 'Local HTTP API for the LinkedIn Toolkit. The server runs on the user\'s own machine and ' +
|
|
245
|
+
'drives their own logged-in Chrome through the toolkit extension; nothing is hosted and no ' +
|
|
246
|
+
'credentials are stored. Every write is rate-capped by the extension; invites, messages, ' +
|
|
247
|
+
'InMails and comments additionally queue for human approval in Copilot mode.',
|
|
248
|
+
license: { name: 'MIT' },
|
|
249
|
+
},
|
|
250
|
+
servers: [{ url: 'http://127.0.0.1:47830', description: 'lit serve --http' }],
|
|
251
|
+
security: [{ bearerAuth: [] }],
|
|
252
|
+
components: {
|
|
253
|
+
securitySchemes: {
|
|
254
|
+
bearerAuth: {
|
|
255
|
+
type: 'http',
|
|
256
|
+
scheme: 'bearer',
|
|
257
|
+
description: 'The pairing token from ~/.linkedin-toolkit/config.json.',
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
schemas: {
|
|
261
|
+
...componentSchemas(),
|
|
262
|
+
Error: {
|
|
263
|
+
type: 'object',
|
|
264
|
+
required: ['code', 'message'],
|
|
265
|
+
properties: {
|
|
266
|
+
code: { type: 'string', enum: [...ERROR_CODES] },
|
|
267
|
+
message: { type: 'string' },
|
|
268
|
+
retryAfter: { type: 'number' },
|
|
269
|
+
howToFix: { type: 'string' },
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
ErrorEnvelope: {
|
|
273
|
+
type: 'object',
|
|
274
|
+
required: ['id', 'ok', 'error'],
|
|
275
|
+
properties: {
|
|
276
|
+
id: { type: 'string' },
|
|
277
|
+
ok: { const: false },
|
|
278
|
+
error: { $ref: '#/components/schemas/Error' },
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
Envelope: {
|
|
282
|
+
oneOf: [
|
|
283
|
+
{
|
|
284
|
+
type: 'object',
|
|
285
|
+
required: ['id', 'ok', 'data'],
|
|
286
|
+
properties: {
|
|
287
|
+
id: { type: 'string' },
|
|
288
|
+
ok: { const: true },
|
|
289
|
+
data: {},
|
|
290
|
+
rateLimit: { $ref: '#/components/schemas/RateLimit' },
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
{ $ref: '#/components/schemas/ErrorEnvelope' },
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
paths,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
let cached = null;
|
|
302
|
+
export function openApiDocument() {
|
|
303
|
+
cached ??= buildOpenApi();
|
|
304
|
+
return cached;
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP prompts: `source-candidates`, `write-opener`, `triage-inbox`.
|
|
3
|
+
*
|
|
4
|
+
* Each one is a short operating procedure that names the exact tools to call in
|
|
5
|
+
* order, so an agent does not have to guess the workflow.
|
|
6
|
+
*/
|
|
7
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import type { Toolkit } from './toolkit.js';
|
|
9
|
+
export declare function registerPrompts(server: McpServer, _toolkit: Toolkit): void;
|
package/dist/prompts.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
function userMessage(text) {
|
|
3
|
+
return { messages: [{ role: 'user', content: { type: 'text', text } }] };
|
|
4
|
+
}
|
|
5
|
+
export function registerPrompts(server, _toolkit) {
|
|
6
|
+
server.registerPrompt('source-candidates', {
|
|
7
|
+
title: 'Source candidates',
|
|
8
|
+
description: 'Source and shortlist people on LinkedIn from a short brief, saving them to a list.',
|
|
9
|
+
argsSchema: {
|
|
10
|
+
brief: z.string().describe('Who you are looking for, in a sentence or two.'),
|
|
11
|
+
count: z.string().optional().describe('How many people to shortlist. Default 25.'),
|
|
12
|
+
},
|
|
13
|
+
}, ({ brief, count }) => userMessage([
|
|
14
|
+
`Source LinkedIn candidates for this brief:\n\n${brief}\n`,
|
|
15
|
+
`Target shortlist size: ${count ?? '25'}.`,
|
|
16
|
+
'',
|
|
17
|
+
'Work in this order:',
|
|
18
|
+
'1. linkedin_get_status — confirm the extension is connected and check the remaining search quota.',
|
|
19
|
+
'2. linkedin_search_people — translate the brief into keywords plus title, company and location filters. Page with nextStart until you have enough, staying inside the daily search cap.',
|
|
20
|
+
'3. linkedin_get_connection_status — for the shortlist, so you know who is already a first-degree connection.',
|
|
21
|
+
'4. linkedin_list_create then linkedin_list_add — save the shortlist under a name that describes the brief.',
|
|
22
|
+
'',
|
|
23
|
+
'Then report the list name and id, how many people it holds, and a table of the shortlist with name, headline, company, location and connection status. Flag anyone whose fit you are unsure about rather than padding the list. Do not send any invite or message unless the human asks for one.',
|
|
24
|
+
].join('\n')));
|
|
25
|
+
server.registerPrompt('write-opener', {
|
|
26
|
+
title: 'Write an opener',
|
|
27
|
+
description: 'Draft a short, specific connection-request opener for one person.',
|
|
28
|
+
argsSchema: {
|
|
29
|
+
publicId: z.string().describe('The LinkedIn publicId, e.g. ada-lovelace.'),
|
|
30
|
+
tone: z.string().optional().describe('warm, direct, peer-to-peer, formal. Default warm.'),
|
|
31
|
+
},
|
|
32
|
+
}, ({ publicId, tone }) => userMessage([
|
|
33
|
+
`Draft a connection-request opener for LinkedIn profile "${publicId}".`,
|
|
34
|
+
`Tone: ${tone ?? 'warm'}.`,
|
|
35
|
+
'',
|
|
36
|
+
'Work in this order:',
|
|
37
|
+
`1. linkedin_get_profile with publicId "${publicId}" and full=true, so the note can reference something real.`,
|
|
38
|
+
'2. Optionally linkedin_get_connection_status to check they are not already connected.',
|
|
39
|
+
'',
|
|
40
|
+
'Rules for the note: under 300 characters (LinkedIn will reject longer), no flattery, no "I came across your profile", one concrete detail from their profile, and one clear reason to connect. Offer two variants and say which you would send.',
|
|
41
|
+
'',
|
|
42
|
+
'Show the draft and stop. Do not call linkedin_send_invite — the human decides.',
|
|
43
|
+
].join('\n')));
|
|
44
|
+
server.registerPrompt('triage-inbox', {
|
|
45
|
+
title: 'Triage inbox',
|
|
46
|
+
description: 'Triage recent LinkedIn replies into positive, neutral and negative buckets.',
|
|
47
|
+
argsSchema: {
|
|
48
|
+
since: z
|
|
49
|
+
.string()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('How far back to look: an epoch milliseconds value, or e.g. 24h or 7d.'),
|
|
52
|
+
},
|
|
53
|
+
}, ({ since }) => userMessage([
|
|
54
|
+
`Triage the LinkedIn inbox${since ? ` for everything since ${since}` : ' for the last 7 days'}.`,
|
|
55
|
+
'',
|
|
56
|
+
'Work in this order:',
|
|
57
|
+
'1. linkedin_get_conversations — with the since window, to list threads.',
|
|
58
|
+
'2. linkedin_get_messages — for each thread that looks like a reply worth reading.',
|
|
59
|
+
'',
|
|
60
|
+
'Bucket every thread as positive (wants to talk), neutral (asked a question or needs nurturing) or negative (not interested, asked to stop). For each positive thread suggest a one-paragraph reply. For each negative thread say explicitly that the person should be removed from any running campaign, and name the campaign if you can find it with linkedin_campaign_list.',
|
|
61
|
+
'',
|
|
62
|
+
'Report a table of thread, person, bucket and suggested next step. Send nothing yourself.',
|
|
63
|
+
].join('\n')));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,QAAiB;IAClE,MAAM,CAAC,cAAc,CACnB,mBAAmB,EACnB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,oFAAoF;QACjG,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACnF;KACF,EACD,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CACnB,WAAW,CACT;QACE,iDAAiD,KAAK,IAAI;QAC1D,0BAA0B,KAAK,IAAI,IAAI,GAAG;QAC1C,EAAE;QACF,qBAAqB;QACrB,mGAAmG;QACnG,yLAAyL;QACzL,8GAA8G;QAC9G,4GAA4G;QAC5G,EAAE;QACF,kSAAkS;KACnS,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACJ,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,cAAc,EACd;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,mEAAmE;QAChF,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SAC1F;KACF,EACD,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CACrB,WAAW,CACT;QACE,2DAA2D,QAAQ,IAAI;QACvE,SAAS,IAAI,IAAI,MAAM,GAAG;QAC1B,EAAE;QACF,qBAAqB;QACrB,0CAA0C,QAAQ,4DAA4D;QAC9G,uFAAuF;QACvF,EAAE;QACF,iPAAiP;QACjP,EAAE;QACF,gFAAgF;KACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACJ,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,6EAA6E;QAC1F,UAAU,EAAE;YACV,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;SACrF;KACF,EACD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACZ,WAAW,CACT;QACE,4BAA4B,KAAK,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,GAAG;QAChG,EAAE;QACF,qBAAqB;QACrB,yEAAyE;QACzE,mFAAmF;QACnF,EAAE;QACF,gXAAgX;QAChX,EAAE;QACF,0FAA0F;KAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP resources: `linkedin://status`, `linkedin://profile/{publicId}`,
|
|
3
|
+
* `linkedin://list/{listId}` and `linkedin://queue`.
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import type { Toolkit } from './toolkit.js';
|
|
7
|
+
export declare function registerResources(server: McpServer, toolkit: Toolkit): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP resources: `linkedin://status`, `linkedin://profile/{publicId}`,
|
|
3
|
+
* `linkedin://list/{listId}` and `linkedin://queue`.
|
|
4
|
+
*/
|
|
5
|
+
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { BridgeError } from './bridge.js';
|
|
7
|
+
const MIME = 'application/json';
|
|
8
|
+
function contents(uri, data) {
|
|
9
|
+
return { contents: [{ uri, mimeType: MIME, text: JSON.stringify(data, null, 2) }] };
|
|
10
|
+
}
|
|
11
|
+
function failure(uri, err) {
|
|
12
|
+
const error = err instanceof BridgeError
|
|
13
|
+
? err.toJSON()
|
|
14
|
+
: { code: 'INTERNAL', message: err instanceof Error ? err.message : String(err) };
|
|
15
|
+
return { contents: [{ uri, mimeType: MIME, text: JSON.stringify({ error }, null, 2) }] };
|
|
16
|
+
}
|
|
17
|
+
export function registerResources(server, toolkit) {
|
|
18
|
+
server.registerResource('status', 'linkedin://status', {
|
|
19
|
+
title: 'Toolkit status',
|
|
20
|
+
description: 'Live connection, login, autopilot, business-hours, quota, approval-queue and campaign status.',
|
|
21
|
+
mimeType: MIME,
|
|
22
|
+
}, async (uri) => {
|
|
23
|
+
try {
|
|
24
|
+
return contents(uri.href, await toolkit.call('status.get', {}, { origin: 'mcp' }));
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return failure(uri.href, err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
server.registerResource('queue', 'linkedin://queue', {
|
|
31
|
+
title: 'Approval queue',
|
|
32
|
+
description: 'Writes waiting for human approval in Copilot mode.',
|
|
33
|
+
mimeType: MIME,
|
|
34
|
+
}, async (uri) => {
|
|
35
|
+
try {
|
|
36
|
+
return contents(uri.href, await toolkit.call('queue.list', { status: 'pending' }, { origin: 'mcp' }));
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
return failure(uri.href, err);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
server.registerResource('profile', new ResourceTemplate('linkedin://profile/{publicId}', { list: undefined }), {
|
|
43
|
+
title: 'LinkedIn profile',
|
|
44
|
+
description: 'One profile by publicId, fetched live through the extension.',
|
|
45
|
+
mimeType: MIME,
|
|
46
|
+
}, async (uri, variables) => {
|
|
47
|
+
const publicId = String(variables.publicId ?? '');
|
|
48
|
+
try {
|
|
49
|
+
return contents(uri.href, await toolkit.call('profile.get', { publicId }, { origin: 'mcp' }));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
return failure(uri.href, err);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
server.registerResource('list', new ResourceTemplate('linkedin://list/{listId}', { list: undefined }), {
|
|
56
|
+
title: 'Prospect list',
|
|
57
|
+
description: 'One local list with its members.',
|
|
58
|
+
mimeType: MIME,
|
|
59
|
+
}, async (uri, variables) => {
|
|
60
|
+
const listId = String(variables.listId ?? '');
|
|
61
|
+
try {
|
|
62
|
+
const [list, members] = await Promise.all([
|
|
63
|
+
toolkit.call('list.get', { listId }, { origin: 'mcp' }),
|
|
64
|
+
toolkit.call('list.members', { listId }, { origin: 'mcp' }),
|
|
65
|
+
]);
|
|
66
|
+
return contents(uri.href, { ...list, ...members });
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
return failure(uri.href, err);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
package/dist/server.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* stdio entry point: the binary an MCP client (Claude Code, Claude Desktop,
|
|
4
|
+
* Cursor, …) launches. Starts the bridge, then speaks MCP over stdio.
|
|
5
|
+
*
|
|
6
|
+
* Nothing may be written to stdout here except MCP frames, so all logging goes
|
|
7
|
+
* to stderr.
|
|
8
|
+
*/
|
|
9
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
10
|
+
import { loadConfig } from './config.js';
|
|
11
|
+
import { Toolkit } from './toolkit.js';
|
|
12
|
+
import { createMcpServer } from './tools.js';
|
|
13
|
+
export async function startStdioServer() {
|
|
14
|
+
const { config } = loadConfig();
|
|
15
|
+
const toolkit = new Toolkit({ config });
|
|
16
|
+
await toolkit.start();
|
|
17
|
+
process.stderr.write(`linkedin-toolkit-mcp: bridge listening on ws://127.0.0.1:${toolkit.bridge.port}\n` +
|
|
18
|
+
`linkedin-toolkit-mcp: pairing token ${config.token}\n`);
|
|
19
|
+
const server = createMcpServer(toolkit);
|
|
20
|
+
await server.connect(new StdioServerTransport());
|
|
21
|
+
const shutdown = () => {
|
|
22
|
+
void toolkit.stop().finally(() => process.exit(0));
|
|
23
|
+
};
|
|
24
|
+
process.on('SIGINT', shutdown);
|
|
25
|
+
process.on('SIGTERM', shutdown);
|
|
26
|
+
return toolkit;
|
|
27
|
+
}
|
|
28
|
+
const invokedDirectly = process.argv[1]
|
|
29
|
+
? import.meta.url === new URL(`file://${process.argv[1].replace(/\\/g, '/')}`).href ||
|
|
30
|
+
process.argv[1].endsWith('server.js')
|
|
31
|
+
: false;
|
|
32
|
+
if (invokedDirectly) {
|
|
33
|
+
startStdioServer().catch((err) => {
|
|
34
|
+
process.stderr.write(`linkedin-toolkit-mcp: failed to start: ${String(err)}\n`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +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"}
|