job_ops-mcp 0.7.0 → 0.8.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/.env.example +11 -1
- package/README.md +83 -16
- package/dist/cli.js +31 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/core/auth.js +131 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/profile.js +43 -2
- package/dist/core/profile.js.map +1 -1
- package/dist/core/scoring.js +113 -0
- package/dist/core/scoring.js.map +1 -0
- package/dist/http/app.js +36 -1
- package/dist/http/app.js.map +1 -1
- package/dist/http/elicit.js +106 -0
- package/dist/http/elicit.js.map +1 -0
- package/dist/mcp/client_bridge.js +93 -0
- package/dist/mcp/client_bridge.js.map +1 -0
- package/dist/mcp/define.js +7 -1
- package/dist/mcp/define.js.map +1 -1
- package/dist/mcp/server.js +7 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/batch_evaluate.js +16 -10
- package/dist/mcp/tools/batch_evaluate.js.map +1 -1
- package/dist/mcp/tools/evaluate_job.js +15 -6
- package/dist/mcp/tools/evaluate_job.js.map +1 -1
- package/dist/mcp/tools/ops.js +22 -3
- package/dist/mcp/tools/ops.js.map +1 -1
- package/dist/mcp/tools/profile_elicit.js +117 -0
- package/dist/mcp/tools/profile_elicit.js.map +1 -0
- package/dist/mcp/tools/visa.js +43 -4
- package/dist/mcp/tools/visa.js.map +1 -1
- package/dist/server.js +26 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/.env.example
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
MCP_JSA_PORT=7891
|
|
5
5
|
MCP_JSA_HOST=127.0.0.1
|
|
6
6
|
|
|
7
|
+
# Auth — bearer token gating /mcp, /files/*, and the dashboard (all carry PII).
|
|
8
|
+
# Leave empty for localhost-only use (frictionless). REQUIRED to bind non-localhost:
|
|
9
|
+
# with MCP_JSA_HOST != 127.0.0.1 and no token, the server refuses to start (default-deny).
|
|
10
|
+
# Generate one with: openssl rand -hex 32
|
|
11
|
+
MCP_JSA_AUTH_TOKEN=
|
|
12
|
+
|
|
7
13
|
# Project root — where cv.md, config/profile.yml, portals.yml live.
|
|
8
14
|
# Defaults to the directory this server runs from.
|
|
9
15
|
# To reuse the existing career-ops/ data, point it there:
|
|
@@ -14,7 +20,11 @@ MCP_JSA_PROJECT_ROOT=
|
|
|
14
20
|
MCP_JSA_DATA_DIR=./data
|
|
15
21
|
MCP_JSA_OUTPUT_DIR=./output
|
|
16
22
|
|
|
17
|
-
#
|
|
23
|
+
# Scoring — api/batch paths prefer MCP sampling (your connected client's model; no key).
|
|
24
|
+
# Set false to force the BYO-key provider below even when the client supports sampling.
|
|
25
|
+
MCP_JSA_SAMPLING=true
|
|
26
|
+
|
|
27
|
+
# LLM provider — BYO-key FALLBACK for api/batch paths when the client can't sample.
|
|
18
28
|
# chat-mode (default) runs zero LLM calls server-side; the chat client is the brain.
|
|
19
29
|
MCP_JSA_LLM_PROVIDER=gemini # gemini | deepseek | none
|
|
20
30
|
MCP_JSA_LLM_MODEL=
|
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ without one.
|
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
86
|
-
## Tools (
|
|
86
|
+
## Tools (38 — one MCP `tools/list` call away)
|
|
87
87
|
|
|
88
88
|
| Group | Tools |
|
|
89
89
|
|---|---|
|
|
@@ -94,7 +94,7 @@ without one.
|
|
|
94
94
|
| **Outreach** | `find_warm_intros`, `find_founders`, `draft_outreach`, `draft_followup`, `draft_reply`, `get_outreach_queue`, `update_outreach`, `get_followups_due` |
|
|
95
95
|
| **Interview / offer** | `extract_stories`, `get_story_bank`, `negotiation_brief` |
|
|
96
96
|
| **Research** | `deep_research`, `enrich_company`, `daily_digest` |
|
|
97
|
-
| **Profile + ops** | `get_career_packet`, `update_career_packet`, `cost_estimate` |
|
|
97
|
+
| **Profile + ops** | `get_career_packet`, `update_career_packet`, `update_profile` (elicitation), `cost_estimate` |
|
|
98
98
|
| **Apply (preview only — never submits)** | `apply_prefill` |
|
|
99
99
|
| **Visa (optional, can be hidden)** | `visa_signal`, `import_h1b`, `import_linkedin` |
|
|
100
100
|
| **Scheduler (opt-in cron, off by default)** | `scheduler_status`, `scheduler_enable`, `scheduler_disable` |
|
|
@@ -105,6 +105,43 @@ tailoring_rules, outreach_tone, negotiation_playbook, career_packet — all load
|
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
108
|
+
## No LLM key needed (MCP sampling)
|
|
109
|
+
|
|
110
|
+
The scoring tools (`batch_evaluate`, `evaluate_job` `mode="api"`) prefer **MCP sampling**:
|
|
111
|
+
the server asks your *already-connected client's model* for the completion — same rubric,
|
|
112
|
+
same strict-JSON contract — so you need **no separate Gemini/DeepSeek key**. The chat-mode
|
|
113
|
+
and api-mode rating paths collapse into one sampling-based path.
|
|
114
|
+
|
|
115
|
+
- **Capability- and transport-gated.** Sampling is a server→client request, so it needs a
|
|
116
|
+
transport that carries bidirectional traffic — **stdio** (e.g. Claude Desktop). The
|
|
117
|
+
stateless HTTP transport can't deliver server-initiated requests, so HTTP clients
|
|
118
|
+
**fall back automatically** to the BYO-key path (`MCP_JSA_LLM_PROVIDER` + key); if that
|
|
119
|
+
isn't configured either, `evaluate_job mode="chat"` (the default) still works — your
|
|
120
|
+
chat scores it directly. The gate checks both your client's advertised `sampling`
|
|
121
|
+
capability and the transport, so a fallback is clean (no hang).
|
|
122
|
+
- **Cost.** Sampling runs on the client's model, so the cost is **borne by the client**.
|
|
123
|
+
`cost_estimate` still works: sampling calls are recorded and flagged as client-borne
|
|
124
|
+
($0 server cost) so the total isn't misread.
|
|
125
|
+
- Set `MCP_JSA_SAMPLING=false` to force the BYO-key path even when sampling is available.
|
|
126
|
+
|
|
127
|
+
## Frictionless profile setup (MCP elicitation)
|
|
128
|
+
|
|
129
|
+
`update_profile` uses **MCP elicitation** (form mode) so your client can collect identity
|
|
130
|
+
fields + per-archetype taglines through a structured form — no hand-editing YAML. On
|
|
131
|
+
accept it writes `config/profile.yml` and reseeds the career packet in one step.
|
|
132
|
+
|
|
133
|
+
Sensitive inputs (your LinkedIn export path, credentials) use **URL-mode elicitation**
|
|
134
|
+
(2025-11-25): the server hands you a one-time local URL where you enter the value
|
|
135
|
+
directly, so it **never passes through the MCP client / chat transcript**. `import_linkedin`
|
|
136
|
+
uses this when you omit `path` and your client supports it.
|
|
137
|
+
|
|
138
|
+
Both are capability- and transport-gated (like sampling, elicitation is a server→client
|
|
139
|
+
request that needs a stdio connection). Clients without elicitation support — and all HTTP
|
|
140
|
+
clients — fall back to the file-based + argument paths (`update_profile fields=…`, edit
|
|
141
|
+
`config/profile.yml`, pass `import_linkedin path=…`), which work exactly as before.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
108
145
|
## Designed to be made yours
|
|
109
146
|
|
|
110
147
|
The defaults assume nothing about your location, citizenship, role, or industry. Every
|
|
@@ -166,9 +203,11 @@ roles where sponsorship is a non-issue — turn it off; the rest of the system w
|
|
|
166
203
|
| `MCP_JSA_TEMPLATE_DIR` | _empty_ | User-owned dir holding additional resume/cover themes — overrides bundled themes of the same name. See [Custom themes](#custom-themes) + [`TEMPLATES.md`](./TEMPLATES.md). |
|
|
167
204
|
| `MCP_JSA_DEFAULT_TEMPLATE` | `default` | Theme used when `render_pdf` has no explicit `template` argument. |
|
|
168
205
|
| `MCP_JSA_PUBLIC_BASE_URL` | _empty_ | Public URL emitted in artifact links. Default: `http://127.0.0.1:<port>`. Set when running on a remote host (Tailscale, LAN, etc.) — see [Running on a remote host](#running-on-a-remote-host--tailscale). |
|
|
169
|
-
| `
|
|
206
|
+
| `MCP_JSA_AUTH_TOKEN` | _empty_ | Bearer token gating `/mcp`, `/files/*`, and the dashboard. **Required** to bind to anything other than localhost — without it, a non-localhost bind refuses to start (default-deny). See [Security model](#security-model). |
|
|
207
|
+
| `MCP_JSA_SAMPLING` | `true` | Prefer MCP sampling (the connected client's model — no API key) for `api`/batch scoring. Set `false` to force the BYO-key path. |
|
|
208
|
+
| `MCP_JSA_LLM_PROVIDER` | `gemini` | BYO-key **fallback** for `api`/batch paths when the client can't sample: `gemini`, `deepseek`, `none` |
|
|
170
209
|
| `MCP_JSA_LLM_MODEL` | _empty_ | Provider-specific model id |
|
|
171
|
-
| `GEMINI_API_KEY` / `DEEPSEEK_API_KEY` | _empty_ | Provider credentials |
|
|
210
|
+
| `GEMINI_API_KEY` / `DEEPSEEK_API_KEY` | _empty_ | Provider credentials (only needed when sampling is unavailable) |
|
|
172
211
|
| `MCP_JSA_SCHEDULER_ENABLED` | `false` | Whether opt-in cron runs at all |
|
|
173
212
|
|
|
174
213
|
A working starter is at `.env.example`.
|
|
@@ -310,23 +349,51 @@ export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.com"
|
|
|
310
349
|
```
|
|
311
350
|
|
|
312
351
|
Every artifact link (resume PDF, .tex, .docx, eval report, apply_prefill screenshot,
|
|
313
|
-
tracker URL) now uses that base.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
352
|
+
tracker URL) now uses that base. The server still binds to `MCP_JSA_HOST` (default
|
|
353
|
+
`127.0.0.1`); to accept connections from other devices, also set `MCP_JSA_HOST=0.0.0.0`
|
|
354
|
+
— **which now requires `MCP_JSA_AUTH_TOKEN`** (see [Security model](#security-model)).
|
|
355
|
+
`npx job_ops-mcp doctor` prints the effective public base URL and auth posture.
|
|
317
356
|
|
|
318
357
|
A malformed value (e.g. `not-a-url`) is rejected at boot with a warning on stderr; the
|
|
319
358
|
server keeps running with the default 127.0.0.1 base. Trailing slashes are stripped.
|
|
320
359
|
|
|
321
|
-
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Security model
|
|
363
|
+
|
|
364
|
+
This server handles **PII**: your resume PDFs, cover letters, eval reports, your
|
|
365
|
+
LinkedIn connections, and H1B-derived employer data. The auth posture is decided entirely
|
|
366
|
+
by **where you bind** and **whether a token is set**:
|
|
367
|
+
|
|
368
|
+
| Bind (`MCP_JSA_HOST`) | `MCP_JSA_AUTH_TOKEN` | Result |
|
|
369
|
+
|---|---|---|
|
|
370
|
+
| `127.0.0.1` (default) | unset | **Open** — frictionless local use. PII stays on loopback. |
|
|
371
|
+
| `127.0.0.1` | set | **Token required** — bearer auth enforced even locally (opt-in). |
|
|
372
|
+
| `0.0.0.0` / LAN / Tailscale | **unset** | **Refuses to start** (default-deny). |
|
|
373
|
+
| `0.0.0.0` / LAN / Tailscale | set | **Token required** — bearer auth on every PII route. |
|
|
374
|
+
|
|
375
|
+
When a token is required, every PII-bearing route — the MCP endpoint (`/mcp`), the file
|
|
376
|
+
server (`/files/*`), and the tracker dashboard (`/`) — demands an
|
|
377
|
+
`Authorization: Bearer <token>` header. Requests without it get `401` with a
|
|
378
|
+
`WWW-Authenticate` header pointing at the protected-resource metadata document
|
|
379
|
+
(`/.well-known/oauth-protected-resource`). This aligns with the MCP 2025-06-18 model of
|
|
380
|
+
treating the server as an **OAuth Resource Server**, to the extent practical for a
|
|
381
|
+
self-hosted single-user tool: one operator-provisioned static token, no full
|
|
382
|
+
authorization-server flow.
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
# Expose over Tailscale/LAN — generate a strong token first.
|
|
386
|
+
export MCP_JSA_HOST=0.0.0.0
|
|
387
|
+
export MCP_JSA_AUTH_TOKEN="$(openssl rand -hex 32)"
|
|
388
|
+
export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.ts.net"
|
|
389
|
+
npx job_ops-mcp start
|
|
390
|
+
```
|
|
322
391
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
(Tailscale, a VPN, a reverse proxy with auth) — never expose this directly on the public
|
|
329
|
-
internet.
|
|
392
|
+
**What's protected:** `/mcp`, `/files/*`, `/`. **What's open by design:** `/healthz`
|
|
393
|
+
(liveness, no PII) and the discovery metadata. **Hard rule:** PII must never be served
|
|
394
|
+
unauthenticated to a network — the default-deny boot guard exists precisely so a missing
|
|
395
|
+
token fails loudly instead of silently exposing your data. Still prefer a private network
|
|
396
|
+
(Tailscale / VPN / authenticated reverse proxy) over the public internet.
|
|
330
397
|
|
|
331
398
|
---
|
|
332
399
|
|
package/dist/cli.js
CHANGED
|
@@ -279,6 +279,37 @@ async function cmdDoctor() {
|
|
|
279
279
|
catch (e) {
|
|
280
280
|
console.log(` ${warn()} modes check failed: ${e?.message ?? e}`);
|
|
281
281
|
}
|
|
282
|
+
// 5a-ter. Auth posture — report whether the PII surface is protected.
|
|
283
|
+
try {
|
|
284
|
+
const { config: cfg } = await import('./config.js');
|
|
285
|
+
const p = cfg.authPolicy;
|
|
286
|
+
if (p.mode === 'open') {
|
|
287
|
+
console.log(` ${tick()} auth: open (localhost-only bind — frictionless, no token). ${c.dim('PII stays on 127.0.0.1.')}`);
|
|
288
|
+
console.log(` ${c.dim('To expose remotely, set MCP_JSA_HOST + MCP_JSA_AUTH_TOKEN (required).')}`);
|
|
289
|
+
}
|
|
290
|
+
else if (p.mode === 'token') {
|
|
291
|
+
console.log(` ${tick()} auth: bearer token required on /mcp, /files, dashboard ${c.dim(p.isLocalhost ? '(localhost + token)' : '(remote bind — PII protected)')}`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
console.log(` ${cross()} auth: DENY — ${p.reason}`);
|
|
295
|
+
console.log(` Fix: ${c.bold('export MCP_JSA_AUTH_TOKEN="$(openssl rand -hex 32)"')} before exposing beyond localhost.`);
|
|
296
|
+
failures++;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch { /* config never throws — defensive */ }
|
|
300
|
+
// 5a-quater. Sampling vs BYO key — how api-path scoring will run. Read the resolved
|
|
301
|
+
// config flag (not a re-parse of the env var) so doctor and the runtime never disagree.
|
|
302
|
+
try {
|
|
303
|
+
const { config: cfg } = await import('./config.js');
|
|
304
|
+
if (cfg.samplingEnabled) {
|
|
305
|
+
console.log(` ${tick()} scoring: MCP sampling preferred over stdio (client model — no key); BYO key is the fallback`);
|
|
306
|
+
console.log(` ${c.dim('sampling/elicitation need a stdio client (e.g. Claude Desktop); HTTP clients use the fallback paths.')}`);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
console.log(` ${warn()} scoring: sampling disabled (MCP_JSA_SAMPLING=false) — api paths require a BYO LLM key`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
catch { /* config never throws */ }
|
|
282
313
|
// 5b. Public base URL — informational, never a failure.
|
|
283
314
|
try {
|
|
284
315
|
const { config: cfg } = await import('./config.js');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
3
|
import { resolve, dirname, isAbsolute } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { resolveAuthPolicy } from './core/auth.js';
|
|
5
6
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const INSTALL_DIR = resolve(here, '..'); // dist/ → install root
|
|
7
8
|
function abs(p, base) {
|
|
@@ -47,6 +48,8 @@ export function loadConfig() {
|
|
|
47
48
|
const port = envNum('MCP_JSA_PORT', 7891);
|
|
48
49
|
const listenUrl = `http://${host}:${port}`;
|
|
49
50
|
const { publicBaseUrl, publicBaseUrlIsExplicit } = resolvePublicBaseUrl(listenUrl);
|
|
51
|
+
const authToken = (process.env.MCP_JSA_AUTH_TOKEN ?? '').trim() || null;
|
|
52
|
+
const authPolicy = resolveAuthPolicy({ host, token: authToken });
|
|
50
53
|
return {
|
|
51
54
|
installDir,
|
|
52
55
|
projectRoot,
|
|
@@ -72,6 +75,9 @@ export function loadConfig() {
|
|
|
72
75
|
? abs(process.env.MCP_JSA_TEMPLATE_DIR, process.cwd())
|
|
73
76
|
: null,
|
|
74
77
|
defaultTemplate: (process.env.MCP_JSA_DEFAULT_TEMPLATE || 'default').trim() || 'default',
|
|
78
|
+
authToken,
|
|
79
|
+
authPolicy,
|
|
80
|
+
samplingEnabled: envBool('MCP_JSA_SAMPLING', true),
|
|
75
81
|
};
|
|
76
82
|
}
|
|
77
83
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB;AAEhE,SAAS,GAAG,CAAC,CAAS,EAAE,IAAY;IAClC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,QAAiB;IAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// Auth for the remote / PII surface.
|
|
2
|
+
//
|
|
3
|
+
// The HTTP server exposes resume PDFs (/files), the tracker dashboard (/), and the MCP
|
|
4
|
+
// endpoint (/mcp) — all of which can surface PII (resume contents, LinkedIn connections,
|
|
5
|
+
// H1B-derived employer signal). When the server is bound to anything other than localhost,
|
|
6
|
+
// that surface MUST NOT be reachable unauthenticated.
|
|
7
|
+
//
|
|
8
|
+
// Policy (see resolveAuthPolicy):
|
|
9
|
+
// • localhost bind, no token → OPEN (frictionless single-user local use)
|
|
10
|
+
// • localhost bind, token set → TOKEN (opt-in bearer auth even locally)
|
|
11
|
+
// • non-localhost bind, no token → DENY (default-deny; server refuses to boot)
|
|
12
|
+
// • non-localhost bind, token set → TOKEN (bearer auth required on PII + /mcp)
|
|
13
|
+
//
|
|
14
|
+
// This aligns with the MCP 2025-06-18 "MCP server as OAuth Resource Server" model to the
|
|
15
|
+
// extent practical for a self-hosted single-user tool: a required bearer token gates the
|
|
16
|
+
// resource, 401s carry a WWW-Authenticate header pointing at the protected-resource
|
|
17
|
+
// metadata document, and the token is verified through an OAuthTokenVerifier. Full OAuth
|
|
18
|
+
// authorization-server flows (dynamic client registration, token issuance) are out of
|
|
19
|
+
// scope — the operator sets one static token via MCP_JSA_AUTH_TOKEN.
|
|
20
|
+
import { timingSafeEqual } from 'node:crypto';
|
|
21
|
+
// Hostnames that mean "loopback only" — not reachable from other machines.
|
|
22
|
+
const LOCALHOST_HOSTS = new Set([
|
|
23
|
+
'127.0.0.1', '::1', 'localhost', '::ffff:127.0.0.1', '0:0:0:0:0:0:0:1',
|
|
24
|
+
]);
|
|
25
|
+
export function isLocalhostHost(host) {
|
|
26
|
+
if (!host)
|
|
27
|
+
return false;
|
|
28
|
+
return LOCALHOST_HOSTS.has(host.trim().toLowerCase());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Pure decision function — given the bind host and the configured token, decide the auth
|
|
32
|
+
* posture. Exported so tests can assert every branch without booting the server.
|
|
33
|
+
*/
|
|
34
|
+
export function resolveAuthPolicy(args) {
|
|
35
|
+
const isLocalhost = isLocalhostHost(args.host);
|
|
36
|
+
const token = (args.token ?? '').trim() || null;
|
|
37
|
+
if (isLocalhost) {
|
|
38
|
+
if (token) {
|
|
39
|
+
return { mode: 'token', requireToken: true, isLocalhost, token,
|
|
40
|
+
reason: 'localhost bind with MCP_JSA_AUTH_TOKEN set — bearer auth enforced even locally' };
|
|
41
|
+
}
|
|
42
|
+
return { mode: 'open', requireToken: false, isLocalhost, token: null,
|
|
43
|
+
reason: 'localhost-only bind — frictionless, no token required' };
|
|
44
|
+
}
|
|
45
|
+
if (!token) {
|
|
46
|
+
return { mode: 'deny', requireToken: true, isLocalhost, token: null,
|
|
47
|
+
reason: 'non-localhost bind without MCP_JSA_AUTH_TOKEN — remote access DENIED (default-deny). '
|
|
48
|
+
+ 'Set MCP_JSA_AUTH_TOKEN to a strong secret to expose this server beyond localhost.' };
|
|
49
|
+
}
|
|
50
|
+
return { mode: 'token', requireToken: true, isLocalhost, token,
|
|
51
|
+
reason: 'non-localhost bind with MCP_JSA_AUTH_TOKEN — bearer auth required on /mcp, /files, and dashboard' };
|
|
52
|
+
}
|
|
53
|
+
// Constant-time string compare (avoids leaking the token length-by-length via timing).
|
|
54
|
+
export function tokensMatch(a, b) {
|
|
55
|
+
const ba = Buffer.from(a);
|
|
56
|
+
const bb = Buffer.from(b);
|
|
57
|
+
if (ba.length !== bb.length) {
|
|
58
|
+
// Still do a compare against self to burn ~equal time, then return false.
|
|
59
|
+
timingSafeEqual(ba, ba);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return timingSafeEqual(ba, bb);
|
|
63
|
+
}
|
|
64
|
+
/** Extract a Bearer token from an Authorization header. Returns null when absent/malformed. */
|
|
65
|
+
export function bearerFromHeader(header) {
|
|
66
|
+
if (!header)
|
|
67
|
+
return null;
|
|
68
|
+
const m = /^Bearer\s+(.+)$/i.exec(header.trim());
|
|
69
|
+
return m ? m[1].trim() : null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* An OAuthTokenVerifier backed by a single static operator-provided token. Aligns the
|
|
73
|
+
* request path with the SDK's resource-server interface; on mismatch it throws so the
|
|
74
|
+
* caller returns 401.
|
|
75
|
+
*/
|
|
76
|
+
export class StaticTokenVerifier {
|
|
77
|
+
token;
|
|
78
|
+
resource;
|
|
79
|
+
constructor(token, resource) {
|
|
80
|
+
this.token = token;
|
|
81
|
+
this.resource = resource;
|
|
82
|
+
}
|
|
83
|
+
async verifyAccessToken(token) {
|
|
84
|
+
if (!tokensMatch(token, this.token)) {
|
|
85
|
+
throw new Error('invalid_token');
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
token,
|
|
89
|
+
clientId: 'mcp-jsa-operator',
|
|
90
|
+
scopes: ['mcp:full'],
|
|
91
|
+
resource: this.resource,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Express middleware enforcing the static bearer token on a protected route. Emits a
|
|
97
|
+
* spec-shaped 401 with a WWW-Authenticate header that points at the protected-resource
|
|
98
|
+
* metadata document (so a compliant client can discover how to authenticate).
|
|
99
|
+
*/
|
|
100
|
+
export function bearerAuthMiddleware(token, resourceMetadataUrl) {
|
|
101
|
+
return (req, res, next) => {
|
|
102
|
+
const presented = bearerFromHeader(req.headers['authorization']);
|
|
103
|
+
if (presented && tokensMatch(presented, token)) {
|
|
104
|
+
req.auth = { token: presented, clientId: 'mcp-jsa-operator', scopes: ['mcp:full'] };
|
|
105
|
+
return next();
|
|
106
|
+
}
|
|
107
|
+
const meta = resourceMetadataUrl ? `, resource_metadata="${resourceMetadataUrl}"` : '';
|
|
108
|
+
res.setHeader('WWW-Authenticate', `Bearer realm="mcp-jsa"${meta}`);
|
|
109
|
+
res.status(401).json({
|
|
110
|
+
error: 'unauthorized',
|
|
111
|
+
error_description: presented
|
|
112
|
+
? 'Invalid bearer token.'
|
|
113
|
+
: 'Missing bearer token. This server requires Authorization: Bearer <token> because it is bound to a non-localhost address (or MCP_JSA_AUTH_TOKEN is set).',
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* RFC 9728-style protected-resource metadata. Minimal but spec-shaped so a client can
|
|
119
|
+
* discover the resource identifier + the bearer scheme.
|
|
120
|
+
*/
|
|
121
|
+
export function protectedResourceMetadata(resourceUrl) {
|
|
122
|
+
return {
|
|
123
|
+
resource: resourceUrl,
|
|
124
|
+
bearer_methods_supported: ['header'],
|
|
125
|
+
resource_name: 'job_ops-mcp',
|
|
126
|
+
// No external authorization server — the operator provisions a static token.
|
|
127
|
+
authorization_servers: [],
|
|
128
|
+
scopes_supported: ['mcp:full'],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/core/profile.js
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
//
|
|
11
11
|
// The hard rule from the brief stays intact: NOTHING in the packet is invented; every
|
|
12
12
|
// bullet, project, skill, and degree comes verbatim from cv.md.
|
|
13
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
13
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
14
14
|
import { createHash, randomUUID } from 'node:crypto';
|
|
15
|
-
import { resolve } from 'node:path';
|
|
15
|
+
import { resolve, dirname } from 'node:path';
|
|
16
16
|
import yaml from 'js-yaml';
|
|
17
17
|
import { config } from '../config.js';
|
|
18
18
|
import { getDb, runInWriteLock } from '../db.js';
|
|
@@ -38,6 +38,47 @@ export function loadProjectFiles() {
|
|
|
38
38
|
}
|
|
39
39
|
return { cvMd, profile, portalsYml };
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Merge structured updates into config/profile.yml and write it back. Used by the
|
|
43
|
+
* `update_profile` tool (elicitation form mode) so a user can set identity fields +
|
|
44
|
+
* taglines through their MCP client instead of hand-editing YAML.
|
|
45
|
+
*
|
|
46
|
+
* NB: this rewrites the YAML from the parsed object, so hand-written comments in
|
|
47
|
+
* profile.yml are not preserved — the data is. Empty-string values are ignored (so a
|
|
48
|
+
* blank form field never wipes an existing value). Returns the path + counts so the
|
|
49
|
+
* caller can report and decide whether to reseed.
|
|
50
|
+
*/
|
|
51
|
+
export function applyProfileUpdate(update) {
|
|
52
|
+
const path = pathInProject('config', 'profile.yml');
|
|
53
|
+
const raw = readIfExists(path);
|
|
54
|
+
const base = raw ? (yaml.load(raw) ?? {}) : {};
|
|
55
|
+
let candidateFieldsSet = 0;
|
|
56
|
+
if (update.candidate) {
|
|
57
|
+
base.candidate = base.candidate ?? {};
|
|
58
|
+
for (const [k, v] of Object.entries(update.candidate)) {
|
|
59
|
+
if (typeof v === 'string' && v.trim()) {
|
|
60
|
+
base.candidate[k] = v.trim();
|
|
61
|
+
candidateFieldsSet++;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let taglinesSet = 0;
|
|
66
|
+
if (update.taglines && Object.keys(update.taglines).length) {
|
|
67
|
+
base.taglines = (base.taglines && typeof base.taglines === 'object' && !Array.isArray(base.taglines))
|
|
68
|
+
? base.taglines : {};
|
|
69
|
+
for (const [archetype, tagline] of Object.entries(update.taglines)) {
|
|
70
|
+
const a = archetype.trim();
|
|
71
|
+
const t = (tagline ?? '').trim();
|
|
72
|
+
if (a && t) {
|
|
73
|
+
base.taglines[a] = t;
|
|
74
|
+
taglinesSet++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
79
|
+
writeFileSync(path, yaml.dump(base, { lineWidth: 100, noRefs: true }), 'utf-8');
|
|
80
|
+
return { path, candidate_fields_set: candidateFieldsSet, taglines_set: taglinesSet };
|
|
81
|
+
}
|
|
41
82
|
// ── Staleness detection ──────────────────────────────────────────────────────
|
|
42
83
|
const TODO_MARKER = /<TODO[\s>]/g;
|
|
43
84
|
const MIN_REAL_CV_BYTES = 500; // anything smaller is probably still the example
|