mcp-server-check

mcp-server-check

An MCP server that wraps the Check Payroll API, providing 263 tools for managing companies, employees, contractors, payrolls, tax configuration, and more.

Category
Visit Server

README

mcp-server-check

⚠️ Early Access Beta — This MCP server is currently in beta and available to select partners. APIs, tools, and behavior may change without notice. Please share feedback with your Check point of contact.

Terms of Service — By using this MCP server to access the Check API, you agree to the MCP Usage Terms, which are in addition to your existing agreement with Check.

An MCP server that wraps the Check Payroll API, providing 263 tools for managing companies, employees, contractors, payrolls, tax configuration, embedded components, and more.

Quickstart

git clone https://github.com/check-technologies/mcp-server-check.git
cd mcp-server-check
uv sync
CHECK_API_KEY=your-key uv run mcp-server-check

Configuration

Environment Variable Required Default Description
CHECK_API_KEY Yes Your Check API key (Bearer token)
CHECK_API_BASE_URL No https://sandbox.checkhq.com API base URL
CHECK_TOOL_MODE No dynamic Tool mode: dynamic (3 meta-tools) or all (all tools individually)
CHECK_TOOLSETS No Comma-separated list of toolsets to enable (e.g. companies,employees)
CHECK_TOOLS No Comma-separated allowlist of individual tool names
CHECK_EXCLUDE_TOOLS No Comma-separated list of tool names to hide
CHECK_READ_ONLY No Set to 1, true, or yes to disable all write/mutating tools
CHECK_TRANSPORT No stdio Transport protocol: stdio, sse, or streamable-http

Sandbox vs Production

By default the server connects to the Check sandbox (https://sandbox.checkhq.com), which is safe for testing and development. The sandbox supports simulation endpoints (e.g. simulate_start_processing, simulate_complete_funding) that let you advance payrolls through processing states without real money movement.

To point at production, set:

CHECK_API_BASE_URL=https://api.checkhq.com

Server Configuration

The server supports fine-grained tool filtering, configurable via environment variables (for stdio) or HTTP headers (for SSE / streamable-http). This follows the GitHub MCP Server configuration pattern.

Feature Environment Variable HTTP Header
Toolsets CHECK_TOOLSETS X-MCP-Toolsets
Individual tools CHECK_TOOLS X-MCP-Tools
Exclude tools CHECK_EXCLUDE_TOOLS X-MCP-Exclude-Tools
Read-only CHECK_READ_ONLY X-MCP-Readonly

Filtering precedence: exclude_tools > read_only > tools > toolsets. Exclude always wins; if tools is set it acts as an allowlist independent of toolsets.

Toolsets

There are 17 toolsets, one per API module: bank_accounts, companies, compensation, components, contractor_payments, contractors, documents, employees, external_payrolls, forms, payments, payroll_items, payrolls, platform, tax, webhooks, workplaces.

Enable only specific toolsets:

CHECK_TOOLSETS=companies,employees CHECK_API_KEY=your-key uv run mcp-server-check

Individual Tools

Allow only specific tools by name:

CHECK_TOOLS=list_companies,get_company,list_employees CHECK_API_KEY=your-key uv run mcp-server-check

Excluding Tools

Hide specific tools while keeping everything else:

CHECK_EXCLUDE_TOOLS=create_company,delete_company CHECK_API_KEY=your-key uv run mcp-server-check

Read-Only Mode

Set CHECK_READ_ONLY=1 to run the server with only read-only tools (list, get, download, preview, etc.). All create, update, delete, and other mutating tools are excluded. This is useful when you want to allow exploration of your Check data without risk of modifications.

CHECK_READ_ONLY=1 CHECK_API_KEY=your-key uv run mcp-server-check

HTTP Headers (Remote Transport)

When running with CHECK_TRANSPORT=sse or CHECK_TRANSPORT=streamable-http, clients can pass configuration via HTTP headers:

X-MCP-Toolsets: companies,employees
X-MCP-Readonly: true
X-MCP-Exclude-Tools: create_company,delete_company

Header-based configuration takes precedence over environment variables when headers provide any filter settings.

Dynamic Tool Mode (Default)

By default, the server runs in dynamic mode (CHECK_TOOL_MODE=dynamic), exposing 3 meta-tools instead of all individual tools. This avoids sending every tool schema to the LLM upfront, saving significant context window space.

  • search_tools(query, toolset?, limit?) — Search for tools by keyword with synonym matching. Returns matching tools with their full parameter schemas.
  • list_toolsets() — List all available toolsets with descriptions and example tools.
  • run_tool(tool_name, arguments?) — Execute a tool by name with a dict of arguments.

The LLM workflow becomes: browse toolsets or search for relevant tools → review their parameter schemas → call run_tool with the correct arguments. All filtering (CHECK_TOOLSETS, CHECK_READ_ONLY, etc.) is applied at both the search and execution layers.

Set CHECK_TOOL_MODE=all to expose all tools individually (legacy mode):

CHECK_TOOL_MODE=all CHECK_API_KEY=your-key uv run mcp-server-check

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "check": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-server-check", "mcp-server-check"],
      "env": {
        "CHECK_API_KEY": "your-api-key"
      }
    }
  }
}

