@dolusoft/hirebase-mcp 1.3.3 → 1.3.4

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
@@ -171,41 +171,32 @@ LanceDB tables:
171
171
 
172
172
  ## Installation
173
173
 
174
- ### npm (recommended)
175
-
176
- ```bash
177
- npm install -g @dolusoft/hirebase-mcp
178
- ```
179
-
180
- ### From source
181
-
182
- ```bash
183
- git clone https://github.com/dolusoft/hirebase.git
184
- cd hirebase
185
- pnpm install
186
- pnpm build
187
- ```
188
-
189
174
  ### Prerequisites
190
175
 
191
- - Node.js >= 22
192
- - OpenAI API Key
176
+ - **Node.js >= 22** ([download](https://nodejs.org/))
177
+ - **OpenAI API Key** — required for CV extraction and embeddings. Get one at [platform.openai.com/api-keys](https://platform.openai.com/api-keys)
178
+
179
+ > **Important:** HireBase will not start without a valid `OPENAI_API_KEY`. If you see `OPENAI_API_KEY environment variable is required`, make sure the key is set in your MCP configuration (see below).
193
180
 
194
- ## MCP Configuration
181
+ ### Claude Code (recommended)
195
182
 
196
- ### Claude Code (npx)
183
+ No global install needed — `npx` downloads and runs the latest version automatically:
197
184
 
198
185
  ```bash
199
186
  claude mcp add hirebase -s user \
200
187
  -e OPENAI_API_KEY=sk-your-key \
201
- -e EMBEDDING_MODEL=text-embedding-3-small \
202
188
  -e DASHBOARD_ENABLED=true \
203
189
  -- npx -y @dolusoft/hirebase-mcp
204
190
  ```
205
191
 
192
+ That's it. Restart Claude Code and HireBase tools will be available.
193
+
206
194
  ### Claude Desktop
207
195
 
208
- Add to your Claude Desktop config (`claude_desktop_config.json`):
196
+ Add to your config file:
197
+
198
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
199
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
209
200
 
210
201
  ```json
211
202
  {
@@ -215,23 +206,47 @@ Add to your Claude Desktop config (`claude_desktop_config.json`):
215
206
  "args": ["-y", "@dolusoft/hirebase-mcp"],
216
207
  "env": {
217
208
  "OPENAI_API_KEY": "sk-your-key",
218
- "LANCEDB_PATH": "./data/lancedb",
209
+ "DASHBOARD_ENABLED": "true"
219
210
  }
220
211
  }
221
212
  }
222
213
  }
223
214
  ```
224
215
 
216
+ ### Other MCP Clients
217
+
218
+ Any MCP-compatible client can use HireBase. The key requirement is passing `OPENAI_API_KEY` as an environment variable:
219
+
220
+ ```bash
221
+ # Run directly
222
+ OPENAI_API_KEY=sk-your-key npx -y @dolusoft/hirebase-mcp
223
+
224
+ # Or install globally
225
+ npm install -g @dolusoft/hirebase-mcp
226
+ OPENAI_API_KEY=sk-your-key hirebase-mcp
227
+ ```
228
+
229
+ ### From Source
230
+
231
+ ```bash
232
+ git clone https://github.com/dolusoft/hirebase.git
233
+ cd hirebase
234
+ pnpm install
235
+ pnpm build
236
+ cp .env.example .env # edit .env and add your OPENAI_API_KEY
237
+ pnpm start
238
+ ```
239
+
225
240
  ### Environment Variables
226
241
 
227
242
  | Variable | Default | Description |
228
243
  |---|---|---|
229
- | `OPENAI_API_KEY` | *required* | OpenAI API key |
230
- | `LANCEDB_PATH` | `./data/lancedb` | LanceDB storage path |
231
- | `EMBEDDING_MODEL` | `text-embedding-3-small` | Embedding model |
232
- | `EXTRACTION_MODEL` | `gpt-5-mini` | CV extraction model |
244
+ | `OPENAI_API_KEY` | | **Required.** OpenAI API key for embeddings and CV extraction |
245
+ | `LANCEDB_PATH` | `./data/lancedb` | LanceDB storage path (relative to CWD) |
246
+ | `EMBEDDING_MODEL` | `text-embedding-3-small` | OpenAI embedding model |
247
+ | `EXTRACTION_MODEL` | `gpt-5-mini` | OpenAI model for structured CV extraction |
233
248
  | `DASHBOARD_ENABLED` | `true` | Enable real-time dashboard |
234
- | `DASHBOARD_PORT` | `0` (random) | Dashboard server port |
249
+ | `DASHBOARD_PORT` | `0` (random) | Dashboard server port (0 = auto-assign) |
235
250
 
236
251
  ## Key Design Decisions
237
252
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"9e8116ec-2435-4664-b7c7-88cb05929bfe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773749393467,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"06577f62-6940-42a3-95cb-624eaa96780c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773751115020,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"9e8116ec-2435-4664-b7c7-88cb05929bfe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773749393467,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"06577f62-6940-42a3-95cb-624eaa96780c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773751115020,false]</script></body></html>
@@ -1 +1 @@
1
- {"id":"9e8116ec-2435-4664-b7c7-88cb05929bfe","timestamp":1773749386038}
1
+ {"id":"06577f62-6940-42a3-95cb-624eaa96780c","timestamp":1773751106115}
@@ -0,0 +1 @@
1
+ {"id":"06577f62-6940-42a3-95cb-624eaa96780c","timestamp":1773751106115,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"2a8ca100-98d8-45c9-b817-b0b9abdf8ca0","timestamp":1773751021479,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"3fceff57-2d70-4d5c-ba88-1467a2270c62","timestamp":1773751038030,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"78347e98-d8f5-4182-9650-f32c797f6401","timestamp":1773751085325,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"ce9c76e0-e5c5-4053-8c6f-bac3f5a81936","timestamp":1773750853931,"prerendered":[]}
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"9e8116ec-2435-4664-b7c7-88cb05929bfe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773749393467,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"06577f62-6940-42a3-95cb-624eaa96780c",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773751115020,false]</script></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dolusoft/hirebase-mcp",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "HireBase - AI-powered CV search engine with LanceDB and MCP",
5
5
  "type": "module",
6
6
  "main": "dist/interface/cli/index.js",