open-index/open-npm huggingface dataset:
npm package: @jobflow/jobflow-mcp
Description: MCP server for JobFlow - AI-powered job application tracker
Latest version: 0.1.2

# JobFlow MCP Server

MCP server for JobFlow — AI-powered job application tracker.

Expose your JobFlow database as MCP tools so AI agents can search, add, and update jobs automatically.

## Installation

```bash
npm install -g @jobflow/jobflow-mcp
```

Or use with npx (no install required):

```bash
npx @jobflow/jobflow-mcp
```

## MCP Client Configuration

Add to your MCP client config file:

**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "jobflow": {
      "command": "npx",
      "args": ["@jobflow/jobflow-mcp"]
    }
  }
}
```

**Cursor** (`~/.cursor/mcp.json`):
```json
{
  "mcpServers": {
    "jobflow": {
      "command": "npx",
      "args": ["@jobflow/jobflow-mcp"]
    }
  }
}
```

## Database Setup

The MCP server reads from and writes to `~/.jobflow/db.json`.

**Initial export:**
1. Open JobFlow extension → Settings
2. Click "Export for MCP"
3. Save the file as `~/.jobflow/db.json`

**Two-way sync:**
- When agents update jobs (status, notes, scores), the changes are saved to `~/.jobflow/db.json`
- Open JobFlow → Settings → "Import from MCP" to bring agent changes into the extension

## Available Tools

| Tool | Description |
|------|-------------|
| `get_jobs` | List all jobs, optionally filtered by status, company, or skills |
| `add_job` | Add a new job to the pipeline |
| `update_status` | Move a job through pipeline stages |
| `add_note` | Add a note to a job |
| `get_profile` | Get your user profile |
| `score_fit` | Score how well a job fits your profile |
| `get_analytics` | Get pipeline stats: job counts, top skills, response rates |
| `delete_job` | Remove a job from the pipeline |

## Job Statuses

- `saved` — Job found but not yet applied
- `applied` — Application submitted
- `interview-hr` — HR/Recruiter screen
- `interview-tech-intro` — Technical intro call
- `interview-tech-system` — System design interview
- `interview-tech-code` — Coding interview
- `offer` — Received offer
- `rejected` — Application rejected

## Examples

```javascript
// Add a job
await mcp.callTool("add_job", {
  sourceUrl: "https://linkedin.com/jobs/view/123",
  title: "Senior Software Engineer",
  company: "Acme Corp",
  location: "San Francisco, CA",
  skills: ["TypeScript", "React", "Node.js"]
});

// Get all jobs
const jobs = await mcp.callTool("get_jobs", {});

// Get jobs at a specific company
const stripeJobs = await mcp.callTool("get_jobs", {
  company: "Stripe"
});

// Update status
await mcp.callTool("update_status", {
  jobId: 1,
  status: "applied"
});

// Get analytics
const stats = await mcp.callTool("get_analytics", {});
```

## Requirements

- Node.js 18+
- JobFlow browser extension (for database export)

## License

MIT
npm package: @jobgetapp/check-review-categories
Description: Utility to ensure rush projects to not leak internal code.
Author: Sawyer Hopkins
Latest version: 1.5.0

# @jobgetapp/check-review-categories

## DEPRECATED
Use the plugin @jobgetapp/rush-enforce-categories-plugin

## Project description

This is a script that ensures public or externally facing projects do not leak code from private projects. Consider the following

```
#rush.json

...
{
  "packageName": "@jobgetapp/secret-code",
  "projectFolder": "packages/libs/secret-code",
  "reviewCategory": "private",
  "versionPolicyName": "packable"
},
{
  "packageName": "@jobgetapp/public-site",
  "projectFolder": "packages/deployments/web",
  "reviewCategory": "public",
  "versionPolicyName": "packable"
},
...
```

We would want to ensure that nowhere in the dependency tree of `@jobgetapp/public-site` is `@jobgetapp/secret-code`, as tree shaking may not remove code containing private intellectual property. To do this we rely on the rush approved packages system, and using the following configuration.

```
# common/config/jobgetapp/review-category-check.json

{
  "$schema": "@jobgetapp/check-review-categories/schemas/review-category-check.schema.json",
  "projects": [{
    "projectPathPattern": "packages\/libs\/.*",
    "reviewCategory": "public"
  }]
}
```

When the `@jobgetapp/check-review-categories` utility is ran, it will ensure that no project inside of `packages/libs` has is included in the `public` review category.

## Usage

### Failing Example

```
# browser-approved-packages.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json",
  "packages": [
    {
      "name": "@jobgetapp/secret-code",
      "allowedCategories": [ "private", "public" ]
    },
    {
      "name": "@jobgetapp/public-site",
      "allowedCategories": [ "public" ]
    },
    ...
  ]
