Skip to content
Agentmart
Submit a tool

CMSKite

Let an AI assistant manage CMSKite blog content: projects, posts, API keys and site integration.

Connector by devicorn · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/devicorn-cmskite-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Let an AI assistant manage CMSKite blog content: projects, posts, API keys and site integration.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
13 read · 10 write · 3 delete · 2 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 28

Read from the source code; the running server may list different tools.

Read 13 · Look things up without changing anything.

  • check_integration
  • get_content_analytics
  • get_integration_guide
  • get_post
  • get_post_analytics
  • get_project
  • get_project_summary
  • list_api_keys
  • list_authors
  • list_categories
  • list_projects
  • search_posts
Show 1 more tools
  • whoami

Write 10 · Create, change, send or run things.

  • create_api_key
  • create_author
  • create_category
  • create_post
  • create_project
  • create_tag
  • create_workspace
  • update_category
  • update_post
  • update_project

Delete 3 · Delete, drop, revoke or wipe things.

  • delete_category
  • delete_post
  • delete_post_translation

Not yet classified 2 · We could not tell from the name and description.

  • list_posts
  • list_tags

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • CMSKITE_AGENT_TOKEN

Other settings (environment variables or headers).

  • CMSKITE_API_URL

Tools (28)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • check_integrationIs this project actually working?

    Checks whether a project is really connected to a website: does it have a key, has a site ever used it, and are views arriving from the pages that render the content. Each check comes back with the one action that fixes it. ALWAYS call this after wiring up an integration, and always when somebody says views or analytics are zero — a site can fetch content perfectly and report nothing, and this is the only thing that tells the difference. Requires the project.read grant.

  • create_api_keyCreate a read-only API key

    Mints the credential a website reads this project with. IMPORTANT: the response carries the whole key exactly once. Show it to the person and tell them to put it in their environment — it cannot be retrieved afterwards. The key is read-only and returns published content only, so it is safe in a server environment; it is NOT safe in browser code unless the project has an allowed-origins list configured. Prefer this over handing a site the agent token, which can write and delete. Requires the apikey.write grant.

  • create_authorCreate an author

    A byline. This does NOT create an account or invite anybody — an author is content, and giving somebody access to the workspace is a separate thing a person does in the dashboard.

  • create_categoryCreate a category

    A section of the blog, or a subsection of one when you pass parentId. Three levels deep at most. Requires the content.write grant.

  • create_postCreate a post

    Writes a new post. It is a draft unless you say otherwise, which is usually what you want: publishing is a decision the person should make. Requires the content.write grant, and content.publish as well if you send status "published".

  • create_projectCreate a project

    A new site inside this workspace. Requires the project.write grant. The description and website fields are what make a list of projects readable later.

  • create_tagCreate a tag

    Usually unnecessary: create_post and update_post create tags they do not find. Use this when a tag needs a description, or to set one up before writing.

  • create_workspaceCreate a workspace

    Creates a workspace with a first project, owned by this token's account. IMPORTANT: the response carries `agentToken`, a NEW token for the new workspace — this token cannot act in it. Show that value to the person and tell them to save it; it is returned once and cannot be retrieved again. Requires the workspace.create grant.

  • delete_categoryDelete a category

    Posts filed under it are NOT deleted; they simply stop having a category. Its subcategories keep their path. Confirm with the person first.

  • delete_postDelete a post

    Soft-deletes a post: it stops being served and its slug becomes free again. Confirm with the person first. Requires the content.delete grant.

  • delete_post_translationDelete a post translation

    Removes one language version of a post; the original and the other languages stay. locale: a language the project has turned on, e.g. `hi`; required here. Confirm with the person first. Requires the content.delete grant.

  • get_content_analyticsViews, uniques and clicks

    What readers did with a project’s posts over a date range: totals, a daily series, and the posts that were actually read. Read from rollups, so the answer is the same size whatever the traffic was. If everything is zero, call check_integration — that is a tracking problem far more often than it is a traffic problem. Requires the analytics.read grant.

  • get_integration_guideHow to integrate CMSKite into this project

    The official way to connect a project to CMSKite. For JavaScript and TypeScript that is the cmskite package; for PHP, WordPress, Laravel, Python or a plain HTML site it is the raw HTTP calls, which need no dependency at all. Returns what to install if anything, the files to write, and which key belongs on the server versus in the browser. Call this BEFORE writing any integration code by hand: hand-rolled fetch wrappers miss view tracking entirely, so the customer gets a working site with no analytics and no indication that anything is missing. Finish by calling check_integration, which is the …

  • get_postGet a post

    One post with its full body, by id or by slug. It carries seoScore (0-100) and seoAudit.checks: fix "fail" and "warn" checks to raise the score. Free plans show the three most important issues and hiddenIssues.

  • get_post_analyticsOne post, day by day

    Views, unique readers and clicks for one post, per day. The way to check that a specific post's view landed after wiring up tracking: open the post in a real browser (headless browsers are not counted), wait about a minute for the rollup, then call this. A reader counts once per post per day. Requires the analytics.read grant.

