Total CMS MCP server
2026년 10월 24일 커밋API 키를 통해 Claude를 Total CMS 사이트에 연결하여 콘텐츠 검색, 문서 읽기 및 사이트 데이터를 관리합니다.
다른 이름 totalcms/mcpb, mcpb
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.2.3
- 마지막 커밋
- 2026년 10월 24일
- 라이선스
- MIT
Total CMS MCP란?
Total CMS은(는) MCP server입니다. API 키를 통해 Claude를 Total CMS 사이트에 연결하여 콘텐츠 검색, 문서 읽기 및 사이트 데이터를 관리합니다.
프로젝트 README에서 생성된 요약
Total CMS MCP server 정보
Total CMS는 Claude Desktop과 같은 AI 클라이언트를 Total CMS 웹사이트에 연결하는 로컬 브리지 역할을 합니다. 이 서버는 사용자의 머신에서 실행되는 작은 Node 프로세스로 작동하며, HTTPS를 통해 특정 사이트 엔드포인트로 MCP 트래픽을 프록시합니다. 이러한 설정을 통해 AI는 인증된 요청을 위한 커스텀 X-API-Key 헤더를 첨부하여 사이트 콘텐츠 및 문서와 상호작용할 수 있으며, 이는 표준 원격 커넥터로는 불가능한 기능입니다.
사용자는 별도의 설정이 필요 없는 제로 컨피그 모드로 공식 Total CMS 문서를 조회하거나, 특정 MCP 엔드포인트 URL을 제공하여 본인의 사이트에 연결할 수 있습니다. Total CMS 관리자 설정에서 선택 사항인 API 키를 추가하면, AI는 해당 키에 정의된 권한에 따라 작업을 수행합니다. 권한 범위는 읽기 전용 액세스부터 스키마, 템플릿, 사이트 캐시 관리를 포함한 전체 관리 기능까지 다양합니다. 이 서버는 Node 18 이상을 실행하는 Cursor, VS Code, Windsurf 등 local stdio 서버를 지원하는 모든 클라이언트와 호환됩니다.
활용 사례
- 1사이트 컬렉션 탐색특정 Total CMS 사이트에 호스팅된 공개 콘텐츠와 컬렉션을 검색하고 탐색합니다.
- 2사이트 관리 작업 수행전체 관리자 API 키를 사용하여 AI가 템플릿, 사이트 정보 관리 및 캐시 삭제를 수행하도록 합니다.
- 3API 권한을 통한 사이트 데이터 관리특정 API 키 경로와 HTTP 메서드를 구성하여 AI의 데이터 읽기 및 쓰기 권한을 제어합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
API_KEYMCP_URL
| 이름 | 설명 | 유형 |
|---|---|---|
| API_KEY | — | |
| MCP_URL | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능totalcms/mcpb is public and reachablegithub.com/totalcms/mcpb ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-24github.com/totalcms/mcpb ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Total CMS Desktop Extension (MCPB)
A Claude Desktop extension that connects Claude to any Total CMS site's built-in MCP server. Install once, and Claude can search docs, browse content, and (with an API key) manage your Total CMS site directly.
This is a local bridge, not a hosted connector: it runs as a small Node
process on your machine and proxies MCP traffic to your site's /mcp
endpoint over HTTPS. That's what lets it attach a custom X-API-Key header
for authenticated access - something Claude Desktop's built-in remote
connectors can't do for servers that advertise optional auth.
Privacy Policy
This extension does not collect, transmit, or store any data of its own. It
opens an HTTPS connection directly from your machine to the Total CMS MCP
endpoint you configure (default: https://totalcms.co/mcp, the official
Total CMS docs site) and relays MCP protocol messages between Claude Desktop
and that endpoint. Your optional API key is stored in your OS's secure
credential store (via Claude Desktop's sensitive: true config handling) and
is sent only as an X-API-Key request header to the site you configured -
never logged, never sent anywhere else.
For the privacy policy of the Total CMS product and totalcms.co itself, see https://totalcms.co/privacy.
Setup
Zero-config: ask about Total CMS itself
Just install the extension. It defaults to https://totalcms.co/mcp, the
official Total CMS documentation server, so Claude can immediately answer
questions like "how do I set up webhooks in Total CMS?" or "what schema
fields does Total CMS support?" with no configuration.
Connect to your own site
- In your Total CMS admin, go to Settings -> MCP and copy your site's
MCP endpoint URL (it will look like
https://yoursite.com/mcp, or include a subpath if you installed Total CMS in one). - In Claude Desktop's extension settings for Total CMS, paste that URL into Total CMS MCP endpoint.
- Reinstall/reconnect. Claude can now browse and search your site's public collections.
Authenticated access
- Create a Total CMS API key for your site in Settings → API Keys. What
the key's Scopes allow is exactly what Claude can do:
- Full admin access: All endpoints (
*) with every HTTP method. - Limited access: add
/mcpto the key's paths, plus the collections it should reach, such as/api/collections/blog./mcpon its own opens the endpoint but reaches no content. The key's HTTP methods decide its tools: a GET-only key connects read-only. A limited key reaches a collection only when that collection's MCP access is API keys or wider. See Keys over MCP.
- Full admin access: All endpoints (
- Paste it into the API key (optional) field in the extension settings. It's stored in your OS keychain, not in plain text.
- Claude now reaches what the key allows, in addition to public content. With a full admin key that includes schema management, templates, site info and cache clearing. Leave the field empty to keep Claude limited to public, anonymous access.
Other MCP clients
The bridge is a plain stdio MCP server, so any client that launches local
servers (Cursor, VS Code, Windsurf, and others) can run it with Node 18 or
later. A client that supports remote servers with custom headers can skip
the bridge and connect to your site's /mcp endpoint directly.
-
Download
totalcms.mcpbfrom the latest release. It is a zip archive: unzip it anywhere.server/index.jsinside is self-contained and needs nonpm install. -
Add it to your client's MCP configuration:
{ "mcpServers": { "totalcms": { "command": "node", "args": ["/path/to/totalcms/server/index.js"], "env": { "MCP_URL": "https://yoursite.com/mcp", "API_KEY": "" } } } }Leave
MCP_URLempty to use the Total CMS docs server, and leaveAPI_KEYempty for public, anonymous access.
To build from source instead, npm install && npm run build writes
server/index.js.
How it works
server/index.js is a small stdio MCP server that Claude Desktop spawns
directly (no Node install required - MCPB bundles include their own
runtime handling). It opens a
streamable HTTP
connection to the MCP_URL you configured and forwards every JSON-RPC
message in both directions verbatim: initialize, tools/list,
tools/call, resources/*, prompts/*, and all notifications. When
API_KEY is set, every outbound HTTP request carries an X-API-Key header.
It refuses to start unless MCP_URL is https:// - plaintext credentials on
the wire are not acceptable, even for local testing.
Why not mcp-remote?
We spiked it first (see BUILD-REPORT.md for the full writeup). Short
version: mcp-remote unconditionally runs OAuth discovery on startup and,
on any HTTP 401 response, launches a browser-based OAuth authorization flow
with no flag to disable it. Total CMS uses a plain API-key header, not OAuth
- a bad key needs to surface as a clean 401 error to the MCP client, not
hang behind a browser popup trying to OAuth against a server that doesn't
implement it. So this bundle ships a small hand-rolled proxy built directly
on
@modelcontextprotocol/sdk'sStreamableHTTPClientTransportandStdioServerTransportinstead.
Development
npm install
npm run build # typecheck -> esbuild bundle -> mcpb validate -> mcpb pack
Produces dist/totalcms.mcpb. Install by dragging that file onto Claude
Desktop.
npm run typecheck and npm run validate are available standalone.
Releasing
npm run bump 0.3.0 # rewrites the version in all four files
# add a "## [0.3.0] - YYYY-MM-DD" section to CHANGELOG.md
git commit -am "Release v0.3.0"
git tag v0.3.0 && git push origin master v0.3.0
Pushing the tag is the whole release. The Release workflow builds the
bundle, attaches it to a GitHub release, and publishes the new version to the
MCP Registry as
io.github.totalcms/total-cms.
The GitHub release notes are the matching CHANGELOG.md section, so that
file is where a release gets described — write it before tagging. A missing
section warns and falls back to generated notes rather than failing the build;
a release should never be blocked because its prose was not written.
Two more things worth knowing:
- The registry is a separate system from GitHub Releases. People who installed from the MCP directory get updates from the registry, not from the release page — publishing one without the other leaves them stranded on the old version. That is why the workflow does both, and why it is worth never publishing a release by hand.
fileSha256inserver.jsonis stamped by CI, because a zip embeds timestamps and a CI build never hashes identically to a local one. The value committed to git is only a record of the last local build; ignore it.
Authentication to the registry is GitHub OIDC, so there is no secret to
rotate. To re-publish a tag that already exists — or one released before this
workflow existed — run the Release workflow manually from the Actions tab
and give it the tag.
Security notes
- Zero filesystem access, zero subprocess spawns, outbound HTTPS to exactly
one host (whatever
MCP_URLpoints at). - The API key is read from the
API_KEYenvironment variable (set by Claude Desktop from your keychain-stored config) and is never written to stdout, stderr, or any log. MCP_URLmust behttps://or the process refuses to start.
License
Source code is MIT licensed. The Total CMS name, flame logo, and
the bundled icon.png are trademarks and are not covered by that grant — you
may fork the code, but a redistributed version must not present itself as
published or endorsed by Total CMS. See TRADEMARKS.md.
Total CMS MCP 질문
본인의 Total CMS 사이트를 어떻게 연결하나요?
Total CMS 관리자 페이지로 이동하여 Settings -> MCP로 들어간 뒤, 사이트의 MCP 엔드포인트 URL을 복사하여 Claude Desktop 확장 프로그램 설정에 붙여넣으세요.
Claude가 사이트 콘텐츠를 관리할 수 있나요?
네, 적절한 권한(scope)이 있는 API 키를 제공하면 Claude가 스키마 관리, 템플릿 편집, 캐시 삭제와 같은 관리 작업을 수행할 수 있습니다.
API 키는 안전하게 저장되나요?
네, API 키는 운영 체제의 보안 자격 증명 저장소에 저장되며, 로그에 남거나 다른 곳으로 전송되지 않습니다.
Claude Desktop 외에 다른 MCP 클라이언트에서도 작동하나요?
네, Node 18 이상을 사용하며 local stdio 서버를 지원하는 Cursor, VS Code, Windsurf와 같은 모든 클라이언트에서 사용할 수 있습니다.