Skip to main content

block-style-cms-mcp

Python MCP server for Block Style CMS. Thin stdio wrapper around block-style-cms-sdk.

Credentials (where they live)

CMS base URL and API token are not tool arguments. Put them in the MCP host config env block (e.g. Cursor mcp.json / Settings → MCP):

Parameter Env var Required
CMS base URL BSC_BASE_URL yes
API token BSC_API_KEY yes
Auth style api-key or bearer BSC_AUTH_STYLE no (default api-key)

Do not commit real tokens. Do not pass them as tool inputs (they would land in chat logs).

Cursor example

{
  "mcpServers": {
    "block-style-cms": {
      "command": "uvx",
      "args": ["block-style-cms-mcp"],
      "env": {
        "BSC_BASE_URL": "https://cms.example.com",
        "BSC_API_KEY": "your-api-token"
      }
    }
  }
}

Local checkout (before PyPI):

{
  "mcpServers": {
    "block-style-cms": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/packages/mcp-python",
        "block-style-cms-mcp"
      ],
      "env": {
        "BSC_BASE_URL": "https://cms.example.com",
        "BSC_API_KEY": "your-api-token"
      }
    }
  }
}

Tools

Tool Purpose
list_locales Supported article languages
list_channels Site channels
upload_image Upload local image
delete_image Delete library image by filename
publish_from_markdown Create article from markdown
update_from_markdown Update article from markdown (id required)
get_article Get by slug + id (optional include_md_content)
get_article_by_slug Get by slug + locale (optional include_md_content)
list_articles List metadata with filters (published query: published | draft | all, not true/false)
update_article_metadata Metadata-only update
set_article_published Publish / unpublish
delete_article Delete by slug + id
delete_article_by_slug Delete by slug + locale

Article closed-loop design: see repo docs/.

Path arguments (md_file, assets_dir, file_path, cover_file) must be readable by the MCP process (typically paths under the host workspace).

list_articles.published accepts only published | draft | all (CMS query enum). Boolean strings fail. Create/update and set_article_published still use a real boolean for the article’s published flag.

Develop

cd packages/mcp-python
uv sync --extra dev
uv run ruff check .
uv run pytest

Release

  1. Ensure the required block-style-cms-sdk version is already on PyPI.
  2. Bump version in pyproject.toml (and keep the SDK dependency pin in sync).
  3. Tag mcp-py-vX.Y.Z, push, and Publish a GitHub Release for that tag.
  4. GitHub Actions uploads to PyPI via Trusted Publishing (OIDC; GitHub Environment pypi-mcp, separate from the SDK’s pypi environment).

Example: version 0.0.3 → tag mcp-py-v0.0.3 → GitHub Release → PyPI.

Setup checklist:

  1. GitHub → Settings → Environments → create pypi-mcp.
  2. Deployment branches and tags: allow tag pattern mcp-py-v* (optionally branch master for manual dry-runs).
  3. On PyPI, register a Trusted Publisher for project block-style-cms-mcp pointing at workflow mcp-python-release.yml (and environment name pypi-mcp if the form asks for it).

Metadata

Release files for block-style-cms-mcp 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for block-style-cms-mcp 0.0.3
File Size Uploaded Provenance Actions
block_style_cms_mcp-0.0.3.tar.gz 82.2 kB With provenance Details for block_style_cms_mcp-0.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for block-style-cms-mcp 0.0.3
File Interpreter ABI Platform Actions
block_style_cms_mcp-0.0.3-py3-none-any.whl Python 3 none any Details for block_style_cms_mcp-0.0.3-py3-none-any.whl

Total release size: 89.6 kB

Release files / block_style_cms_mcp-0.0.3.tar.gz

Download URL block_style_cms_mcp-0.0.3.tar.gz
Size 82.2 kB
Tags Source
SHA-256 checksum
How to use checksums
27769f0f7189743fdb0165a8ccc4ef5ab8aa7ceef18a7522a6a090e7a4530ddf
BLAKE2b-256 checksum
How to use checksums
8c988264aad2475e1ed2ecb3e35c3a9a5d023aab0fdda4c297bc355d8da2e9e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / block_style_cms_mcp-0.0.3-py3-none-any.whl

Download URL block_style_cms_mcp-0.0.3-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7b06dff12423768a966322bdf9c98c2cc41926ff9f5ddbc9aef83f47ad3f687
BLAKE2b-256 checksum
How to use checksums
1629c35757740a3a0b550c414fd2235d85cb64591532171ff27a234d131e152a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Security for block-style-cms-mcp 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for block_style_cms_mcp-0.0.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page