Skip to main content
Glama
README.md
# Canopy MCP

MCP (Model Context Protocol) server for the [Get Canopy](https://www.getcanopy.com) WordPress site. Gives Cursor agents full context over ACF blocks, content, Yoast SEO, menus, HubSpot tooling, and the running change journal.

## What’s included

| Area | Path | Notes |
|---|---|---|
| MCP server | `src/` | Tools + resources registered with the MCP SDK |
| Change journal | `context/changelog.jsonl` | Persistent log of site changes (`wp_log_change`) |
| One-off ops scripts | `*.cjs`, `*.py` | HubSpot/GTM/import helpers — require `.env` |
| Env template | `.env.example` | Copy to `.env` and fill credentials |

## Setup

```bash
cp .env.example .env
# edit .env — WP_URL, WP_USER, WP_APP_PASSWORD, THEME_PATH, optional HubSpot/GTM

npm install
npm start
```

Point Cursor at this folder via `.cursor/mcp.json` (or your global MCP config):

```json
{
  "mcpServers": {
    "get-canopy-wordpress": {
      "command": "npm",
      "args": ["start"],
      "cwd": "/absolute/path/to/canopy-mcp"
    }
  }
}
```

## Security

- **Never commit `.env`.** It is gitignored.
- One-off scripts read `WP_APP_PASSWORD` / `HUBSPOT_PRIVATE_APP_TOKEN` from `.env` only.
- This repo is intended for the Canopy engineering team; treat application passwords and HubSpot tokens as secrets.

## Related

Lives alongside the WordPress theme at `wp-content/themes/get-canopy` (theme files, ACF JSON, blocks). The MCP `THEME_PATH` env var should point at that theme’s `theme/` directory.