npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pulsemcp-cms-admin-mcp-server

v0.9.13

Published

Local implementation of PulseMCP CMS Admin MCP server

Readme

PulseMCP CMS Admin MCP Server

Note: This package is part of the MCP Servers monorepo. For the latest updates and full source code, visit the PulseMCP CMS Admin MCP Server directory.

Haven't heard about MCP yet? The easiest way to keep up-to-date is to read our weekly newsletter at PulseMCP.


This is an MCP (Model Context Protocol) Server for managing PulseMCP's content management system. It provides tools for newsletter management and content operations through direct integration with the PulseMCP Admin API.

Note: This is an internal tool for the PulseMCP team. The source code is public for reference purposes, but the server requires API keys that are not publicly available.

Table of Contents

Highlights

Newsletter Management: Create, update, and retrieve newsletter posts with full content control.

Image Uploads: Upload images to cloud storage and attach them to newsletter posts.

Content Search: Find newsletter posts with powerful search and pagination capabilities.

MCP Implementation Search: Search for MCP servers and clients in the PulseMCP registry.

Tool Groups: Enable/disable tool groups via TOOL_GROUPS environment variable. Each group has a base variant (full access) and a _readonly variant (read-only access).

Draft Control: Manage draft posts before publishing to the newsletter.

Capabilities

This server is built and tested on macOS with Claude Desktop. It should work with other MCP clients as well.