Usage with Claude Code

claude mcp add check -- uv run --directory /path/to/mcp-server-check mcp-server-check

Then set the CHECK_API_KEY environment variable in your shell before running Claude Code.

Available Tools

263 tools organized across 17 categories. All list tools support limit and cursor parameters for cursor-based pagination — pass the cursor value from a previous response to fetch the next page.

Companies (26 tools)

Tool Method Description
list_companies GET List companies with optional filters
get_company GET Get details for a specific company
create_company POST Create a new company
update_company PATCH Update an existing company
onboard_company POST Onboard a company to active status
get_company_paydays GET Get upcoming paydays for a company
list_company_tax_deposits GET List tax deposits for a company
get_company_benefit_aggregations GET Get benefit aggregations for a company
get_payroll_journal_report GET Get payroll journal report
get_payroll_summary_report GET Get payroll summary report
get_tax_liabilities_report GET Get tax liabilities report
get_contractor_payments_report GET Get contractor payments report
get_child_support_payments_report GET Get child support payments report
get_w4_exemption_status_report GET Get W-4 exemption status report
get_applied_for_ids_detailed_report GET Get applied-for IDs detailed report
get_w2_preview_report GET Get W-2 preview report
list_federal_ein_verifications GET List federal EIN verifications
get_federal_ein_verification GET Get a specific EIN verification
list_signatories GET List signatories for a company
create_signatory POST Create a signatory
get_enrollment_profile GET Get enrollment profile
create_enrollment_profile PUT Create enrollment profile
update_enrollment_profile PATCH Update enrollment profile
start_implementation POST Start implementation for a company
cancel_implementation POST Cancel implementation
request_embedded_setup POST Request embedded setup

Employees (17 tools)

Tool Method Description
list_employees GET List employees with optional filters
get_employee GET Get details for a specific employee
create_employee POST Create a new employee
update_employee PATCH Update an existing employee
onboard_employee POST Onboard an employee to active status
list_employee_paystubs GET List paystubs for an employee
get_employee_paystub GET Get a specific paystub
list_employee_forms GET List forms for an employee
get_employee_form GET Get a specific employee form
submit_employee_form POST Submit an employee form
sign_and_submit_employee_form POST Sign and submit an employee form
get_employee_company_defined_attributes GET Get company-defined attributes
update_employee_company_defined_attributes PATCH Update company-defined attributes
get_employee_reciprocity_elections GET Get reciprocity elections
update_employee_reciprocity_elections PATCH Update reciprocity elections
reveal_employee_ssn GET Reveal employee SSN
authorize_employee_partner POST Authorize a partner for an employee

Contractors (10 tools)