```

```
npm @jobgetapp/check-review-categories

Checking packages/libs/secret-code
Checking packages/deployments/web
Project [@jobgetapp/secret-code] is part of the restricted category [public] as matched by [packages\/libs\/.*]

Error: Found 1 projects in restricted review categories

The script failed with exit code 1
```

### Passing Example

```
# browser-approved-packages.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json",
  "packages": [
    {
      "name": "@jobgetapp/secret-code",
      "allowedCategories": [ "private" ]
    },
    {
      "name": "@jobgetapp/public-site",
      "allowedCategories": [ "public" ]
    },
    ...
  ]
```

```
npm @jobgetapp/check-review-categories

Checking packages/libs/secret-code
Checking packages/deployments/web
```
npm package: @jobgetapp/coverage-collector
Description: A tool to collect code coverage across multiple projects in a mono-repo
Author: sawyer@sawyerhopkins.com
Latest version: 1.3.0

# @jobgetapp/coverage-collector

## Project Description

This is a script that will rollup istanbul code coverage from projects within a rush repo into a single coverage collection located under `common/temp/coverage`.

```
npx @jobgetapp/coverage-collector
```
npm package: @jobgetapp/eslint-config
Description: Standard eslint configuration
Latest version: 1.1.0

# @jobgetapp/eslint-config

## Project Description

The base eslint configuration used for JobGet projects. Assumption that source code is stored with the following directory structure:

```
  .
  ├── ...
  ├── project_folder   # Folder containing the project content
  │   ├── package.json
  │   ├── jest.config.js
  │   ├── src
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  │   ├── test
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  └── ...
```

## Usage

```
# src/.eslintrc.js
# test/.eslintrc.js

require('@jobgetapp/eslint-config')

module.exports = {
  root: true,
  extends: ['@jobgetapp/eslint-config'],
  parserOptions: {
    project: './tsconfig.json',
    tsconfigRootDir: __dirname
  }
}
```
npm package: @jobgetapp/jest-config
Description: Standard jest configuration
Author: Sawyer Hopkins
Latest version: 3.1.0

# @jobgetapp/jest-config

## Project Description

The base jest configuration used for JobGet projects. Assumption that source code is stored with the following directory structure:

```
  .
  ├── ...
  ├── project_folder   # Folder containing the project content
  │   ├── package.json
  │   ├── jest.config.js
  │   ├── src
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  │   ├── test
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  └── ...
```

## Usage

This project also includes a custom reporter to handler issues where Jest writes reports to `stdErr`, causing rush to detect successful test cases as errors.

```
# jest.config.js

import type { Config } from '@jest/types'
import { JestConfig } from '@jobgetapp/jest-config'

export default async (): Promise<Config.InitialOptions> => {
  return {
    ...(await JestConfig()),
    coveragePathIgnorePatterns: [
      # Exclude files containing only typescript data
      # contracts from coverage output
      "/contracts/"
    ],
  }
}
```
npm package: @jobgetapp/rush-enforce-categories-plugin
Description: Utility to ensure rush projects to not leak internal code.
Author: Sawyer Hopkins
Latest version: 1.1.0

# @jobgetapp/rush-enforce-categories-plugin

## Project description

This is a script that ensures public or externally facing projects do not leak code from private projects. Consider the following

```
#rush.json

...
{
  "packageName": "@jobgetapp/secret-code",
  "projectFolder": "packages/libs/secret-code",
  "reviewCategory": "private",
  "versionPolicyName": "packable"
},
{
  "packageName": "@jobgetapp/public-site",
  "projectFolder": "packages/deployments/web",
  "reviewCategory": "public",
  "versionPolicyName": "packable"
},
...
```

We would want to ensure that nowhere in the dependency tree of `@jobgetapp/public-site` is `@jobgetapp/secret-code`, as tree shaking may not remove code containing private intellectual property. To do this we rely on the rush approved packages system, and using the following configuration.

```
# common/config/rush-plugins/enforce-categories.json

