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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@stately-cloud/statelydb-mcp-server

v1.0.0

Published

Model Context Protocol (MCP) Server for interacting with StatelyDB.

Readme

StatelyDB MCP Server

A Model Context Protocol (MCP) server that integrates with the StatelyDB CLI to enable AI assistants to validate and manage StatelyDB schemas.

Prerequisites

  • Node.js: Version 16.0.0 or higher
  • Stately CLI: Make sure the stately command is available in your PATH:
curl -sL https://stately.cloud/install | sh

Installation

From npm registry

Install the server globally:

npm install -g @stately-cloud/statelydb-mcp-server

Alternatively, you can run it directly with npx:

npx @stately-cloud/statelydb-mcp-server

From local source

To install directly from your local source code:

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Install dependencies and link the package locally:
# Install dependencies
npm install

# Build the TypeScript code
npm run build

# Create a global symlink to your local code
npm link

This will create a global statelydb-mcp-server command that uses your local code.

To unlink later, you can run:

npm unlink statelydb-mcp-server

Configuring with Claude Desktop

To use this MCP server with Claude Desktop, follow these steps:

  1. Open your Claude Desktop App configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the server configuration to the mcpServers section:

{
  "mcpServers": {
    "statelydb": {
      "command": "npx",
      "args": ["-y", "@stately-cloud/statelydb-mcp-server"]
    }
  }
}
  1. Save the file and restart Claude Desktop.

Available Tools

This MCP server exposes the following tools:

1. validate-schema

Validates a StatelyDB elastic schema definition.

Input:

  • schema: String containing the schema definition

Output:

  • Success: "Schema is valid."
  • Failure: "Schema is invalid. Error: [error message]"

Example:

Could you validate this StatelyDB schema?

import {
  itemType,
  string,
  timestampSeconds,
  uint,
  uuid,
} from "@stately-cloud/schema";

/** A user of our fantastic new system. */
itemType("User", {
  keyPath: "/user-:id",
  fields: {
    id: {
      type: uuid,
      initialValue: "uuid",
    },
    displayName: {
      type: string,
    },
    email: {
      type: string,
    },
    lastLoginDate: {
      type: timestampSeconds,
    },
    numLogins: {
      type: uint,
    },
  },
});

2. validate-migrations

Validates that schema migrations are valid. This is the same as running stately schema put in dry-run mode.

Input:

  • schema: String containing the schema definition
  • schemaId: Your StatelyDB schema ID

Output:

  • Success: "Migrations are valid."
  • Failure: "Migrations are invalid. Error: [error message]"

Example:

Could you check if this StatelyDB schema has valid migrations?

import {
  itemType,
  string,
  timestampSeconds,
  uint,
  uuid,
} from "@stately-cloud/schema";

itemType("User", {
  keyPath: "/user-:id",
  fields: {
    id: {
      type: uuid,
      initialValue: "uuid",
    },
    displayName: {
      type: string,
    },
    email: {
      type: string,
    },
    lastLoginDate: {
      type: timestampSeconds,
    },
    loginCount: {
      type: uint,
    },
  },
});

migrate(1, "Rename the numLogins field", (m) => {
  m.changeType("User", (t) => {
    t.renameField("numLogins", "loginCount");
  });
});

3. attempt-login

Initiates the Stately login process, providing a URL for authentication.

Input:

  • None

Output:

  • URL for authentication: "Please visit this URL to complete the authentication process: [url]"

Example:

Could you help me log into StatelyDB?

4. verify-login

Verifies if the user is currently logged in to StatelyDB.

Input:

  • None

Output:

  • Success: "Login verified. [user information]"
  • Failure: "Not logged in."

Example:

Am I currently logged into StatelyDB?

5. schema-put

Publishes a schema to StatelyDB.

Input:

  • schema: String containing the schema definition
  • schemaId: Your StatelyDB schema ID

Output:

  • Success: "Schema published successfully: [output]"
  • Failure: "Failed to publish schema: [error message]"

Example:

Publish this StatelyDB schema:

import {
  itemType,
  string,
  timestampSeconds,
  uint,
  uuid,
} from "@stately-cloud/schema";

/** A user of our fantastic new system. */
itemType("User", {
  keyPath: "/user-:id",
  fields: {
    id: {
      type: uuid,
      initialValue: "uuid",
    },
    displayName: {
      type: string,
    },
    email: {
      type: string,
    },
    lastLoginDate: {
      type: timestampSeconds,
    },
    numLogins: {
      type: uint,
    },
  },
});

6. schema-generate

Generates client code for a specified language from a StatelyDB schema.

Input:

  • schemaId: Your StatelyDB schema ID
  • language: One of "typescript", "python", "ruby", "go"

Output:

  • List of generated files with their contents

Example:

Could you generate TypeScript client code for schema id 1234?

Security Considerations

  • This MCP server runs local commands on your machine. Always review schemas before publishing them.
  • The server requires access to the Stately CLI and your Stately authentication credentials.
  • No data is sent to external services except through the official Stately CLI.

License

Apache 2.0