Tool Method Description
list_contractors GET List contractors with optional filters
get_contractor GET Get details for a specific contractor
create_contractor POST Create a new contractor
update_contractor PATCH Update an existing contractor
onboard_contractor POST Onboard a contractor to active status
list_contractor_payments_for_contractor GET List payments for a contractor
get_contractor_payment_for_payroll GET Get contractor payment for a payroll
list_contractor_forms GET List forms for a contractor
submit_contractor_form POST Submit a contractor form
reveal_contractor_ssn GET Reveal contractor SSN/EIN

Workplaces (4 tools)

Tool Method Description
list_workplaces GET List workplaces
get_workplace GET Get details for a specific workplace
create_workplace POST Create a new workplace
update_workplace PATCH Update an existing workplace

Payrolls (15 tools)

Tool Method Description
list_payrolls GET List payrolls with optional filters
get_payroll GET Get details for a specific payroll
create_payroll POST Create a new payroll
update_payroll PATCH Update an existing payroll
delete_payroll DELETE Delete a payroll
preview_payroll GET Preview a payroll before approval
approve_payroll POST Approve a payroll for processing
reopen_payroll POST Reopen a previously approved payroll
get_payroll_paper_checks GET Get paper checks for a payroll
get_payroll_cash_requirement_report GET Get cash requirement report
get_payroll_paper_checks_report GET Get paper checks report
simulate_start_processing POST Simulate starting processing (sandbox)
simulate_complete_funding POST Simulate completing funding (sandbox)
simulate_fail_funding POST Simulate failing funding (sandbox)
simulate_complete_disbursements POST Simulate completing disbursements (sandbox)

Payroll Items (8 tools)

Tool Method Description
list_payroll_items GET List payroll items
get_payroll_item GET Get details for a specific payroll item
create_payroll_item POST Create a new payroll item
update_payroll_item PATCH Update an existing payroll item
bulk_update_payroll_items PATCH Bulk update payroll items
delete_payroll_item DELETE Delete a payroll item
bulk_delete_payroll_items DELETE Bulk delete payroll items
get_payroll_item_paper_check GET Get paper check for a payroll item

Contractor Payments (6 tools)

Tool Method Description
list_contractor_payments GET List contractor payments
get_contractor_payment GET Get details for a specific payment
create_contractor_payment POST Create a new contractor payment
update_contractor_payment PATCH Update a contractor payment
delete_contractor_payment DELETE Delete a contractor payment
get_contractor_payment_paper_check GET Get paper check for a payment

External Payrolls (8 tools)

Tool Method Description
list_external_payrolls GET List external payrolls
get_external_payroll GET Get details for a specific external payroll
create_external_payroll POST Create a new external payroll
update_external_payroll PATCH Update an external payroll
delete_external_payroll DELETE Delete an external payroll
approve_external_payroll POST Approve an external payroll
reopen_external_payroll POST Reopen an external payroll
preview_external_payroll GET Preview an external payroll

Compensation (32 tools)

Pay schedules, benefits, post-tax deductions, company benefits, earning rates, earning codes, and net pay splits.

Tool Method Description
Pay Schedules
list_pay_schedules GET List pay schedules
get_pay_schedule GET Get a specific pay schedule
create_pay_schedule POST Create a new pay schedule
update_pay_schedule PATCH Update a pay schedule
delete_pay_schedule DELETE Delete a pay schedule
get_pay_schedule_paydays GET Get paydays for a pay schedule
Benefits
list_benefits GET List employee benefits
get_benefit GET Get a specific benefit
create_benefit POST Create an employee benefit
update_benefit PATCH Update a benefit
delete_benefit DELETE Delete a benefit
Post-Tax Deductions
list_post_tax_deductions GET List post-tax deductions
get_post_tax_deduction GET Get a specific post-tax deduction
create_post_tax_deduction POST Create a post-tax deduction
update_post_tax_deduction PATCH Update a post-tax deduction
delete_post_tax_deduction DELETE Delete a post-tax deduction
Company Benefits
list_company_benefits GET List company-level benefits
get_company_benefit GET Get a specific company benefit
create_company_benefit POST Create a company benefit
update_company_benefit PATCH Update a company benefit
delete_company_benefit DELETE Delete a company benefit
Earning Rates
list_earning_rates GET List earning rates
get_earning_rate GET Get a specific earning rate
create_earning_rate POST Create an earning rate
update_earning_rate PATCH Update an earning rate
Earning Codes
list_earning_codes GET List earning codes
get_earning_code GET Get a specific earning code
create_earning_code POST Create an earning code
update_earning_code PATCH Update an earning code
Net Pay Splits
list_net_pay_splits GET List net pay splits
get_net_pay_split GET Get a specific net pay split
create_net_pay_split POST Create a net pay split