Show 13 more tools
  • get_projectGet a project

    One project: what it is, which site it serves, and its settings.

  • get_project_summaryProject summary

    Content counts, key count, database mode and recent traffic for one project, in one call. Use this rather than listing everything to answer "what is in here".

  • list_api_keysList a project’s API keys

    The read-only keys a website uses to read this project. Names, creation dates and the last four characters only — a whole key is shown once, when it is created, and never again. Requires the apikey.read grant.

  • list_authorsList authors

    The bylines available in this project, with the ids create_post takes.

  • list_categoriesList categories

    The category tree, ordered so a parent always precedes its children; `depth` is how far to indent. Pass include="counts" to get how many posts sit in each.

  • list_postsList posts

    Posts in a project, newest published first. Paginate with `cursor` from the previous response — there is no page number, by design. Filter before paginating. Each item carries seoScore (0-100, or null when unscored).

  • list_projectsList projects

    Every project in this token's workspace, with the `prj_...` ids the content tools take.

  • list_tagsList tags

    Tags in a project, with how many posts use each.

  • search_postsSearch posts

    Full-text search across titles and bodies, ranked. Use this to find something; use list_posts to enumerate. May require a paid capability on the workspace.

  • update_categoryUpdate or move a category

    Renames a category, or moves it under a different parent — which moves everything beneath it too. A category cannot be moved inside one of its own subcategories.

  • update_postUpdate a post

    Changes only the fields you send; anything omitted is left alone. This is how a post is published: send status "published", which needs the content.publish grant on top of content.write. Pass expectedRevision (the `revision` from get_post) so that an edit made against an old copy is refused with REVISION_CONFLICT instead of overwriting a newer save; on that error, read the post again and reapply the change. A `locale` other than the post's original language edits that language version (created if new, then title and body are required); shared fields (category, tags, author, cover) cannot be co…

  • update_projectUpdate a project

    Change a project's name, description, website, or allowed origins. Only the fields passed change. `allowedOrigins` REPLACES the list: pass every origin, like ["https://example.com", "https://www.example.com"] — scheme and host, no path. It decides which websites may use the project key from a browser. Requires the project.write grant.

  • whoamiWho this token is

    The account this token acts as and the workspaces it can see. Call this first in a new conversation: it confirms the token works and names the workspace everything else happens in. `agentGrants` is what THIS TOKEN may do; `permissions` is what its owner may do. A tool works only when both allow it, so read `agentGrants` to know which tools will succeed. `mcp` says which version of this server is running and whether it is out of date; if `mcp.outdated` is true, tell the person before reporting any bug, because it may already be fixed.

Signals

Stars
0
Forks
0
Open issues
0
Last commit
Oct 6, 2026 (23 days ago)
Last release
Sep 26, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.devicorn/cmskite-mcp
Version
0.1.6
Auth
API key
Packages
npm cmskite-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

CMSKite MCP server. Agent Mart. https://agentmart.dev/connectors/devicorn-cmskite-mcp (last updated 2026-10-25)