Skip to main content
Glama
kedarnath30

notion-job-tracker

by kedarnath30
README.md
# Notion Job Tracker MCP Server

## What it does

An MCP (Model Context Protocol) server that connects to a Notion job tracker database and exposes it as a set of tools Claude (or any MCP client) can call directly — searching, adding, and updating job leads without leaving the conversation.

## Tools

- **search_jobs(keyword: str)** — Searches the database for job leads whose job title or company name contains `keyword`.
- **add_job(role: str, company: str, status: str, apply_link: str, location: str = "", salary_range: str = "")** — Adds a new job lead row.
- **update_status(page_id: str, status: str)** — Updates the status of an existing job lead by its Notion page id.

## Notion database schema

This server expects the database to have these properties (rename in `server.py` if yours differ):

| Property     | Type   |
|--------------|--------|
| Role         | Title  |
| Company      | Text   |
| Status       | Select |
| Apply Link   | URL    |
| Location     | Text   |
| Salary Range | Text   |

## Setup

1. Install dependencies:

   ```bash
   pip install -r requirements.txt
   ```

2. Create a Notion integration at https://www.notion.so/my-integrations, copy its secret, and share your job tracker database with that integration.

3. Copy `.env.example` to `.env` and fill in your values:

   ```bash
   cp .env.example .env
   ```

   ```
   NOTION_TOKEN=secret_xxx
   NOTION_DATABASE_ID=your-database-id
   ```

   The database id is the 32-character string in your database's URL.

4. Run the server:

   ```bash
   python server.py
   ```

## Using with an MCP client

Add an entry to your MCP client's config, e.g. for Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "notion-job-tracker": {
      "command": "python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}
```