ghl-context-mcp
ghl-context-mcp
일부러 작게 만든 GoHighLevel MCP 서버입니다. 여섯 개의 도구가 하나의 작업에만 맞춰져 있습니다. 바로 곧 대화할 상대가 누구인지 파악하는 일입니다.
왜 만들었는가
CRM 위에 에이전트를 올릴 때 흔히 나타나는 실패 패턴은 도구 표면이 너무 넓고 일반적이어서 원시 API JSON을 그대로 쏟아내는 것입니다. 모델이 잘못된 도구를 선택하고, 아무도 말로 꺼내지 않을 필드들로 컨텍스트 창을 소모하며, 가끔은 레코드를 만들거나 덮어씁니다. 이 서버는 그 반대의 선택을 합니다. 여섯 도구를 제공하되, 각각 에이전트가 연락처와 대화하려는 바로 그 순간에 맞게 범위를 한정합니다. 반환되는 모든 필드는 사람이 실제로 말할 만한 것이거나, 에이전트가 다음 호출에 그대로 넘겨줄 것입니다. 날짜 계산은 서버가 직접 하며, 쓰기 동작은 사용자가 직접 켜기 전까지 꺼져 있습니다. 좁은 표면이 넓은 표면보다 낫다는 주장은 측정 가능하며, 그걸 측정하기 위한 동반 벤치마크(mcp-tool-surface-bench)가 구축되고 있습니다.
Related MCP server: GHL MCP Server
도구
도구 | 하는 일 | 종류 | 상한 |
| 이름·전화번호·이메일로 정확히 하나의 연락처를 찾거나 후보를 반환 | 읽기 | 400 |
| 최근 통화·SMS·메모·예약·단계 변경을 헤드라인이 있는 문장 형태로 반환 | 읽기 | 1200 |
| 각 거래의 단계, 단계 머무른 일수, 금액, 정체 여부를 반환 | 읽기 | 500 |
| 연락처 또는 캘린더의 다가오는 예약을 상대 시간과 함께 반환 | 읽기 | 900 |
| 재시도해도 안전한 멱등성과 저장된 결과의 echo와 함께 메모 작성 | 쓰기 | 200 |
| 지난 컨텍스트 검사로 보호하며 거래를 다른 단계로 이동 | 쓰기 | 250 |
상한은 응답별 토큰 예산입니다. 응답이 한도를 넘어가면 빌드를 실패시키는 테스트가 있습니다. 여기서 "토케"은 무슨 뜻인지 DESIGN.md를 참조하세요.
사용법
이 서버는 MCP 서버이며, 의도한 사용자는 단말기를 보는 사람이 아니라 AI 에이전트입니다. 서버를 에이전트(Claude Code, Claude Desktop, 또는 MCP를 지원하는 런타임)에 연결한 다음, 평범한 언어로 에이전트에게 말하면 됩니다. 연락처를 찾고 그 컨텍스트를 가져올지 결정하는 것은 에이전트입니다.
Claude Code에서의 팀 빠른 시작
저장소를 클론하고 설치 및 빌드합니다:
npm install && npm run build자격 증명을 추가합니다:
cp .env.example .env # then edit .env and fill in GHL_PIT and GHL_LOCATION_IDClaude Code에서 폴더를 엽니다. 여기에는 체크된
.mcp.json을 읽고ghl-context서버를 제공하며, 한 번만 승인하면 됩니다. 서버는 시작할 때.env를 불러오므로 토큰이 설정 파일에 저장될 일은 없습니다.영업 담당자가 하루 시작할 때 하는 것처럼 에이전트에게 말합니다:
오늘 Marcus Halloway와 Priya Nair에게 전화할 거예요. 각각 전화 전에 브리핑을 주세요.
에이전트가 각 연락처를 확인하고, 타임라인, 파이프라인 위치, 다가오는 일정을 가져와 브리핑으로 정리해서 돌려줍니다.
다른 MCP 클라이언트
어느 MCP 클라이언트든 stdio로 서버에 연결할 수 있습니다. 배포된 패키지는 클론이나 빌드가 필요 없습니다. Claude Desktop의 claude_desktop_config.json에 다음을 추가하세요:
{
"mcpServers": {
"ghl-context": {
"command": "npx",
"args": ["-y", "ghl-context-mcp"],
"env": {
"GHL_PIT": "pit-...",
"GHL_LOCATION_ID": "your-sub-account-id"
}
}
}
}배포된 패키지 대신 로컬 체크아웃을 실행하려면 command를 node로, args를 빌드된 dist/index.js로 설정하세요.
환경 변수
변수 | 필수 | 기본값 | 의미 |
| yes | 하위 계정 하나를 위한 Private Integration Token | |
| yes | 토큰이 속한 하위 계정 ID | |
| no |
| 이 값이 정확히 |
| no |
| 단계 평균 경과일의 몇 배를 정체 기준으로 볼지 |
| no |
| 결과 집중 또는 result contact 검색 ( |
토큰은 설정(Settings) → 통합(Integrations) → Private 통합(Private Integrations)에서 만들고, 범위는 contacts.readonly, contacts.write, opportunities.readonly, opportunities.write, calendars.readonly를 포함해야 합니다.
클라이언트 없이 살펴보기
MCP 클라이언트가 준비되어 있지 않더라도, 리포지토리에는 에이전트가 수행할 것과 동일한 시퀀스를 실행하고 브리핑을 출력하는 터미널 데모가 포함되어 있습니다:
npm run brief -- "Marcus Halloway"이것은 가치를 보여주는 데모이지 제품이 아닙니다. 제품은 위의 에이전트 연결입니다.
소스에서
npm install
npm run build
npm testnpm test는 자격 증명 없이도 통과합니다. 실시간 확인(npm run live-check, npm run live-write-check)은 실제 .env가 필요합니다.
응답 형태
해석된 연락처:
{
"resolution": "exact",
"contact": {
"contact_id": "NnAyKFnTSAVKg1amAArO",
"name": "Marcus Halloway",
"primary_phone": "+15551230010",
"primary_email": "marcus.halloway@example.com",
"tags": ["synthetic-seed"],
"owner": null,
"last_activity_at": null,
"last_activity_summary": null
}
}모호한 일치에서는 추측하지 않고 후보를 반환합니다:
{
"resolution": "ambiguous",
"candidates": [
{
"contact_id": "...",
"name": "Jordan Wells",
"primary_phone": "+15551230012",
"primary_email": "jordan.wells@example.com",
"last_activity_at": null
},
{
"contact_id": "...",
"name": "Jordan Wells",
"primary_phone": "+15551230013",
"primary_email": "jordan.wells.cpa@example.com",
"last_activity_at": null
}
],
"disambiguate_by": ["email", "primary_phone"],
"instruction": "Ask the user which one, or call again with the exact email or phone."
}모호한 것은 성공으로 취급합니다. 에러가 발생한 에이전트는 멈추지만, 후보 목록을 받은 에이전트는 계속 진행하여 사용자에게 어떤 연락처를 의미했는지 확인합니다.
오류
모든 오류는 하나의 형태입니다. 원시 HTTP 상태가 모델로 전달되지 않습니다.
코드 | 발생 시점 | 재시도 가능 |
| 요청과 일치하는 연락처가 없음 | 아니요 |
| 해당 ID의 기회가 없음 | 아니요 |
| 목표 단계가 파이프라인에 없음(유효한 단계 목록 함께) | 아니요 |
| 가정한 현재 단계가 live 상태와 일치하지 않음 | 예. 다시 읽기 후 |
|
| 예 |
| 쓰기 비활성화 상태에서 쓰기 요청함 | 아니요 |
| 토큰에 필요한 권한이 없음 | 아니요 |
| 토큰이 거부됨 | 아니요 |
| GoHighLevel이 통제 중(재시도 지연 환 메시지와 함께) | 예 |
| GoHighLevel이 오류 반환 | 예, 한 번만 |
| 요청한 시간 창이 365일을 초과함 | 예 |
설계 원칙
서버가 바탕을 둔 여덟 가지 규칙을 한 줄씩 정리했습니다. 더 긴 설명과 면접관이 묻기 좋은 추론은 DESIGN.md에 있습니다.
도구 하나당 작업 하나. 설명에 "그리고"가 필요하면 두 개의 도구입니다.
설명은 모델을 위해 씁니다. 언제 사용할지, 언제 사용하지 말아야 할지, 그리고 헷갈리는 비슷한 도구를 함께.
원시 API 형태는 경계 밖으로 나가지 않습니다. 테스트로 강제합니다.
오류는 명령형의 지침이며, 유효한 선택지를 나열합니다.
모든 응답에는 토큰 상한이 있고, 빌드를 실패시키는 테스트가 있습니다.
계산은 서버가 합니다: 나이, 기간, 상대 시간, 개수.
쓰기 동작은 자신이 의존하는 상태를 확인하고, 불일치하면 크게 실패합니다.
쓰기는
GHL_ALLOW_WRITES=true인 경우가 아니면 꺼져 있습니다.
좋지 않은 것
각 잘라냄은 의도적입니다.
제공하지 않는 것 | 이유 |
| 에이전트가 레코드를 만들거나 덮어쓰는 것이 실제 세계에서 가장 큰 실패입니다. 생성은 폼이나 업무 흐름에 있는 것이 맞습니다. |
| 에이전트가 제어하는 발신 메시지는 규제 측면이 있습니다. 컨텍스트 서버가 그런 것을 제공하는 것은 아닙니다. |
| 결과가 끝없이 커지면 컨텍스트 창을 태웁니다. 에이전트는 목록이 아니라 확인된 하나의 일치가 필요합니다. |
| 스키마 발견 도구는 대부분 시간과 컨텍스트 소모에 그칩니다. 이름은 도구 내부에서 id로 해석하고, 잘못된 이름에는 유효한 선택지를 반환합니다. |
Workflow / automation 트리거 | 서버가 사전에 설명하거나 사후에 돌릴 수 없는 부작용입니다. |
| 의도적으로 보류했습니다. 그래야 벤치마크가 이 기능을 별개로 테스트할 수 있습니다. 만약 이 압이 이기면 v2에데과 함께 데이터와 함께 실릅니다. |
제약
단일 로케이션, Private Integration Token 인증만, OAuth 없음. 페이지네이션은 도구별 최대치로 제한됨. 정지 감지 기능이 의미 있으려면 충분한 데이터가 필요하며, 현재는 GoHighLevel이 단계 이력을 노출하지 않으므로 고정된 대체값을 사용합니다. 전화번호 매칭은 미국 중심입니다. 토큰 상한은 근사 토큰이지 정확한 Claude 토큰이 아닙니다. GoHighLevel의 쓰기는 읽기에 비해 약 한 초 지연됩니다. 하나의 계정 형태에서 테스트했습니다.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides access to over 460 tools within the GoHighLevel CRM, allowing AI assistants to manage contacts, opportunities, messaging, and business workflows through natural language.2397ISC
- AlicenseNot gradedqualityCmaintenanceEnables Claude to manage GoHighLevel CRM contacts, pipelines, and workflows through natural language commands.35MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to read conversations, send messages, create tasks, and manage calendar appointments within GoHighLevel CRM locations.1
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with GoHighLevel CRM via natural language for lead lookup, pipeline management, messaging, and calendar operations, with read-only mode by default.12MIT
Related MCP Connectors
Stop re-explaining yourself to Agents. Give it the right context, right when needed.
LeadConnector / GoHighLevel MCP Pack — wraps the GoHighLevel CRM for AI agents.
Agent-native CRM. 25 tools — contacts, deals, sequences, enrichment waterfall, audit log.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ceosykes/ghl-context-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server