| Tool Name | Tool Group | Read/Write | Description | | -------------------------------------- | ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------- | | get_newsletter_posts | newsletter | read | List newsletter posts with search, sorting, and pagination options. | | get_newsletter_post | newsletter | read | Retrieve a specific newsletter post by its unique slug. | | draft_newsletter_post | newsletter | write | Create a new draft newsletter post with title, body, and metadata. | | update_newsletter_post | newsletter | write | Update an existing newsletter post's content and metadata (except status). | | upload_image | newsletter | write | Upload an image and attach it to a specific newsletter post. | | get_authors | newsletter | read | Get a list of authors with optional search and pagination. | | search_mcp_implementations | server_directory | read | Search for MCP servers and clients in the PulseMCP registry. | | get_draft_mcp_implementations | server_directory | read | Retrieve paginated list of draft MCP implementations needing review. | | find_providers | server_directory | read | Search for providers by ID, name, URL, or slug. | | save_mcp_implementation | server_directory | write | Update an MCP implementation (replicates Admin panel "Save Changes" button). | | send_impl_posted_notif | server_directory | write | Send email notification when MCP implementation goes live. | | get_official_mirror_queue_items | official_queue | read | List and filter official mirror queue entries with pagination and search. | | get_official_mirror_queue_item | official_queue | read | Get detailed information about a single official mirror queue entry. | | approve_official_mirror_queue_item | official_queue | write | Approve a queue entry and link it to an existing MCP server (async). | | approve_mirror_no_modify | official_queue | write | Approve without updating the linked server. | | reject_official_mirror_queue_item | official_queue | write | Reject a queue entry (async operation). | | add_official_mirror_to_regular_queue | official_queue | write | Convert a queue entry to a draft MCP implementation (async). | | unlink_official_mirror_queue_item | official_queue | write | Unlink a queue entry from its linked MCP server. | | get_unofficial_mirrors | unofficial_mirrors | read | List unofficial mirrors with search, pagination, and MCP server filtering. | | get_unofficial_mirror | unofficial_mirrors | read | Get detailed unofficial mirror info by ID or name. | | create_unofficial_mirror | unofficial_mirrors | write | Create a new unofficial mirror entry with JSON data. | | update_unofficial_mirror | unofficial_mirrors | write | Update an existing unofficial mirror by ID. | | delete_unofficial_mirror | unofficial_mirrors | write | Delete an unofficial mirror by ID (irreversible). | | get_official_mirrors | official_mirrors | read | List official mirrors with search, status, and processing filters. | | get_official_mirror | official_mirrors | read | Get detailed official mirror info by ID or name. | | get_tenants | tenants | read | List tenants with search and admin status filtering. | | get_tenant | tenants | read | Get detailed tenant info by ID or slug. | | get_mcp_jsons | mcp_jsons | read | List MCP JSON configs with mirror and server filtering. | | get_mcp_json | mcp_jsons | read | Get a single MCP JSON configuration by ID. | | create_mcp_json | mcp_jsons | write | Create a new MCP JSON configuration for an unofficial mirror. | | update_mcp_json | mcp_jsons | write | Update an existing MCP JSON configuration by ID. | | delete_mcp_json | mcp_jsons | write | Delete an MCP JSON configuration by ID (irreversible). | | list_mcp_servers | mcp_servers | read | List/search MCP servers with filtering by status, classification, pagination. | | get_mcp_server | mcp_servers | read | Get detailed MCP server info by slug (unified view of all admin UI fields). | | update_mcp_server | mcp_servers | write | Update an MCP server's fields (all admin UI fields supported). | | get_redirects | redirects | read | List URL redirects with search, status filtering, and pagination. | | get_redirect | redirects | read | Get detailed redirect info by ID. | | create_redirect | redirects | write | Create a new URL redirect entry. | | update_redirect | redirects | write | Update an existing URL redirect by ID. | | delete_redirect | redirects | write | Delete a URL redirect by ID (irreversible). | | list_good_jobs | good_jobs | read | List and filter background jobs by queue, status, job class, and date range. | | get_good_job | good_jobs | read | Get detailed information about a specific background job. | | list_good_job_cron_schedules | good_jobs | read | List all configured cron schedules. | | list_good_job_processes | good_jobs | read | List active worker processes. | | get_good_job_queue_statistics | good_jobs | read | Get aggregate job statistics by status. | | retry_good_job | good_jobs | write | Retry a failed or discarded background job. | | discard_good_job | good_jobs | write | Discard a background job to prevent retries. | | reschedule_good_job | good_jobs | write | Reschedule a background job to a new time. | | force_trigger_good_job_cron | good_jobs | write | Force trigger a cron schedule immediately. | | cleanup_good_jobs | good_jobs | write | Clean up old background jobs by status and age. | | run_exam_for_mirror | proctor | write | Run proctor exams against unofficial mirrors via Fly Machines. Returns truncated summary with result_id. | | get_exam_result | proctor | read | Retrieve full untruncated exam results by result_id, with optional section/mirror filtering. | | save_results_for_mirror | proctor | write | Save proctor exam results via result_id from run_exam_for_mirror. | | list_proctor_runs | proctor | read | List proctor runs with filtering by name, recommended status, and tenant IDs. | | get_proctor_metadata | proctor | read | Get available proctor runtimes and exam types. | | list_discovered_urls | discovered_urls | read | List discovered URLs with status filtering and pagination. | | mark_discovered_url_processed | discovered_urls | write | Mark a discovered URL as processed with a result status. | | get_discovered_url_stats | discovered_urls | read | Get summary statistics for discovered URLs pipeline. | | get_moz_metrics | moz | read | Fetch live URL metrics from the MOZ API (page authority, domain authority, spam score, link counts). | | get_moz_backlinks | moz | read | Fetch live backlink data from the MOZ API (source pages, anchor text, domain authority). | | get_moz_stored_metrics | moz | read | List stored/historical MOZ data for a server's canonicals with pagination. |

Tool Groups

This server organizes tools into groups that can be selectively enabled or disabled. Each group has two variants:

  • Base group (e.g., newsletter): Full read + write access
  • Readonly group (e.g., newsletter_readonly): Read-only access

Available Groups

