Skip to content
Conduit

mcp server

pyprocore

Open-source Python SDK, CLI, workflow automation toolkit, and model-agnostic agent layer for Procore. Includes typed API access, exports, AI-ready packages, OpenAPI schemas, MCP discovery, run logs, a

vibhanshu-mishra/pyprocorecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "pyprocore": {
      "command": "uvx",
      "args": [
        "pyprocore"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

PyProcore

Open-source Python SDK and automation toolkit for safe, read-oriented Procore integrations.

PyProcore helps developers, consultants, and construction-tech teams build Procore integrations without rebuilding OAuth, token refresh, pagination, retries, typed response parsing, downloads, exports, and local automation plumbing from scratch.

The SDK is read-oriented and safety-first. It is designed for listing, retrieving, searching, downloading, exporting, packaging, and validating Procore project data while keeping write and execution surfaces closed by default.

The latest published stable release is 2.4.0.

Highlights:

  • Read-only Project Tools coverage
  • Secret-free local DMSA connection profiles, GC/Owner permission checklists, installation packets, smoke-check plans, and permission diagnostics
  • Mocked/local read-only RFI and Submittal intake sync with normalized logs, polling state, raw audit JSON, and attachment metadata manifests
  • GC/Owner private app installation packets with minimum Read Only permission requests, checklists, security statements, email templates, and diagnostics
  • Local analytics and FastAPI starter template
  • OAS catalog and discovery metadata
  • Human-review API maintenance workflows for drift, impact, migration plans, PR drafts, compatibility contracts, and migration guides

These features remain read-only, local, or report-oriented. MCP is discovery-only, Procore tool execution is disabled, and no external AI/model API is called by default. Maintenance helpers do not fetch remote code/specs, edit customer code, apply patches, run git, call GitHub, or open pull requests.

Installation

Install the current stable release:

python3 -m pip install pyprocore==2.4.0

Install optional async HTTP support:

python3 -m pip install "pyprocore[async]==2.4.0"

The 2.4.0 package is available from PyPI and the source repository.

Quick Start

Create and configure a local .env file:

cp .env.example .env

Check your setup and complete OAuth:

procore-sdk doctor
procore-sdk auth login-url
procore-sdk auth exchange-code YOUR_AUTHORIZATION_CODE
procore-sdk companies

Use the object client:

from pyprocore import Procore

client = Procore()

projects = client.projects.list(company_id=123456)
for project in projects:
    print(project.id, project.name)

Build a local project context package:

from pyprocore.workflows import build_project_context_package

result = build_project_context_package(
    project_id=352338,
    company_id=4286480,
    output_dir="exports/project-context",
    include=["project", "rfis", "submittals"],
    max_items=100,
)

print(result.summary_path)

PyProcore loads .env from the current working directory and does not override environment variables that are already set.

For a GC/Owner-installed Data Connection App, use a secret-free DMSA connection profile to document the company, permitted projects, credential environment-variable names, and least-privilege Read Only access. PyProcore does not create a DMSA or grant project permissions; the GC/Owner controls installation and access.

Phase 19B builds on those profiles with a read-only RFI/Submittal intake workflow. Its CLI and examples use fake local records to plan polling, normalize logs, preserve raw JSON, and prepare attachment manifests without calling Procore or downloading remote attachments.

What You Can Build

Read-Only Procore Data Tools

  • Build typed Procore integrations for companies, projects, RFIs, submittals, documents, drawings, specifications, photos, Daily Logs, observations, punch items, correspondence, meetings, inspections, incidents, directory data, financial metadata, contracts, schedules, tasks, forms, and Project Tools.
  • Use OAuth, token refresh, pagination, retries, typed models, exports, and custom SDK errors without rebuilding the plumbing from scratch.

Local Reporting And Export Workflows

  • Export supported resources to CSV, JSONL, Markdown, manifests, and local project context packages.
  • Build repeatable read-only workflows for audits, reviews, reporting, scheduled-export planning, and project documentation.

AI-Ready Local Context Packages

  • Package project data into local prompt packs, source indexes, checklists, and vector-export manifests.
  • Keep model choice outside the SDK: PyProcore prepares local context, but does not call external AI/model APIs by default.

Async And Batch Read Workflows

  • Use AsyncProcore for read-oriented async integrations.
  • Plan multi-project exports and downloads with conservative concurrency, dry-run manifests, and local validation.

Local Analytics And Project Health Reviews

  • Analyze exported/local RFI, submittal, change, and Daily Log records.
  • Generate deterministic project health summaries without calling Procore, running AI, hosting dashboards, or adding database dependencies.

API Discovery And OAS Intelligence

  • Inspect local OpenAPI/OAS files, classify endpoints, compare coverage gaps, and detect API drift.
  • Generate local JSON and Markdown reports for endpoint review without fetching remote specs, generating executable tools, calling Procore, or enabling writes.

Templates, Blueprints, And Plugin Metadata

  • Copy optional starter templates such as the FastAPI read-only API example.
  • Inspect local integration blueprints, plugin manifests, extension packs, trust policies, and scaffolds without installing remote plugins or executing plugin code.

Agent, MCP, And Evaluation Metadata

  • Inspect local agent API metadata, JSON Schemas, OpenAPI exports, run logs, replay metadata, MCP-style resources, prompts, contracts, and snapshots.
  • Run deterministic golden evals and offline model-response fixture checks without calling live models or enabling tool execution.

Self-Maintaining API Maintenance Assistant

  • Compare local OAS files and detect API drift.
  • Scan a local codebase for PyProcore usage.
  • Generate migration plans, patch suggestions, PR draft packs, compatibility contracts, and migration guides.
  • Keep everything local and human-reviewed: no code edits, no git commands, no GitHub API calls, no Procore calls.

See the complete feature inventory for the full phase-by-phase breakdown.

Supported Resource Families

PyProcore supports read-oriented access across these resource families:

  • Companies and Projects
  • RFIs and Submittals
  • Project Tools, Documents, Drawings, Specifications, Photos, and Daily Logs
  • Observations, Punch Items, Correspondence, Meetings, Inspections, and Incidents
  • Directory, Vendors, Departments, Distribution Groups, and Locations
  • Read-only financial, contract, billing, schedule, task, form, coordination issue, and action-plan metadata

See API Coverage for endpoint notes, permission context, and live-verification limitations.

CLI Overview

Common commands:

procore-sdk doctor
procore-sdk companies
procore-sdk projects
procore-sdk rfis --project 352338
procore-sdk submittals --project 352338
procore-sdk project-context --project 352338 --company 4286480
procore-sdk scheduled-export dry-run examples/configs/scheduled_export_client_credentials.json
procore-sdk evals run
procore-sdk mcp validate
procore-sdk catalog summarize examples/catalog/fake_procore_oas.json
procore-sdk discovery search "overdue rfis"
procore-sdk analytics project-health --rfis examples/analytics/fake_rfis.json --format markdown
procore-sdk templates show fastapi-read-api
procore-sdk templates copy fastapi-read-api --output-dir ./tmp-fastapi-read-api --dry-run
procore-sdk maintenance drift old_oas.json new_oas.json --format markdown
procore-sdk maintenance usage-scan ./my-project --format markdown
procore-sdk maintenance migration-guide --from-contract old.json --to-contract new.json --format markdown

See CLI Usage for the full command reference.

Safety Model

PyProcore is intentionally conservative:

  • PyProcore is read-oriented.
  • Workflow helpers write local files, not Procore data.
  • Procore tool execution is disabled.
  • MCP is discovery-only.
  • No external AI/model APIs are called by default.
  • Plugin manifests, configs, extension packs, and scaffolds are metadata or templates only.
  • No Procore create, update, delete, upload, approve, submit, payment, or other mutation actions are enabled.

Never commit .env files, OAuth tokens, token stores, Authorization headers, or private project data.

Documentation Site

TopicLink
Documentation Homedocs/index.md
Getting Starteddocs/getting-started.md
Authenticationdocs/authentication.md
DMSA Connection Profilesdocs/dmsa-connection-profiles.md
GC/Owner Installation Packetdocs/gc-owner-installation-packet.md
RFI/Submittal Intake Syncdocs/rfi-submittal-intake-sync.md
Complete Feature Inventorydocs/features.md
API Coveragedocs/api-coverage.md
Workflowsdocs/workflows.md
Docker Automationdocs/automation/docker.md
CI Automationdocs/automation/ci.md
Docker Examplesexamples/docker
Async Clientdocs/async-client.md
AI Workflowsdocs/ai-workflows.md
Agent APIdocs/agent-api.md
MCP Discoverydocs/mcp.md
Pluginsdocs/plugins.md
Analytics Recipesdocs/analytics-recipes.md
FastAPI Starterdocs/fastapi-starter.md
Golden Evalsdocs/evals.md
Release Guidedocs/release.md
Roadmapdocs/roadmap.md
Examplesexamples/README.md
Project Statusdocs/project-status.md
GitHub Labelsdocs/github-labels.md

Run make docs-build to build the MkDocs site or make docs-serve to preview it locally.

Released In v2.4.0

v2.4.0 is an additive, backward-compatible published release. Highlights:

  • Read-only Project Tools metadata helpers.
  • Local plugin trust policies and compatibility reports.
  • Local OAS catalog, discovery routing, integration blueprints, analytics recipes, and an optional copied FastAPI starter.
  • Human-review API drift, codebase impact, migration planning, PR draft, compatibility contract, and migration-guide reports.
  • Examples through 334 and corresponding mocked/local tests.

Detailed release history lives in CHANGELOG.md, Project Status, and Roadmap.

Contributing and Support

Contributions, issues, and feature requests are welcome. Start with CONTRIBUTING.md, SUPPORT.md, SECURITY.md, and CODE_OF_CONDUCT.md.

Security

Do not paste or commit Procore client secrets, access tokens, refresh tokens, Authorization headers, .env files, token stores, or private project data. See SECURITY.md and docs/security.md.

Maintainers can run make secret-check and make quality-check before release or documentation changes.

Author

Built by Vibhanshu Mishra, PE, Structural Engineer at AG&E Structural Engenuity, Austin, Texas.

License

PyProcore is released under the MIT license.

Disclaimer

PyProcore is an independent open-source project. It is not affiliated with, endorsed by, or supported by Procore Technologies. For official Procore product support, use Procore's support channels.

↑↓ navigate openesc close