HelloZen Read-Only MCP

HelloZen Read-Only MCP

A read-only MCP connector for inspecting HelloZen configuration, exposing four tools to list custom fields, pipelines, calendars, and workflows without write access or contact data exposure.

Category
访问服务器

README

HelloZen Read-Only MCP

An unofficial, self-hosted, strictly read-only MCP connector designed for inspecting HelloZen configuration.

Use this connector with ChatGPT (via OpenAI Secure MCP Tunnel) or MCP Inspector to review custom fields, pipelines, calendars, and workflows when planning integrations for a photography studio on HelloZen — without exposing contact data or write access.

Disclaimer: This project is unofficial and is not affiliated with, endorsed by, or supported by HelloZen unless explicitly approved by the HelloZen owner. Do not use HelloZen logos or imply official partnership.

This connector cannot create, update or delete HelloZen data. Its credential contains no write scopes, and its application transport rejects every method except GET.

What it does

Exposes exactly four MCP tools:

Tool Purpose
list_custom_fields Custom contact and opportunity field definitions
list_pipelines Pipeline and stage configuration
list_calendars Calendar configuration (e.g. portrait planning call setup)
list_workflows Workflow IDs, names, and status

It does not access contacts, conversations, appointments, opportunity records, emails, form submissions, calendar events, or workflow enrolments.

Documentation

Document Description
docs/connecting-to-chatgpt.md Field guide: private MCP → Secure MCP Tunnel → ChatGPT (full setup and operations)
docs/BACKLOG.md Planned improvements
SECURITY.md Security policy and on-demand availability rationale
DEPLOYMENT.local.md.example Operator-specific deployment notes template (copy to gitignored DEPLOYMENT.local.md)

Read-only security model

Application boundary

  • Only GET requests to four fixed LeadConnector endpoints
  • Hard-coded upstream origin: https://services.leadconnectorhq.com
  • No arbitrary URLs, methods, or query strings
  • Response size capped while streaming (~2 MB)
  • Tokens and raw upstream payloads never appear in logs, errors, or tool output

Credential boundary

Create a dedicated HelloZen Private Integration for this connector. Required scopes:

locations/customFields.readonly
opportunities.readonly
calendars.readonly
workflows.readonly

Do not grant:

  • Any .write permission
  • Contacts permissions
  • Calendar Events permissions
  • Conversations permissions
  • Edit, Create, Manage, or Delete permissions

Never use HELLOZEN_PRIVATE_INTEGRATION_TOKEN or reuse write-capable credentials from other projects.

Residual risk

The opportunities.readonly scope is relatively broad in HighLevel because it covers both pipeline configuration and opportunity reads. This connector only calls the pipelines list endpoint, but a compromised token could still be misused outside this connector if broader API access was granted. Use the narrowest scopes possible.

Requirements

  • Node.js 22+
  • A HelloZen sub-account location ID
  • A read-only Private Integration token

Local development

git clone <your-repo-url> hellozenmcp
cd hellozenmcp
npm install
cp .env.example .env
# Edit .env with your read-only token and location ID
npm run dev

Health check:

curl http://127.0.0.1:8790/healthz

MCP Inspector

Point MCP Inspector at:

http://127.0.0.1:8790/mcp

Verify HelloZen connectivity

Run manually after configuring .env (not during container startup):

npm run verify:hellozen

Example output:

Custom fields: accessible, 12
Pipelines: accessible, 3
Calendars: accessible, 2
Workflows: accessible, 8

This command prints counts only — no credentials, raw responses, or customer information.

Docker

The connector is on-demand. It is not designed to run continuously. See On-demand operation below.

Initial build and container creation (generic example):

cp .env.example .env
# Edit .env on the deployment host only — never commit credentials
docker build --pull -t hellozenmcp-hellozen-mcp .
docker compose up -d --no-build hellozen-mcp

On hosts where docker compose build works (Buildx >= 0.17.0), you may use docker compose up -d --build instead of the two-step build above.

The default compose file binds to loopback only:

127.0.0.1:8790:8790

Docker is configured with restart: "no", so a host or Docker daemon reboot does not automatically start the connector.

For operator-specific deployment paths, copy DEPLOYMENT.local.md.example to DEPLOYMENT.local.md (gitignored).

On-demand operation

The MCP connector is intentionally not a continuously running service. Its normal resting state is STOPPED. Starting it requires an explicit operator action. This is a deliberate security control — see SECURITY.md.

Expected lifecycle:

build/create
    ↓
STOPPED normally
    ↓
operator starts MCP
    ↓
health check
    ↓
Secure MCP Tunnel / ChatGPT session
    ↓
operator stops MCP
    ↓
STOPPED

Check current state

cd /mnt/user/devconcepts/hellozenmcp
docker compose ps

Start an existing container

docker compose start hellozen-mcp

If the container has not yet been created

docker compose up -d --no-build hellozen-mcp

Confirm healthy

docker compose ps
curl -fsS http://127.0.0.1:8790/healthz && echo

Stop after the ChatGPT/HelloZen session

docker compose stop hellozen-mcp

Use docker compose stop for normal shutdown. You do not need docker compose down for routine sessions — stop preserves the container so the next session can use docker compose start.

After a Vision or Docker daemon reboot, the connector remains stopped until you explicitly start it again.

OpenAI Secure MCP Tunnel

Do not expose this service on a public port. Connect via OpenAI Secure MCP Tunnel after local verification.

Full setup guide: docs/connecting-to-chatgpt.md — repository preparation, Docker hardening, on-demand MCP, tunnel-client installation, doctor checks, ChatGPT app configuration, and operating procedures.

Option A — tunnel client on the host

Keep the connector bound to 127.0.0.1:8790. Configure the tunnel to target:

http://127.0.0.1:8790/mcp

Option B — tunnel client in Docker

Place hellozen-mcp and the tunnel client on a private internal Docker network. Do not publish the MCP port to the host. Configure the tunnel to target:

http://hellozen-mcp:8790/mcp

Warning: Never bind the MCP server to a publicly accessible interface without an approved authentication and authorization layer.

Tunnel setup commands and credentials are configured separately when you deploy the tunnel.

Environment variables

Variable Description
HELLOZEN_MCP_READONLY_TOKEN Read-only Private Integration token
HELLOZEN_MCP_LOCATION_ID HelloZen location ID
HELLOZEN_MCP_PORT HTTP port (default 8790)
HELLOZEN_MCP_BIND_HOST Bind address (default 0.0.0.0 in container)
HELLOZEN_MCP_REQUEST_TIMEOUT_MS Upstream timeout (default 10000)
HELLOZEN_MCP_CACHE_TTL_SECONDS Configuration cache TTL (default 60)

Credential rotation and incident response

  1. Revoke the compromised Private Integration in HelloZen immediately
  2. Create a new integration with the same read-only scopes
  3. Update .env on the deployment host
  4. Start the container when needed: docker compose start hellozen-mcp
  5. Run npm run verify:hellozen to confirm access
  6. Review container logs for unusual tool activity (logs contain event metadata only, not payloads)

Development commands

npm test
npm run typecheck
npm run build
npm audit

License

MIT — see LICENSE.

Security

See SECURITY.md for vulnerability reporting.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选