| Group | Tools | Description | | ----------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | newsletter | 6 | Full newsletter management (read + write) | | newsletter_readonly | 3 | Newsletter read-only (get posts, authors) | | server_directory | 27 | Comprehensive superset: includes all tools from mcp_servers, unofficial_mirrors, official_mirrors, official_queue, mcp_jsons, plus implementations/providers (read + write) | | server_directory_readonly | 13 | Server directory read-only subset | | official_queue | 7 | Full official mirror queue (read + write) | | official_queue_readonly | 2 | Official mirror queue read-only | | unofficial_mirrors | 5 | Full unofficial mirrors CRUD (read + write) | | unofficial_mirrors_readonly | 2 | Unofficial mirrors read-only | | official_mirrors | 2 | Official mirrors REST API (read-only) | | official_mirrors_readonly | 2 | Official mirrors read-only (alias) | | tenants | 2 | Tenants REST API (read-only) | | tenants_readonly | 2 | Tenants read-only (alias) | | mcp_jsons | 5 | Full MCP JSON configurations (read + write) | | mcp_jsons_readonly | 2 | MCP JSON configurations read-only | | mcp_servers | 3 | Full MCP servers management (read + write) | | mcp_servers_readonly | 2 | MCP servers read-only (list, get) | | redirects | 5 | Full URL redirect management (read + write) | | redirects_readonly | 2 | URL redirects read-only (list, get) | | good_jobs | 10 | Full GoodJob background job management (read + write) | | good_jobs_readonly | 5 | GoodJob read-only (list, get, stats, processes, cron) | | proctor | 5 | Proctor exam execution, result retrieval, and result storage (read + write) | | proctor_readonly | 3 | Proctor results read-only (get_exam_result, list_proctor_runs, get_proctor_metadata) | | discovered_urls | 3 | Discovered URL management (read + write) | | discovered_urls_readonly | 2 | Discovered URL tools read-only (list, stats) | | moz | 3 | MOZ SEO metrics — live URL metrics, backlinks, and stored historical data (all read-only) | | moz_readonly | 3 | MOZ tools read-only (alias — all MOZ tools are read-only) |

Tools by Group

  • newsletter / newsletter_readonly:
    • Read-only: get_newsletter_posts, get_newsletter_post, get_authors
    • Write: draft_newsletter_post, update_newsletter_post, upload_image
  • server_directory / server_directory_readonly (superset — includes tools from mcp_servers, unofficial_mirrors, official_mirrors, official_queue, and mcp_jsons):
    • Read-only: search_mcp_implementations, get_draft_mcp_implementations, find_providers, list_mcp_servers, get_mcp_server, get_unofficial_mirrors, get_unofficial_mirror, get_official_mirrors, get_official_mirror, get_official_mirror_queue_items, get_official_mirror_queue_item, get_mcp_jsons, get_mcp_json
    • Write: save_mcp_implementation, send_impl_posted_notif, update_mcp_server, create_unofficial_mirror, update_unofficial_mirror, delete_unofficial_mirror, approve_official_mirror_queue_item, approve_mirror_no_modify, reject_official_mirror_queue_item, add_official_mirror_to_regular_queue, unlink_official_mirror_queue_item, create_mcp_json, update_mcp_json, delete_mcp_json
  • official_queue / official_queue_readonly:
    • Read-only: get_official_mirror_queue_items, get_official_mirror_queue_item
    • Write: approve_official_mirror_queue_item, approve_mirror_no_modify, reject_official_mirror_queue_item, add_official_mirror_to_regular_queue, unlink_official_mirror_queue_item
  • unofficial_mirrors / unofficial_mirrors_readonly:
    • Read-only: get_unofficial_mirrors, get_unofficial_mirror
    • Write: create_unofficial_mirror, update_unofficial_mirror, delete_unofficial_mirror
  • official_mirrors / official_mirrors_readonly:
    • Read-only: get_official_mirrors, get_official_mirror
  • tenants / tenants_readonly:
    • Read-only: get_tenants, get_tenant
  • mcp_jsons / mcp_jsons_readonly:
    • Read-only: get_mcp_jsons, get_mcp_json
    • Write: create_mcp_json, update_mcp_json, delete_mcp_json
  • mcp_servers / mcp_servers_readonly:
    • Read-only: list_mcp_servers, get_mcp_server
    • Write: update_mcp_server
  • redirects / redirects_readonly:
    • Read-only: get_redirects, get_redirect
    • Write: create_redirect, update_redirect, delete_redirect
  • good_jobs / good_jobs_readonly:
    • Read-only: list_good_jobs, get_good_job, list_good_job_cron_schedules, list_good_job_processes, get_good_job_queue_statistics
    • Write: retry_good_job, discard_good_job, reschedule_good_job, force_trigger_good_job_cron, cleanup_good_jobs
  • proctor / proctor_readonly:
    • Read-only: get_exam_result, list_proctor_runs, get_proctor_metadata
    • Write: run_exam_for_mirror, save_results_for_mirror
  • discovered_urls / discovered_urls_readonly:
    • Read-only: list_discovered_urls, get_discovered_url_stats
    • Write: mark_discovered_url_processed
  • moz / moz_readonly:
    • Read-only: get_moz_metrics, get_moz_backlinks, get_moz_stored_metrics

