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

@archbee/mcp

v2.3.0

Published

A Model Context Protocol (MCP) server for the [Archbee API](https://docs.archbee.com/get-document). It lets an LLM client read, search, create, update and delete the documentation in your Archbee space.

Readme

Archbee MCP Server

A Model Context Protocol (MCP) server for the Archbee API. It lets an LLM client read, search, create, update and delete the documentation in your Archbee space.

With a space API key every tool acts on that one space, and docSpaceId never has to be passed in. With a team key (abteam_…) the assistant reaches every space in the team, and the space-level tools take a docSpaceId argument per call.

Tools

Read:

  1. get_doc
    • Gets content of a document
    • Input:
      • docId (string): Archbee document id
    • Returns: content as markdown
  2. get_all_docs
    • Gets content of all documents in the space
    • Returns: documents, as DocResponse[]
  3. search_query
    • Searches docs by content; an empty query returns all docs
    • Input:
      • query (string): text to look for inside documents
    • Returns: documents containing the query, as DocResponse[]
  4. search_title
    • Searches docs by title
    • Input:
      • query (string): text to look for in titles
    • Returns: documents with a matching title, as DocResponse[]

Write — these need an API key, space or team (the configurations below):

  1. create_doc
    • Creates a document from Markdown or MDX content
    • Input:
      • content (string): body as Markdown or MDX text
      • format (markdown | mdx, optional): use mdx for JSX-style components such as <hint> or <Tabs>; directive-style (:::hint{type="info"}) works in both. Defaults to markdown
      • also optional: title, parentDocId, slug, description, previewImgURL, hidden, icon
  2. update_doc
    • Updates a document; only the fields you send are changed
    • Input:
      • docId (string): document to update
      • optional: content, format, title, parentDocId, slug, description, previewImgURL, hidden, icon
  3. delete_doc
    • Permanently deletes a document, its uploaded files and images. Cannot be undone
    • Input:
      • docId (string): document to delete
      • recursive (boolean, optional): required to delete a document that has nested children, which deletes them too
  4. create_doc_space
    • Creates a doc space in the team
    • Input:
      • name (string): name of the new space
      • optional: isReviewSystemEnabled, isBranchingSystemEnabled, docSpaceGroupId, icon
  5. update_doc_space
    • Updates settings of the configured space; only the parts you send are changed
    • Input, all optional:
      • name (string): renames the space
      • icon (string): left-nav icon
      • hostnamePart ({ hostname, hostnamePath }): custom hostname configuration
      • spaceLinks ({ label, docSpaceId }[]): links to other spaces; the list should start with the current space
      • publicAccessControlPart: public access control and authentication configuration
  6. delete_doc_space
    • Permanently deletes the configured space and every document in it. Cannot be undone, and the API_KEY dies with it
  7. create_space_group
    • Creates a space group. Requires a team admin
    • Input:
      • name (string): name of the new group
      • optional: isAiEnabled, isReviewSystemEnabled, isBranchingSystemEnabled
  8. delete_space_group
    • Deletes an empty space group. Requires a team admin
    • Input:
      • docSpaceGroupId (string): group to delete
  9. create_category
    • Creates a category (a folder in the space navigation)
    • Input:
      • categoryName (string): name of the category
      • parentDocId (string, optional): node to nest it under
  10. delete_category
    • Deletes an empty category. Documents are never deleted
    • Input:
      • categoryId (string): category to delete

An icon is either an emoji ("🚀"), or a JSON string naming an icon: {"lucideIcon":"Rocket"}, {"faIcon":"fa-solid fa-rocket"} or {"apiMethod":"GET"}. An empty string clears it; anything else is rejected.

Reusable resources — templates, content snippets and variables belong to the organization, not to a space, so these take no docSpaceId. The list_* tools work with either key; the rest need a team key:

  1. list_templates
    • Lists the saved document templates, with their content as markdown
  2. create_template
    • Saves a new document template. A taken name (case-insensitive) returns the existing template's id with alreadyExists: true instead of creating a duplicate — the existing content is kept, so a different body needs a new name
    • Input:
      • name (string): name of the template
      • optional: content, format, icon
  3. apply_template
    • Creates a document from a template, copying its content verbatim
    • Input:
      • templateId (string): template to apply
      • optional: title (defaults to the template name), parentDocId, slug, icon
  4. delete_template
    • Deletes a template by moving it to the organization's Archives space, where a person can restore it
    • Input:
      • templateId (string): template to delete
  5. list_content_snippets
    • Lists the reusable content snippets, with their content as markdown
  6. create_content_snippet
    • Creates a content snippet. Requires a Scaling or Enterprise subscription. A taken name (case-insensitive) returns the existing snippet's id with alreadyExists: true instead of creating a duplicate — the existing content is kept, use update_content_snippet to change it
    • Input:
      • name (string): name of the snippet
      • optional: content, format
  7. update_content_snippet
    • Renames a snippet, replaces its content, or both — reaching every document that embeds it
    • Input:
      • snippetId (string): snippet to update
      • at least one of: name, content (plus optional format)
  8. delete_content_snippet
    • Permanently deletes a content snippet. Cannot be undone
    • Input:
      • snippetId (string): snippet to delete
  9. list_variables
    • Lists the content variables and glossary terms, with their values and overrides
    • Input:
      • variableType (variable | glossary, optional): omit for both
  10. create_variable
    • Creates a content variable or glossary term. Requires a Scaling or Enterprise subscription
    • Input:
      • name (string): how documents reference it ({{name}}); unique within its type, letters, digits, -, _ and . only, max 40 characters. Readers never see it in the glossary
      • variableContent (string): value it resolves to (max 100 characters). For a glossary term this is the TERM readers see (max 40 characters)
      • optional: description (max 250 characters; for a glossary term this is the DEFINITION readers see, and it is required), variableType, spaceTargetMap (per-space or per-language overrides)
  11. update_variable
    • Updates a variable or glossary term; only the fields you send are changed
    • Input:
      • variableId (string): variable to update
      • at least one of: name, variableContent, description, variableType, spaceTargetMap (same field roles and limits as create_variable)
  12. delete_variable
    • Permanently deletes a variable or glossary term. References to it stop resolving
    • Input:
      • variableId (string): variable to delete

Setup

Add this server to your claude_desktop_config.json or .cursor/mcp.json

Environment Variables - base link

Read-only. Use this for a public space.

  • API_BASE: Link to your Archbee portal

Space must be public, with no access control (no password, jwt etc) Just copy-paste the link to the archbee space.

{
  "mcpServers": {
    "archbee": {
      "command": "pnpm",
      "args": ["dlx", "@archbee/mcp"],
      "env": {
        "API_BASE": "https://your-docs.io/"
      }
    }
  }
}

Environment Variables - space id

Required for the write tools, and also works for reading internal spaces.

You can get an API token from Space Settings in Archbee app.

  • SPACE_ID: Space id, taken from the space URL in the app
  • API_KEY: Your Archbee API token for that Space

Use the live space id here. A PUBLISHED- or PREVIEW- snapshot id reads fine, but the API refuses every write through a snapshot credential.

A space API key belongs to one space, so this configuration reads and writes that space only. For every space in the team, use a team key instead.

{
  "mcpServers": {
    "archbee": {
      "command": "pnpm",
      "args": ["dlx", "@archbee/mcp"],
      "env": {
        "SPACE_ID": "<id-of-space>",
        "API_KEY": "<api-key-of-space>"
      }
    }
  }
}

Environment Variables - team key

Reads and writes every space in the team. The organization super-admin creates the key in Settings → Organization settings → Organization API key; it is shown once, on creation, and cannot be read back afterwards. Revoking it stops every assistant configured with it.

  • API_KEY: Team key, starting with abteam_

A team key is accepted on the MCP endpoints only — the rest of the Public API and the CLI still take a space key.

No SPACE_ID: the key is not bound to a space, so the space travels per call. get_doc, get_all_docs, search_query, search_title, create_doc, update_doc, delete_doc, apply_template, create_category, delete_category, update_doc_space and delete_doc_space take a docSpaceId argument; create_doc_space, create_space_group, delete_space_group and every reusable-resource tool act on the organization and take none.

{
  "mcpServers": {
    "archbee": {
      "command": "pnpm",
      "args": ["dlx", "@archbee/mcp"],
      "env": {
        "API_KEY": "abteam_<team-key>"
      }
    }
  }
}

Environment Variables - other Archbee installs

Both API-key configurations talk to https://api.archbee.com by default — the same host the Archbee CLI and the public API reference use. Point them elsewhere with:

  • ARCHBEE_API_URL: Origin of your Archbee API, e.g. https://qa.archbee.com or http://localhost:4000

Give the origin only — the server appends /api/public-mcp itself. A value without a scheme is rejected rather than silently falling back to the cloud. API_BASE (the public-portal configuration) is a full link and ignores this.

{
  "mcpServers": {
    "archbee": {
      "command": "pnpm",
      "args": ["dlx", "@archbee/mcp"],
      "env": {
        "ARCHBEE_API_URL": "https://qa.archbee.com",
        "API_KEY": "abteam_<team-key>"
      }
    }
  }
}