Jobber MCP服务器

Jobber MCP服务器是一个通过MCP协议暴露Jobber GraphQL API的工具,支持多用户OAuth认证,用于在AI助手(如Claude)中管理客户、工作、发票、报价和服务请求。

  • by DeathCamel58
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 DeathCamel58/jobber-mcp

使用说明

Jobber MCP Server

An MCP server that exposes Jobber's GraphQL API as MCP tools. Supports multiple users via OAuth, where each user authenticates with their own Jobber account.

Architecture

MCP Client  <-->  MCP Server (OAuth AS + RS)  <-->  Jobber GraphQL API

The server acts as both an OAuth Authorization Server (for MCP clients) and a Resource Server. It proxies OAuth authentication to Jobber and stores tokens in SQLite.

Setup

Prerequisites

  • Python 3.12+
  • A Jobber Developer app with OAuth credentials
  • A publicly accessible URL (e.g., via ngrok) for the OAuth callback

Installation

python -m venv .venv
source .venv/bin/activate
pip install -e .

Configuration

Create a .env file:

JOBBER_CLIENT_ID=your-jobber-client-id
JOBBER_CLIENT_SECRET=your-jobber-client-secret
MCP_SERVER_URL=https://your-public-url.example.com
MCP_SERVER_PORT=8000
Variable Description Default
JOBBER_CLIENT_ID Jobber OAuth app client ID required
JOBBER_CLIENT_SECRET Jobber OAuth app client secret required
MCP_SERVER_URL Public URL of this server (used for OAuth callbacks and metadata) http://localhost:8000
MCP_SERVER_PORT Port to listen on 8000
JOBBER_SHARED_AUTH Share one Jobber login across all users (true/false) false

Set your Jobber app's redirect URI to {MCP_SERVER_URL}/jobber/callback.

Shared authentication

With JOBBER_SHARED_AUTH=true, the first person to connect signs in to Jobber and every later connection reuses that one Jobber session without a Jobber login prompt. Jobber rotates refresh tokens on every refresh, so the server keeps exactly one copy of the shared tokens (the shared_jobber_tokens row in jobber_mcp.db) and serialises all refreshes through it.

If Jobber rejects a refresh (the app was disconnected in Jobber, the client secret changed, or the stored refresh token was spent elsewhere), the server clears that row and tool calls return a "please reconnect" error. The next person to connect the connector is sent through Jobber's login page again, which restores the shared session for everyone.

Running

python jobber_mcp/server.py

Available Tools

Tool Description
get_account Get current Jobber account info
list_clients / get_client / create_client Manage clients
list_jobs / get_job / create_job Manage jobs
list_invoices / get_invoice / create_invoice Manage invoices
list_quotes / get_quote / create_quote Manage quotes
list_requests / get_request View service requests
execute_graphql Run raw GraphQL queries

Connecting from Claude

  1. Start the server and ensure it's publicly accessible
  2. In Claude, go to Settings > Connectors > Add Connector
  3. Enter your server's public URL
  4. Click Connect — you'll be redirected to Jobber to authorize
  5. After authorization, the tools will be available in your conversations