Environment Variables

| Variable | Description | Default | | ------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TOOL_GROUPS | Comma-separated list of enabled tool groups | newsletter,server_directory,official_queue,unofficial_mirrors,official_mirrors,tenants,mcp_jsons,mcp_servers,redirects,good_jobs,proctor,discovered_urls,moz (all base groups) |

Examples

Enable all tools with full access (default):

# No environment variables needed - all base groups enabled

Enable only newsletter tools:

TOOL_GROUPS=newsletter

Enable server_directory with read-only access:

TOOL_GROUPS=server_directory_readonly

Enable all groups with read-only access:

TOOL_GROUPS=newsletter_readonly,server_directory_readonly,official_queue_readonly,unofficial_mirrors_readonly,official_mirrors_readonly,tenants_readonly,mcp_jsons_readonly,mcp_servers_readonly,redirects_readonly,good_jobs_readonly,proctor_readonly,discovered_urls_readonly,moz_readonly

Note: proctor_readonly includes only get_exam_result for retrieving stored results. notifications has no readonly variant since sending emails is always a write operation.

Mix full and read-only access per group:

# Full newsletter access, read-only server_directory, no official_queue
TOOL_GROUPS=newsletter,server_directory_readonly

Usage Tips

  • Use get_newsletter_posts to browse existing content before creating new posts
  • When uploading images, both post_slug and file_name are required
  • Draft posts allow you to prepare content without immediately publishing
  • Search functionality supports finding posts by title, content, or metadata
  • The update tool allows modifying all post metadata except status
  • Use author slugs when creating posts (e.g., "sarah-chen", "john-doe")
  • Use MCP server/client slugs for featured content (e.g., "github-mcp", "claude-desktop")
  • Use search_mcp_implementations to discover MCP servers and clients in the PulseMCP registry
  • Enable or disable specific tool groups by setting TOOL_GROUPS environment variable
  • Use _readonly suffixes to restrict groups to read-only operations (e.g., server_directory_readonly)
  • Use the remote array parameter in save_mcp_implementation to configure remote endpoints for MCP servers (transport, host_platform, authentication_method, etc.)
  • Use the canonical array parameter in save_mcp_implementation to set canonical URLs with scope (domain, subdomain, or url)
  • Remote endpoints allow specifying how MCP servers can be accessed (direct URL, setup URL, authentication method, cost, etc.)
  • When updating existing remotes, include the remote id (number from get_draft_mcp_implementations) in the remote object
  • Use list_mcp_servers to browse MCP servers with filtering by status (draft/live/archived) and classification (official/community)
  • Use get_mcp_server to get a unified view of all server data including provider, source code, canonicals, remotes, and tags
  • Use update_mcp_server to update any admin UI field: name, description, provider, source code, package info, tags, canonicals, remotes, etc.
  • The mcp_servers tools abstract away the MCPImplementation → MCPServer data model complexity