Bank Accounts (6 tools)

Tool Method Description
list_bank_accounts GET List bank accounts
get_bank_account GET Get a specific bank account
create_bank_account POST Create a new bank account
update_bank_account PATCH Update a bank account
delete_bank_account DELETE Delete a bank account
reveal_bank_account_number GET Reveal full account number

Documents (19 tools)

Tool Method Description
Company Tax Documents
list_company_tax_documents GET List company tax documents
get_company_tax_document GET Get a specific company tax document
download_company_tax_document GET Download a company tax document
Company Authorization Documents
list_company_authorization_documents GET List authorization documents
get_company_authorization_document GET Get an authorization document
download_company_authorization_document GET Download an authorization document
Employee Tax Documents
list_employee_tax_documents GET List employee tax documents
get_employee_tax_document GET Get an employee tax document
download_employee_tax_document GET Download an employee tax document
Contractor Tax Documents
list_contractor_tax_documents GET List contractor tax documents
get_contractor_tax_document GET Get a contractor tax document
download_contractor_tax_document GET Download a contractor tax document
Setup Documents
list_setup_documents GET List setup documents
get_setup_document GET Get a setup document
download_setup_document GET Download a setup document
Company Provided Documents
list_company_provided_documents GET List company-provided documents
get_company_provided_document GET Get a company-provided document
create_company_provided_document POST Create a company-provided document
upload_company_provided_document_file POST Upload a file for a document

Forms (4 tools)

Tool Method Description
list_forms GET List forms across all companies
get_form GET Get a specific form
render_form GET Render a form for display
validate_form POST Validate form data before submission

Payments (6 tools)

Tool Method Description
list_payments GET List payments
get_payment GET Get a specific payment
list_payment_attempts GET List payment attempts
retry_payment POST Retry a failed payment
refund_payment POST Refund a payment
cancel_payment POST Cancel a payment

Tax (31 tools)

Tax parameters, elections, filings, exempt status, exemptible taxes, statements, and packages.

Tool Method Description
Company Tax Params
get_company_tax_params GET Get tax parameters for a company
update_company_tax_params PATCH Update company tax parameters
list_company_tax_param_settings GET List tax parameter settings
get_company_tax_param_setting GET Get a specific tax param setting
list_company_jurisdictions GET List tax jurisdictions for a company
Employee Tax Params
list_employee_tax_params GET List employee tax parameters
get_employee_tax_params GET Get tax parameters for an employee
update_employee_tax_params PATCH Update employee tax parameters
list_employee_tax_param_settings GET List employee tax param settings
get_employee_tax_param_setting GET Get a specific setting
list_employee_jurisdictions GET List tax jurisdictions for an employee
bulk_get_employee_tax_param_settings POST Bulk get tax param settings
bulk_update_employee_tax_param_settings POST Bulk update tax param settings
Company Tax Elections
list_company_tax_elections GET List tax elections for a company
create_company_tax_elections POST Create company tax elections
update_company_tax_elections PATCH Update company tax elections
Employee Tax Elections
list_employee_tax_elections GET List tax elections for an employee
update_employee_tax_elections PATCH Update employee tax elections
Tax Filings
list_tax_filings GET List tax filings
get_tax_filing GET Get a specific tax filing
request_tax_filing_refile POST Request a refile
Tax Filing Events
get_tax_filing_event GET Get a specific tax filing event
Exempt Status
get_exempt_status GET Get exempt status for an employee
update_exempt_status PATCH Update exempt status
Exemptible Taxes
list_exemptible_taxes GET List exemptible taxes
update_exemptible_tax PATCH Update an exemptible tax
bulk_update_exemptible_taxes PATCH Bulk update exemptible taxes
Employee Tax Statements
list_employee_tax_statements GET List employee tax statements
get_employee_tax_statement GET Get a specific tax statement
Tax Packages
request_tax_package POST Request a tax package
get_tax_package GET Get a specific tax package

