Ghost CMS MCP Server
Ghost MCP 서버
이 프로젝트는 MFYDev/ghost-mcp의 포크 버전이며, 현재 @hithereiamaliff에 의해 유지 관리 및 개선되고 있습니다.
이 MCP(Model Context Protocol) 서버는 대규모 언어 모델(LLM) 인터페이스를 사용하여 Ghost CMS 인스턴스를 관리할 수 있는 강력하고 유연한 방법을 제공합니다. 블로그의 관리 기능에 대한 포괄적이고 안전한 액세스를 제공하여 콘텐츠 관리 워크플로우를 자동화하고 간소화할 수 있습니다.
주요 기능
강력한 API 통합: 모든 Admin API 작업에 인증된
axios호출을 직접 사용하여 외부 라이브러리에 의존하지 않는 안정적이고 신뢰할 수 있는 연결을 보장합니다.포괄적인 엔티티 액세스: 게시물, 사용자, 멤버, 티어, 오퍼 및 뉴스레터를 관리합니다.
향상된 오류 처리: 상세한 상태 코드와 응답 본문을 제공합니다.
최신 전송 방식: 더 이상 사용되지 않는 STDIO 로직을 제거하고 Streamable HTTP 전송만 독점적으로 사용합니다.
진단 도구: API 연결 및 구성을 문제 해결하기 위한 도구를 포함합니다.
멀티 테넌트 지원:
mcp-key-service를 사용하여 공개/공유 배포 시 MCP URL에 원시 Ghost 자격 증명이 노출되지 않도록 합니다.Firebase 분석: Firebase 실시간 데이터베이스를 사용한 클라우드 기반 분석 저장소 및 로컬 파일 백업을 지원합니다.
VPS 배포 준비 완료: Docker, Nginx 및 GitHub Actions 자동 배포를 지원합니다.
설치 및 사용법
이 MCP 서버는 두 가지 배포 방법을 통해 사용할 수 있습니다:
방법 1: NPM 패키지 (MCP 클라이언트 권장)
npm에서 직접 설치:
npm install -g mcp-ghostcms또는 npx 사용 (설치 불필요):
npx mcp-ghostcmsClaude Desktop과 함께 사용하기
Claude Desktop과 같은 MCP 클라이언트에서 사용하려면 claude_desktop_config.json에 다음을 추가하세요:
{
"mcpServers": {
"mcp-ghostcms": {
"command": "npx",
"args": ["-y", "mcp-ghostcms"],
"env": {
"GHOST_API_URL": "https://yourghostbloginstance.com",
"GHOST_ADMIN_API_KEY": "your_admin_api_key",
"GHOST_API_VERSION": "v6.0"
}
}
}
}방법 2: Smithery 클라우드 플랫폼
Smithery의 클라우드 플랫폼에 배포 및 실행:
또는 Smithery를 사용한 로컬 개발:
git clone <this-repo>
cd ghost-mcp
npm install
npm run dev이 명령은 8080 포트에서 서버를 시작하고 브라우저에서 Smithery Playground를 엽니다.
방법 3: MCP Key Service를 사용하는 자체 호스팅 VPS
공개/공유 배포의 경우, 이 MCP 서버를 VPS에 자체 호스팅하고 mcp-key-service를 통해 Ghost 자격 증명을 해결할 수 있습니다. 사용자는 Ghost 사이트 URL과 관리자 키를 한 번 등록하여 usr_XXXXXXXX 키를 받으며, MCP URL에는 해당 사용자 키만 표시됩니다.
MCP URL 형식
https://your-domain.com/ghostcms/mcp/usr_YOUR_USER_KEY대체 쿼리 매개변수 형식:
https://your-domain.com/ghostcms/mcp?api_key=usr_YOUR_USER_KEYClaude Desktop 사용 예시
claude_desktop_config.json에 추가:
{
"mcpServers": {
"ghost-myblog": {
"type": "streamable-http",
"url": "https://mcp.yourdomain.com/ghostcms/mcp/usr_YOUR_USER_KEY"
}
}
}라이브 데모
공개 인스턴스는 다음에서 확인할 수 있습니다:
https://mcp.techmavie.digital/ghostcms/mcp/usr_YOUR_USER_KEY참고:
usr_키를 얻으려면 먼저mcpkeys.techmavie.digital에 Ghost 자격 증명을 등록하세요.
구성
이 MCP 서버는 다음 구성이 필요합니다:
GHOST_API_URL: Ghost 사이트 URL (도메인만, 경로 제외), 예:
https://yourghostbloginstance.comGHOST_ADMIN_API_KEY:
id:secret형식의 Ghost Admin API 키 (Ghost 관리자 → 설정 → 통합에서 확인).GHOST_API_VERSION: Ghost API 버전 (Ghost 5.x의 경우
v5.0, Ghost 6.x의 경우v6.0).GHOST_CONTENT_API_KEY (선택 사항): 읽기 전용 작업을 위한 Ghost Content API 키.
호스팅된 HTTP 모드의 경우 서버에서 KEY_SERVICE_URL 및 KEY_SERVICE_TOKEN을 구성하고, X-API-Key 헤더로 분석 엔드포인트를 보호하려면 MCP_API_KEY를 설정하세요.
사용 가능한 리소스
이 MCP 서버를 통해 다음 Ghost CMS 리소스를 사용할 수 있습니다:
게시물: Ghost 사이트에 게시된 기사 및 콘텐츠.
멤버: 사이트에 등록된 사용자 및 구독자.
뉴스레터: Ghost를 통해 관리 및 발송되는 이메일 뉴스레터.
오퍼: 멤버를 위한 프로모션 오퍼 및 할인.
초대: Ghost 사이트에 참여할 새 사용자 또는 스태프를 위한 초대.
역할: Ghost 관리자 내의 사용자 역할 및 권한.
태그: 게시물 및 콘텐츠를 위한 조직적 태그.
티어: 멤버를 위한 구독 티어 및 플랜.
사용자: 관리자 및 스태프 계정.
웹훅: 외부 서비스에 대한 자동화된 이벤트 알림.
사용 가능한 도구
이 MCP 서버는 Ghost CMS를 관리하기 위한 다양한 도구를 제공합니다. 이러한 도구는 Model Context Protocol을 통해 노출되며 블로그 리소스에 대한 전체 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행할 수 있습니다. 사용 가능한 도구 세트의 개요는 다음과 같습니다:
게시물
게시물 탐색: 필터, 페이지 매김 및 정렬 옵션을 사용하여 게시물 목록을 조회합니다.
게시물 읽기: ID 또는 슬러그로 게시물을 가져옵니다.
게시물 추가: 제목, 콘텐츠 및 상태를 포함하여 새 게시물을 생성합니다.
게시물 편집: ID로 기존 게시물을 업데이트합니다.
게시물 삭제: ID로 게시물을 삭제합니다.
멤버
멤버 탐색: 필터 및 페이지 매김을 사용하여 멤버 목록을 조회합니다.
멤버 읽기: ID 또는 이메일로 멤버를 가져옵니다.
멤버 추가: 새 멤버를 생성합니다.
멤버 편집: 멤버 세부 정보를 업데이트합니다.
멤버 삭제: 멤버를 삭제합니다.
뉴스레터
뉴스레터 탐색: 뉴스레터 목록을 조회합니다.
뉴스레터 읽기: ID로 뉴스레터를 가져옵니다.
뉴스레터 추가: 새 뉴스레터를 생성합니다.
뉴스레터 편집: 뉴스레터 세부 정보를 업데이트합니다.
뉴스레터 삭제: 뉴스레터를 삭제합니다.
오퍼
오퍼 탐색: 오퍼 목록을 조회합니다.
오퍼 읽기: ID로 오퍼를 가져옵니다.
오퍼 추가: 새 오퍼를 생성합니다.
오퍼 편집: 오퍼 세부 정보를 업데이트합니다.
오퍼 삭제: 오퍼를 삭제합니다.
초대
초대 탐색: 초대 목록을 조회합니다.
초대 추가: 새 초대를 생성합니다.
초대 삭제: 초대를 삭제합니다.
역할
역할 탐색: 역할 목록을 조회합니다.
역할 읽기: ID로 역할을 가져옵니다.
태그
태그 탐색: 태그 목록을 조회합니다.
태그 읽기: ID 또는 슬러그로 태그를 가져옵니다.
태그 추가: 새 태그를 생성합니다.
태그 편집: 태그 세부 정보를 업데이트합니다.
태그 삭제: 태그를 삭제합니다.
티어
티어 탐색: 티어 목록을 조회합니다.
티어 읽기: ID로 티어를 가져옵니다.
티어 추가: 새 티어를 생성합니다.
티어 편집: 티어 세부 정보를 업데이트합니다.
티어 삭제: 티어를 삭제합니다.
사용자
사용자 탐색: 사용자 목록을 조회합니다.
사용자 읽기: ID 또는 슬러그로 사용자를 가져옵니다.
사용자 편집: 사용자 세부 정보를 업데이트합니다.
사용자 삭제: 사용자를 삭제합니다.
웹훅
웹훅 탐색: 웹훅 목록을 조회합니다.
웹훅 추가: 새 웹훅을 생성합니다.
웹훅 삭제: 웹훅을 삭제합니다.
각 도구는 MCP 프로토콜을 통해 액세스할 수 있으며 호환되는 클라이언트에서 호출할 수 있습니다. 자세한 매개변수 스키마 및 사용법은
src/tools/의 소스 코드를 참조하세요.
오류 처리 및 진단
이 포크 버전에는 API 실패에 대한 상세 정보를 제공하는 향상된 오류 처리가 포함되어 있습니다:
HTTP 상태 코드가 캡처되고 보고됩니다.
전체 응답 본문이 오류 메시지에 포함됩니다.
런타임 구성이 시작 시 기록됩니다.
연결 문제를 해결하기 위한 진단 도구를 사용할 수 있습니다:
admin_site_ping: Ghost Admin API 엔드포인트에 도달할 수 있는지 테스트합니다.config_echo: 현재 Ghost API 구성을 표시합니다 (키는 마스킹됨).
이러한 개선 사항을 통해 다음과 같은 일반적인 문제를 훨씬 쉽게 진단할 수 있습니다:
잘못된 API URL 형식
누락되거나 잘못된 형식의 Admin API 키
API 버전 불일치
네트워크/프록시 구성 문제
개발
설정
저장소 복제
종속성 설치:
npm installGhost 구성을 포함한
.env파일 생성:GHOST_API_URL=https://yourghostbloginstance.com GHOST_ADMIN_API_KEY=your_admin_api_key GHOST_API_VERSION=v6.0프로젝트 빌드:
npm run build개발 서버 시작:
npm run dev
문제 해결
인증 또는 "Resource not found" 오류가 발생하는 경우:
Ghost Admin API 키가 올바른
id:secret형식인지 확인하세요.GHOST_API_URL이 Ghost 인스턴스의 올바른 도메인인지 확인하세요.admin_site_ping도구를 사용하여 Admin API 엔드포인트에 도달할 수 있는지 확인하세요.서버 로그에서 실제로 사용 중인 구성을 확인하세요.
MCP Streamable HTTP 요구 사항
이 서버는 적절한 세션 관리 및 Accept 헤더 처리를 갖춘 MCP Streamable HTTP 전송을 구현합니다. 서버는 자동으로 Accept 헤더에 text/event-stream을 삽입하고 세션 충돌을 방지하기 위해 요청당 격리된 전송 인스턴스를 생성합니다.
적절한 MCP 초기화로 엔드포인트 테스트:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude/MCP │────▶│ Nginx Proxy │────▶│ Docker │
│ Client │ │ /ghostcms/ │ │ Container │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Ghost CMS │
│ Admin API │
└─────────────────┘참고: MCP 초기화가 없는 단순 GET/POST 요청은 "Bad Request: Server not initialized"와 같은 프로토콜 오류를 반환합니다. 이는 예상된 동작입니다. 엔드포인트는 적절한 MCP 프로토콜 핸드셰이크가 필요합니다.
MCP 클라이언트용 (Claude Desktop, Claude iOS, Claude Code):
MCP 클라이언트는 초기화 프로토콜 및 세션 관리를 자동으로 처리합니다.
클라이언트 구성에서 MCP URL이 올바르게 형식화되었는지 확인하세요.
Claude iOS의 경우
usr_키를 사용하여 전체 MCP URL로 커넥터 기능을 사용하세요.Claude Code의 경우
streamable-http유형으로 MCP 설정에 서버를 추가하세요.
세션 관리:
서버는 각 HTTP 요청에 대해 새로운 전송 인스턴스를 생성합니다 (상태 비저장 패턴).
각 클라이언트 연결은 자동으로 고유한 세션 ID를 얻습니다.
여러 클라이언트가 세션 충돌 없이 동시에 연결할 수 있습니다.
세션은 응답이 전송된 후 자동으로 정리됩니다.
일반적인 오류 및 해결 방법:
오류 | 원인 | 해결 방법 |
| 이전 서버 버전 | 최신 버전으로 업데이트 - 수정됨 |
| MCP 프로토콜 없이 테스트 | 적절한 MCP 초기화 사용 (위 예시 참조) |
| 세션 충돌이 있는 이전 서버 버전 | 최신 버전으로 업데이트 - 수정됨 |
| 전송을 재사용하는 이전 서버 버전 | 최신 버전으로 업데이트 - 수정됨 |
VPS 배포
이 MCP 서버는 Docker, Nginx 및 GitHub Actions 자동 배포를 통한 자체 호스팅 VPS 배포를 완벽하게 지원합니다.
아키텍처
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude/MCP │────▶│ Nginx Proxy │────▶│ Docker │
│ Client │ │ /ghostcms/ │ │ Container │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Ghost CMS │
│ Admin API │
└─────────────────┘배포 파일
저장소에는 다음이 포함되어 있습니다:
Dockerfile- Node.js 20-alpine을 사용한 컨테이너 구성docker-compose.yml- 분석 및 Firebase 자격 증명을 위한 볼륨이 포함된 Docker 오케스트레이션deploy/nginx-mcp.conf- Nginx 리버스 프록시 구성.github/workflows/deploy-vps.yml- GitHub Actions 자동 배포 워크플로우
빠른 배포
# On your VPS
cd /opt/mcp-servers
git clone https://github.com/hithereiamaliff/mcp-ghostcms.git ghostcms
cd ghostcms
# Build and start
docker compose up -d --build
# Check logs
docker compose logs -f엔드포인트
엔드포인트 | 설명 |
| 상태 확인 |
| MCP 엔드포인트 (호스팅된 키 서비스) |
| 분석 JSON 데이터 |
| 시각적 분석 대시보드 |
| 도구 사용 통계 |
Firebase 분석
이 MCP 서버는 클라우드 기반 분석 저장을 위해 Firebase 실시간 데이터베이스를 사용하며, 로컬 파일 백업을 대체 수단으로 사용합니다.
주요 기능
이중 저장소: Firebase (기본) + 로컬 파일 (백업)
지속성: 컨테이너 재빌드 및 배포 후에도 데이터 유지
실시간: 60초마다 업데이트
대시보드:
/analytics/dashboard에서 시각적 분석 제공
추적 데이터
총 요청 및 도구 호출 수
메서드별 요청 (GET, POST 등)
엔드포인트별 요청
도구 사용 통계
클라이언트 IP 및 사용자 에이전트
시간별 요청 추세
최근 도구 호출 활동
Firebase 설정
Firebase 콘솔에서 Firebase 프로젝트 생성
실시간 데이터베이스 활성화
서비스 계정 자격 증명 생성 (프로젝트 설정 → 서비스 계정)
VPS에 자격 증명 복사:
# On VPS
mkdir -p /opt/mcp-servers/ghostcms/.credentials
# Copy firebase-service-account.json to this directory
# Create Docker volume
docker volume create ghostcms_firebase-credentials
# Copy to volume with correct permissions
docker run --rm \
-v ghostcms_firebase-credentials:/credentials \
-v /opt/mcp-servers/ghostcms/.credentials:/source:ro \
alpine sh -c "cp /source/firebase-service-account.json /credentials/ && chown -R 1001:1001 /credentials/"
# Restart container
docker compose down
docker compose up -dFirebase 데이터 구조
mcp-analytics/
└── mcp-ghostcms/
├── serverStartTime
├── totalRequests
├── totalToolCalls
├── requestsByMethod
├── requestsByEndpoint
├── toolCalls
├── recentToolCalls
├── clientsByIp
├── clientsByUserAgent
├── hourlyRequests
└── lastUpdated자세한 Firebase 설정 지침은 FIREBASE_SETUP.md를 참조하세요.
기여
저장소 포크
기능 브랜치 생성
변경 사항 커밋
풀 리퀘스트 생성
라이선스
Latest Blog Posts
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/hithereiamaliff/mcp-ghostcms'
If you have feedback or need assistance with the MCP directory API, please join our Discord server