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
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`)
{
"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, 2026PyProcore
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
AsyncProcorefor 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
| Topic | Link |
|---|---|
| Documentation Home | docs/index.md |
| Getting Started | docs/getting-started.md |
| Authentication | docs/authentication.md |
| DMSA Connection Profiles | docs/dmsa-connection-profiles.md |
| GC/Owner Installation Packet | docs/gc-owner-installation-packet.md |
| RFI/Submittal Intake Sync | docs/rfi-submittal-intake-sync.md |
| Complete Feature Inventory | docs/features.md |
| API Coverage | docs/api-coverage.md |
| Workflows | docs/workflows.md |
| Docker Automation | docs/automation/docker.md |
| CI Automation | docs/automation/ci.md |
| Docker Examples | examples/docker |
| Async Client | docs/async-client.md |
| AI Workflows | docs/ai-workflows.md |
| Agent API | docs/agent-api.md |
| MCP Discovery | docs/mcp.md |
| Plugins | docs/plugins.md |
| Analytics Recipes | docs/analytics-recipes.md |
| FastAPI Starter | docs/fastapi-starter.md |
| Golden Evals | docs/evals.md |
| Release Guide | docs/release.md |
| Roadmap | docs/roadmap.md |
| Examples | examples/README.md |
| Project Status | docs/project-status.md |
| GitHub Labels | docs/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
334and 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.
- Procore RFI & Submittal Tracker - A non-API way to access RFIs and Submittals on Procore
- RISA-3D MCP Server
- Tekla Structural Designer MCP Server
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.