Examples

Search for Newsletter Posts

User: Can you find all newsletter posts about MCP servers?
Assistant: I'll search for newsletter posts about MCP servers.

[Calls get_newsletter_posts with search="MCP servers"]

I found 3 newsletter posts about MCP servers:

1. **"Top 10 MCP Servers This Week"** (2024-01-15)
   - Weekly roundup of the most popular MCP servers

2. **"Building Your First MCP Server"** (2024-01-08)
   - Tutorial on creating custom MCP servers

3. **"MCP Server Security Best Practices"** (2023-12-28)
   - Guide to securing MCP server deployments

Create a Draft Post

User: Create a draft newsletter post about the new weather MCP serverAssistant: I'll create a draft newsletter post about the new weather MCP server.

[Calls draft_newsletter_post with title, body, slug, and author_slug]

I've created a draft newsletter post titled "New Weather MCP Server: Real-time Forecasts in Your LLM" with the slug "weather-mcp-server-launch". The draft has been saved and can be edited or published later.

Upload and Attach an Image

User: Upload this screenshot to the weather server post I just createdAssistant: I'll upload the screenshot and attach it to your weather server post.

[Calls upload_image with post_slug="weather-mcp-server-launch" and file_name="weather-dashboard.png"]

The screenshot has been successfully uploaded and attached to the "weather-mcp-server-launch" post. The image is now available at: https://storage.pulsemcp.com/images/newsletter/weather-dashboard.png

Update an Existing Post

User: Update the weather post to include information about the new temperature alerts featureAssistant: I'll update the weather MCP server post to include information about the temperature alerts feature.

[Calls update_newsletter_post with slug="weather-mcp-server-launch" and updated content]

I've successfully updated the "New Weather MCP Server" post to include a section about the temperature alerts feature. The post now covers both the real-time forecasts and the new alert system.

Search for MCP Implementations

User: Find MCP servers related to weather or climate
Assistant: I'll search for MCP servers related to weather and climate.

[Calls search_mcp_implementations with search="weather climate"]

I found 2 MCP servers related to weather and climate:

1. **Weather MCP Server** (weather-mcp)
   - Real-time weather data and forecasting capabilities

2. **Climate Data MCP Client** (climate-data-mcp)
   - Access climate research and environmental data

Setup

Cheatsheet

Quick setup:

# Install dependencies
npm run install-all

# Build the server
npm run build

# Set your API key
export PULSEMCP_ADMIN_API_KEY="your-api-key-here"

# Run the server
cd local && npm start

Claude Desktop

Add to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "pulsemcp-cms-admin": {
      "command": "node",
      "args": ["/path/to/pulsemcp-cms-admin/local/build/index.js"],
      "env": {
        "PULSEMCP_ADMIN_API_KEY": "your-api-key-here",
        "TOOL_GROUPS": "newsletter,server_directory,official_queue,unofficial_mirrors,official_mirrors,tenants,mcp_jsons,mcp_servers,redirects,good_jobs,proctor"
      }
    }
  }
}

For read-only access:

{
  "mcpServers": {
    "pulsemcp-cms-admin-readonly": {
      "command": "node",
      "args": ["/path/to/pulsemcp-cms-admin/local/build/index.js"],
      "env": {
        "PULSEMCP_ADMIN_API_KEY": "your-api-key-here",
        "TOOL_GROUPS": "newsletter_readonly,server_directory_readonly,official_queue_readonly,unofficial_mirrors_readonly,official_mirrors_readonly,tenants_readonly,mcp_jsons_readonly,mcp_servers_readonly,redirects_readonly,good_jobs_readonly"
      }
    }
  }
}

Manual Setup

If you prefer to run the server manually:

cd /path/to/pulsemcp-cms-admin/local
PULSEMCP_ADMIN_API_KEY="your-api-key-here" node build/index.js

License

MIT