{
  "categoryRestrictions": [{
    "category": "private",
    "forbiddenCategories": ["public"]
  }]
}
```

When the `rush enforce-categories` utility is ran, it will ensure that no project with the `private` review category shows up inside `browser-approved-packages.json` with `allowedCategories` containing `public`.

## Usage

### Failing Example

```
# browser-approved-packages.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json",
  "packages": [
    {
      "name": "@jobgetapp/secret-code",
      "allowedCategories": [ "private", "public" ]
    },
    {
      "name": "@jobgetapp/public-site",
      "allowedCategories": [ "public" ]
    },
    ...
  ]
```

```
rush enforce-categories

@jobgetapp/secret-code is restricted by category: public

Found 1 category errors
```

### Passing Example

```
# browser-approved-packages.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json",
  "packages": [
    {
      "name": "@jobgetapp/secret-code",
      "allowedCategories": [ "private" ]
    },
    {
      "name": "@jobgetapp/public-site",
      "allowedCategories": [ "public" ]
    },
    ...
  ]
```

```
rush enforce-categories
```
npm package: @jobgetapp/rush-normalize
Description: Fixes issues related to mismatching package versions
Author: sawyer@sawyerhopkins.com
Latest version: 1.3.0

# @jobgetapp/rush-normalize

## Project Description

This is a script that will use the rush version manager to find packages with mismatching versions, and update all consumers of these packages to the latest version supported by the rush repository. This is useful when a rush repository contains many interconnected projects being worked on by multiple developers. After a release, developers can run this script after pulling in their latest upstream changes.

## Usage

```
> rush update


Rush Multi-Project Build Tool 5.56.0 - https://rushjs.io
Node.js version is 14.18.1 (LTS)


Starting "rush update"

@jobgetapp/eslint-config
  1.0.1
   - @jobgetapp/jest-config
  1.0.0
   - @jobgetapp/rush-normalize

Found 1 mis-matching dependencies!

> npx @jobgetapp/rush-normalize

Setting @jobgetapp/eslint-config in @jobgetapp/rush-normalize to version 1.0.1
```
npm package: @jobgetapp/rushenv
Description: Dotenv wrapper to work with rush
Author: Sawyer Hopkins
Latest version: 1.1.0

# @jobgetapp/rushenv

## Project description

A wrapper around [dotenv](https://github.com/motdotla/dotenv) which recursively looks up from a rush project until it finds the rush project root.

```
  .
  ├── rush.json
  ├── .env
  ├── .env.prod
  ├── packages
  │   ├── project_folder
  │       ├── package.json
  │       ├── jest.config.js
  │       ├── src
  │           ├── .env
  │           ├── index.ts
  │           └── ...
  └── ...
```

In the above example the `.env` file in the root of the rush repo will be loaded first, then the `packages/project_folder/src.env` file will be loaded after.

Environment files following the format `.env.${ENV_TYPE}` can be loaded by setting a `RUSHENV` environment variable. For example starting the project with `RUSH_ENV=prod` will first load the `.env.prod` file in the rush repo root, then since no environment file with the extensions `prod` exists in the project folder, the `packages/project_folder/src.env` will be loaded. As a caveat, a `.env.${ENV_TYPE}` will never be loaded unless it exists along side a `.env` file.

## Usage

```
# src/index.ts

import { config } from '@jobgetapp/rushenv'

config()
```

```
# Run project with .env configuration
npm run start

# Run project with .env.prod configuration
RUSHENV=prod npm run start
```
npm package: @jobgetapp/typescript-config
Description: Standard typescript configuration
Latest version: 1.1.0

# @jobgetapp/typescript-config

## Project Description

The base typescript configuration used for JobGet projects. Includes a both a source and test configuration, with the assumption that source code is stored with the following directory structure:

```
  .
  ├── ...
  ├── project_folder   # Folder containing the project content
  │   ├── package.json
  │   ├── jest.config.js
  │   ├── src
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  │   ├── test
  │       ├── tsconfig.json
  │       ├── .eslintrc.js
  │       └── ...
  └── ...
```

## Usage

```
# src/tsconfig.json

{
  "extends": "@jobgetapp/typescript-config/tsconfig.lib.src.json",
  "compilerOptions": {
    "outDir": "../dist",
    "rootDir": ".",
    "baseUrl": "./",
    "paths": {
      "~/*": ["./*"]
    }
  }
}
```

```
# test/tsconfig.json

{
  "extends": "@jobgetapp/typescript-config/tsconfig.lib.test.json",
  "compilerOptions": {
    "rootDir": "..",
    "baseUrl": "../" 
  },
  "include": [
    "../src/**/*",
    "../test/**/*"
  ]
}
```