Skip to main content
Glama
temk

JobDBMCP

by temk

JobDBMCP

MCP server providing controlled access to the job-search PostgreSQL database.

The server exposes domain-specific MCP tools for storing, finding, and reviewing job postings over Streamable HTTP. Arbitrary SQL execution is intentionally not exposed.

Requirements

  • Python 3.14+

  • uv

  • PostgreSQL 18

  • Docker, to build and run the images

Related MCP server: GetMattered

Installation

uv sync

Configuration

Settings come from environment variables. Copy .env.example to .env and fill it in; .env is not committed.

Variable

Description

JOBDBMCP_DATABASE_URL

PostgreSQL connection string for the application role.

JOBDBMCP_HOST

Bind address, 127.0.0.1 by default, 0.0.0.0 in the image.

JOBDBMCP_PORT

Listen port, 8000 by default.

LIQUIBASE_COMMAND_*

Used only when applying migrations, see below.

Running

The server speaks MCP over Streamable HTTP at /mcp.

uv run jobs-db-mcp

In Docker:

docker build -t jobs-db-mcp .
docker run --rm --env-file .env jobs-db-mcp

The container needs network access to the database.

Tools: create_job, update_job, create_organization, job_exists, get_job, find_jobs, count_jobs, find_organizations. The server is meant to run locally, without authentication; the database role it connects as cannot delete anything. See docs/api.md for their inputs and outputs.

Database

See docs/db.md for the schema.

Migrations are Liquibase formatted SQL changesets under db/changelog/. The runner image adds the PostgreSQL JDBC driver, which Liquibase 5 no longer ships:

docker build -t jobs-db-mcp-liquibase db

Connection settings come from .env: LIQUIBASE_COMMAND_URL, LIQUIBASE_COMMAND_USERNAME, LIQUIBASE_COMMAND_PASSWORD, and LIQUIBASE_COMMAND_CHANGELOG_FILE=changelog-master.yml. Migrations need DDL rights, so they connect as a different role than the server does.

# status of each changeset
docker run --rm --env-file .env \
  -v ./db/changelog:/liquibase/changelog -w /liquibase/changelog \
  jobs-db-mcp-liquibase status --verbose

# the SQL that would run, for review before applying
docker run --rm --env-file .env \
  -v ./db/changelog:/liquibase/changelog -w /liquibase/changelog \
  jobs-db-mcp-liquibase update-sql

docker run --rm --env-file .env \
  -v ./db/changelog:/liquibase/changelog -w /liquibase/changelog \
  jobs-db-mcp-liquibase update

Development

uv run ruff format .
uv run ruff check . --fix
uv run mypy
uv run pytest -q

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with PostgreSQL databases through both HTTP and Stdio transports, supporting read-only SQL queries, table listing, and schema inspection. Features stateful session management for HTTP transport and flexible deployment options including Docker support.
    79 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Auto-Apply That Ends on an Interview. Job matches, applications submitted on the employer's own hiring system automatically or after your approval, employer-receipt tracking, a resume rewritten for each role, cover letters and interview prep. Hosted remote server over Streamable HTTP with OAuth 2.1.
    40
    1,432 npm
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only interaction with PostgreSQL corpora, including catalog introspection, guarded SQL execution, and reranked hybrid dense+sparse search over a secure HTTP endpoint.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables a Hermes agent to store and manage university-program research in a local Postgres database over streamable HTTP. Exposes tools to list and filter programs, fetch a full record, insert new programs with duplicate-URL detection, patch fit scores, and mark entries as verified.
    5
    GPL 3.0