Webhooks (7 tools)

Tool Method Description
list_webhook_configs GET List webhook configurations
get_webhook_config GET Get a specific webhook configuration
create_webhook_config POST Create a webhook configuration
update_webhook_config PATCH Update a webhook configuration
delete_webhook_config DELETE Delete a webhook configuration
ping_webhook_config POST Send a test ping
retry_webhook_events POST Retry failed webhook events

Platform (29 tools)

Notifications, communications, usage, integrations, accounting, company groups, addresses, setups, and requirements.

Tool Method Description
Notifications
list_notifications GET List notifications
get_notification GET Get a specific notification
Communications
list_communications GET List communications
get_communication GET Get a specific communication
create_communication POST Create a communication
Usage
list_usage_summaries GET List usage summaries
list_usage_records GET List usage records
Integrations
list_integration_partners GET List integration partners
get_integration_partner GET Get a specific integration partner
authorize_integration_partner POST Authorize an integration partner
list_integration_permissions GET List integration permissions
get_integration_permission GET Get a specific permission
list_integration_accesses GET List integration accesses
Accounting
list_accounting_accounts GET List accounting accounts for a company
refresh_accounting_accounts POST Refresh accounting accounts
get_accounting_mappings GET Get accounting mappings
update_accounting_mappings PATCH Update accounting mappings
toggle_accounting_mappings POST Toggle accounting mappings
sync_accounting POST Trigger an accounting sync
list_accounting_sync_attempts GET List accounting sync attempts
Company Groups
list_company_groups GET List company groups
create_company_group POST Create a company group
update_company_group PATCH Update a company group
Addresses
validate_address POST Validate an address
Setups
list_setups GET List setups
get_setup GET Get a specific setup
Requirements
list_requirements GET List requirements
get_requirement GET Get a specific requirement
Reports
get_applied_for_ids_report GET Get applied-for IDs report

Embedded Components (35 tools)

Generate embeddable UI component URLs via POST /{entity_type}/{entity_id}/components/{component_type}. All tools accept an entity_id and optional data configuration.

Company components (25): create_company_previous_provider_access_component, create_company_accounting_integration_component, create_company_authorization_documents_component, create_company_business_details_component, create_company_checklist_component, create_company_company_reports_component, create_company_connect_bank_account_component, create_company_details_component, create_company_early_enrollment_component, create_company_employee_setup_component, create_company_filing_authorization_component, create_company_filing_preview_component, create_company_full_service_setup_submission_component, create_company_integrations_component, create_company_integrations_authorize_component, create_company_pay_history_component, create_company_payment_setup_component, create_company_progress_tracker_component, create_company_run_payroll_component, create_company_signatory_agreements_component, create_company_tax_documents_component, create_company_tax_setup_component, create_company_team_setup_component, create_company_terms_of_service_component, create_company_verification_documents_component

Employee components (9): create_employee_benefits_component, create_employee_payment_setup_component, create_employee_paystubs_component, create_employee_post_tax_deductions_component, create_employee_profile_component, create_employee_ssn_setup_component, create_employee_tax_documents_component, create_employee_tax_setup_component, create_employee_withholdings_setup_component

Contractor components (1): create_contractor_tax_documents_component

Development

git clone https://github.com/check-technologies/mcp-server-check.git
cd mcp-server-check
uv sync --group dev
uv run pytest  # 311 tests

Pre-commit hooks

This repo ships a pre-commit config that runs ruff check and ruff format (the same checks as CI) before each commit. Enable it once after cloning:

uv run pre-commit install

To run the hooks manually against all files: uv run pre-commit run --all-files.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured