Cosmic について
Cosmic は、Cosmic CMS のコンテンツ、メディア、オブジェクトタイプを管理し、AI でコンテンツを生成する MCP サーバーです。ホスト型 HTTP エンドポイントとローカルの stdio に対応し、書き込み権限はバケットキーで制御します。
主な機能
- 01コンテンツオブジェクトの作成・取得・更新・削除
- 02メディアファイルのアップロードと管理
- 03オブジェクトタイプとフィールドの作成・変更
- 04テキスト・画像・動画の生成
- 05再利用可能なリッチテキストブロックの一覧
活用シーン
- 01MCP クライアントからブログを管理
- 02メディアをアップロードしてライブラリを整理
- 03バケットのコンテンツスキーマを調整
- 04AI 生成テキストやメディアを保存
MCP 対応
ホスト型の Streamable HTTP MCP サーバーを提供し、ローカルでは stdio でも実行できます。コンテンツオブジェクト、メディア、オブジェクトタイプ、AI 生成、コンテンツブロックをツールとして公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}claude mcp add --transport http com-cosmicjs https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}{"mcpServers":{"com-cosmicjs":{"type":"http","url":"https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}"}}}Cursor で開く{"servers":{"com-cosmicjs":{"type":"http","url":"https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}"}}}VS Code で開く{"mcpServers":{"com-cosmicjs":{"type":"http","url":"https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}"}}}{"mcpServers":{"com-cosmicjs":{"serverUrl":"https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.cosmicjs.com/v1/buckets/{bucket_slug}認証が必要ツール
詳細
Cosmic MCP Server
Cosmic は、ホスト型 MCP サーバー、製品内 AI ワークフロー、エージェント登録機能を備えたヘッドレス CMS です。エージェントはコンテンツの読み取りと書き込み、テキスト・画像・動画・音声の生成とメディアライブラリへの保存、コンテンツ・コード・ブラウザーのステップの連携、または既存のアカウントなしでの新しいプロジェクトのプロビジョニングを行えます。
機能一覧:https://www.cosmicjs.com/ai-cms
MCP 登録(認証情報不要):https://mcp.cosmicjs.com/v1/agent
機能
- コンテンツ管理:Cosmic バケット内のオブジェクトの作成、読み取り、更新、削除
- メディア管理:メディアファイルのアップロード、一覧表示、管理
- スキーマ管理:カスタムメタフィールドを使用したオブジェクトタイプの作成と変更
- AI 生成:Cosmic の AI 機能を使用したテキスト、画像、動画の生成
ホスト型エンドポイント(推奨)
Cosmic はホスト型のストリーミング可能な HTTP MCP サーバーを提供しています。インストールは不要です。
URL:https://mcp.cosmicjs.com/v1/buckets/{bucket-slug}
Cosmic では、バケットごとに読み取りキーと書き込みキーを別々に使用します。次のいずれかの方法で認証してください。
Authorization: Bearer <read_key> # read-only tools
Authorization: Bearer <read_key>:<write_key> # full access
クライアントでベアラートークンをコロン区切りにできない場合は、書き込みキーを X-Cosmic-Write-Key ヘッダーで別途送信することもできます。キーは Cosmic ダッシュボードのバケットの API Access 設定で発行できます。
読み取り専用アクセス(一覧表示/取得ツール)には読み取りキーを、オブジェクトの作成、メディアのアップロード、AI 生成など、すべての機能を利用するには書き込みキーを使用してください。
Claude Desktop(リモート MCP)
Claude Desktop で、Settings -> Connectors -> Add custom connector を選択し、次の情報を入力します。
- URL:
https://mcp.cosmicjs.com/v1/buckets/your-bucket-slug - ベアラートークン:読み取り専用アクセスの場合は
<read_key>、すべての機能を利用する場合は<read_key>:<write_key>
Cursor(リモート MCP)
.cursor/mcp.json に追加します。
{
"mcpServers": {
"cosmic": {
"url": "https://mcp.cosmicjs.com/v1/buckets/your-bucket-slug",
"headers": {
"Authorization": "Bearer your-bucket-read-key:your-bucket-write-key"
}
}
}
}
ローカルインストール(stdio)
リモート MCP に対応していない環境では、同じサーバーを stdio でローカル実行できます。
npx を使用(推奨)
npx @cosmicjs/mcp
グローバルインストール
npm install -g @cosmicjs/mcp
cosmic-mcp
ソースからインストール
git clone https://github.com/cosmicjs/mcp.git
cd mcp
bun install
bun run build
設定
サーバーには次の環境変数が必要です。
| 変数 | 必須 | 説明 |
|---|---|---|
COSMIC_BUCKET_SLUG | はい | Cosmic バケットのスラッグ |
COSMIC_READ_KEY | はい | 読み取り操作用のバケット読み取りキー |
COSMIC_WRITE_KEY | いいえ | 書き込み操作用のバケット書き込みキー |
認証情報の取得
- Cosmic ダッシュボードにログインします
- バケットに移動します
- Settings → API Access を開きます
- バケットのスラッグ、読み取りキー、書き込みキーをコピーします
Claude Desktop でのローカル stdio
ホスト型エンドポイントではなく、MCP サーバーをローカルで実行する場合は、以下を Claude Desktop の設定ファイルに追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cosmic": {
"command": "npx",
"args": ["@cosmicjs/mcp"],
"env": {
"COSMIC_BUCKET_SLUG": "your-bucket-slug",
"COSMIC_READ_KEY": "your-read-key",
"COSMIC_WRITE_KEY": "your-write-key"
}
}
}
}
Cursor でのローカル stdio
{
"mcpServers": {
"cosmic": {
"command": "npx",
"args": ["@cosmicjs/mcp"],
"env": {
"COSMIC_BUCKET_SLUG": "your-bucket-slug",
"COSMIC_READ_KEY": "your-read-key",
"COSMIC_WRITE_KEY": "your-write-key"
}
}
}
}
利用可能なツール
オブジェクト
| ツール | 説明 |
|---|---|
cosmic_objects_list | オプションのタイプフィルター、ステータス、ページネーションを指定してオブジェクトを一覧表示 |
cosmic_objects_get | ID またはスラッグで単一のオブジェクトを取得 |
cosmic_objects_create | 新しいオブジェクトを作成(書き込みキーが必要) |
cosmic_objects_update | 既存のオブジェクトを更新(書き込みキーが必要) |
cosmic_objects_delete | オブジェクトを削除(書き込みキーが必要) |
メディア
| ツール | 説明 |
|---|---|
cosmic_media_list | オプションのフォルダーフィルターを指定してメディアファイルを一覧表示 |
cosmic_media_get | ID でメディアの詳細を取得 |
cosmic_media_upload | URL または base64 からメディアをアップロード(書き込みキーが必要) |
cosmic_media_delete | メディアファイルを削除(書き込みキーが必要) |
オブジェクトタイプ
| ツール | 説明 |
|---|---|
cosmic_types_list | バケット内のすべてのオブジェクトタイプを一覧表示します |
cosmic_types_get | スラッグでオブジェクトタイプのスキーマを取得します |
cosmic_types_create | 新しいオブジェクトタイプを作成します(書き込みキーが必要です) |
cosmic_types_update | オブジェクトタイプのスキーマを更新します(書き込みキーが必要です) |
cosmic_types_delete | オブジェクトタイプを削除します(書き込みキーが必要です) |
AI 生成
| ツール | 説明 |
|---|---|
cosmic_ai_generate_text | AI を使ってテキストコンテンツを生成します |
cosmic_ai_generate_image | AI 画像または SVG を生成してアップロードします(書き込みキーが必要です) |
cosmic_ai_generate_video | AI 動画を生成してアップロードします(書き込みキーが必要です) |
コンテンツブロック
| ツール | 説明 |
|---|---|
cosmic_blocks_list | バケット内で再利用可能なリッチテキストのコンテンツブロック(リッチテキストフィールドで使用できる {{name /}} トークン)を一覧表示します |
プロンプトの例
Claude または Cursor で使えるプロンプトの例を紹介します。
コンテンツ管理
List all blog posts in my Cosmic bucket
Create a new blog post titled "Getting Started with MCP" with the content "This is an introduction to the Model Context Protocol..."
Update the blog post with ID "abc123" to change its status to published
メディア
Show me all images in the "blog-images" folder
Upload this image URL to my media library: https://example.com/image.jpg
スキーマ管理
Show me all object types in my bucket
Create a new object type called "Products" with fields for name, price, description, and image
AI 生成
Generate a product description for a wireless bluetooth headphone
Generate an image of a futuristic city skyline at sunset and upload it to my media library
開発
ビルド
bun run build
次の 2 つのバイナリが生成されます。
dist/stdio.js- npm 公開用の stdio エントリ(bin: cosmic-mcp)dist/http.js- ホスト型のストリーミング可能な HTTP エントリ(ECS Fargate にデプロイ)
ウォッチモード(stdio)
bun run dev
ローカルで実行(stdio)
COSMIC_BUCKET_SLUG=your-bucket \
COSMIC_READ_KEY=your-read-key \
COSMIC_WRITE_KEY=your-write-key \
bun run start
ローカルで実行(HTTP)
bun run dev:http
# Server listens on http://localhost:3000
# POST http://localhost:3000/v1/buckets/{slug} with Authorization: Bearer <key>
デプロイ
main へのプッシュは、GitHub Actions を通じて https://mcp.cosmicjs.com にデプロイされます。ワークフロー: .github/workflows/deploy.yml。
npm へのリリース
リリースでは、@cosmicjs/sdk と同じ Changesets のフローを使用します。リリース対象となる変更ごとに、バージョンの更新内容(patch | minor | major)を記述した changeset(bunx changeset)を追加してください。package.json の version フィールドを手動で編集しないでください。
- 機能 PR を
mainにマージします。Package Checks がパスする必要があります。 - CI が Version Packages PR を作成または更新します。この PR は changeset を適用してバージョンを更新し、
CHANGELOG.mdを更新するとともに、server.jsonとSERVER_VERSIONの同期を保つためにscripts/sync-version.mjsを実行します。 - Version Packages PR をマージすると、
publish.ymlを通じて npm に公開されます(リポジトリシークレットNPM_TOKENが必要です)。
v*.*.* タグを手動でプッシュしないでください。ホスト型 MCP は、deploy.yml を通じて main / staging から別途デプロイされます。
MCP レジストリへの公開
このサーバーは、server.json に記述されている com.cosmicjs 名前空間の registry.modelcontextprotocol.io に登録されています。
公開順序が重要です。レジストリは、登録内容が実際に npm に公開されているものと一致するかを検証するため、先に npm にリリースし、その後に登録内容を公開してください。レジストリが npm パッケージの所有者であることを証明するため、package.json の mcpName は常に server.json の name と一致させる必要があります。
ドメイン所有権を証明するための初回セットアップです。macOS に付属する LibreSSL では Ed25519 キーを生成できないため、ECDSA P-384 を使用します(Ed25519 を使用する場合は brew install openssl@3 を実行してください)。
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp384r1 -out key.pem
PUBLIC_KEY="$(openssl ec -in key.pem -text -noout -conv_form compressed | grep -A4 "pub:" | tail -n +2 | tr -d ' :\n' | xxd -r -p | base64)"
echo "cosmicjs.com. IN TXT \"v=MCPv1; k=ecdsap384; p=${PUBLIC_KEY}\""
この TXT レコードを cosmicjs.com の apex に追加してください。_mcp-auth.cosmicjs.com のようなセレクターは検出されず、一般的な署名エラーになります。apex の TXT レコードセットには SPF レコードと Google の認証レコードも含まれているため、置き換えるのではなく追加してください。key.pem をリポジトリに含めないでください。~/.cosmic-mcp/key.pem に保存します。
その後、npm リリースのたびに登録内容を公開します(最初に brew install mcp-publisher を実行してください)。
PRIVATE_KEY="$(openssl ec -in ~/.cosmic-mcp/key.pem -noout -text | grep -A4 "priv:" | tail -n +2 | tr -d ' :\n')"
mcp-publisher login dns --algorithm ecdsap384 --domain cosmicjs.com --private-key "${PRIVATE_KEY}"
mcp-publisher publish
--algorithm ecdsap384 は必須です。パブリッシャーはデフォルトで ed25519 を使用し、P-384 キーを invalid seed length: expected 32 bytes, got 48 というエラーで拒否します。このエラーは、アルゴリズムの誤りではなくキーの破損を示しているように見えます。
API リファレンス
Cosmic API の詳細については、以下をご覧ください。
ライセンス
MIT
コントリビューション
コントリビューションを歓迎します!Issue を作成するか、プルリクエストを送信してください。
サポート
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。