Stackness

MCP server documentation

The Stackness MCP server lets AI assistants like Claude interact with your Stackness account via the Model Context Protocol. Manage your stack, create moves, browse your feed, and discover tools - all through natural language. It is hosted by us, so there is nothing to install: point your client at https://stackness.dev/api/v1/mcp and authenticate with an API key.

What is the Stackness MCP server?

The Model Context Protocol (MCP) is an open standard that lets AI assistants connect to external tools and data sources. The Stackness MCP server exposes 30 tools across 6 categories, enabling your AI assistant to:

  • View and manage your developer tool stack
  • Create and browse moves (tool recommendations)
  • Read your personalized feed and the updates feed
  • Follow users and view profiles
  • Search and discover trending tools

We run it as a remote server over Streamable HTTP, so every tool call is scoped to the API key you send with it and you always talk to the current version.

Getting started

Step 1Create an API key

Go to Settings and create an API key in the API keys section. The key starts with sfk_ and is only shown once - save it somewhere secure.

Or create one via the API:

curl -X POST https://stackness.dev/api/v1/api-keys \
  -H "Authorization: Bearer <your-jwt>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Claude Desktop"}'
Step 2Add the server to your client

Claude Code

One command, run from anywhere:

claude mcp add --transport http stackness https://stackness.dev/api/v1/mcp \
  --header "Authorization: Bearer sfk_..."

Clients that take remote servers directly

Claude Desktop and other clients with native remote support take the endpoint and headers in their config file:

{
  "mcpServers": {
    "stackness": {
      "type": "http",
      "url": "https://stackness.dev/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer sfk_..."
      }
    }
  }
}

Clients that only speak stdio

Bridge through mcp-remote, the standard stdio-to-HTTP shim:

{
  "mcpServers": {
    "stackness": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://stackness.dev/api/v1/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer sfk_..."
      }
    }
  }
}

The header value lives in env because some clients mangle spaces inside args - note there is no space after the colon in the flag itself.

Replace sfk_... with the key from step 1, then restart your client.

Configuration

There is nothing to configure beyond the endpoint and the header your client sends with every request:

SettingRequiredValueDescription
urlYeshttps://stackness.dev/api/v1/mcpThe hosted endpoint, served over Streamable HTTP
AuthorizationYesBearer sfk_...Request header carrying your sfk_ API key. Every tool call is scoped to its owner
transportNohttpSet it where your client asks for a transport type; stdio-only clients use the mcp-remote bridge instead

The endpoint is rate limited per user. Treat your API key like a password - anyone holding it can act as you.

Available tools

The MCP server provides 30 tools across 6 categories.

Stack management
ToolDescriptionParameters
stack_listList all tools in your stack-
stack_addAdd a tool to your stacktool_id (required), note, category_id (profile grouping uses subspaces instead), start_date, end_date, visibility, screenshot_url
stack_updateUpdate a stack entryid (required), note, category_id (profile grouping uses subspaces instead), start_date, end_date, visibility, screenshot_url
stack_removeRemove a tool from your stackid (required)
Profile layout
ToolDescriptionParameters
subspace_listList your profile subspaces in display order-
subspace_createCreate a subspace on your profile gridname (required), color (8-color palette, default indigo), start_collapsed
subspace_updateRename, recolor, or resize a subspaceid (required), name, color (8-color palette), start_collapsed, width ("full" or "half")
subspace_reorderReorder your subspacessubspace_ids (required)
subspace_deleteDelete a subspace, its items fall back to ungroupedid (required)
cluster_createCreate a cluster, a compact tile of mini itemsname (required), subspace_id, position
cluster_updateRename a clusterid (required), name (required)
cluster_deleteDelete a cluster and ungroup its itemsid (required)
stack_layout_getRead the full profile layout with sizes and positions-
stack_layout_updateBatch move, resize, and regroup profile tilesitems (required), clusters
Moves
ToolDescriptionParameters
move_listList your movescursor, limit
move_createCreate a new movetitle (required), description, tool_ids, category_id, start_date, end_date, cover_image_url, visibility
move_updateUpdate a move you createdid (required), title, description, tool_ids, category_id, start_date, end_date, cover_image_url, visibility
move_getGet a specific moveid (required)
move_deleteDelete a moveid (required)
Feed & discovery
ToolDescriptionParameters
feed_readRead your personal feedcursor, limit
feed_updatesRead the updates feedcursor, limit
discover_trendingDiscover trending itemstype (required: "tools" or "moves")
discover_searchSearch tools, users, movesq (required), type
Social
ToolDescriptionParameters
user_profileGet a user's profileusername (required)
user_followFollow a userusername (required)
user_unfollowUnfollow a userusername (required)
Tool database
ToolDescriptionParameters
tool_searchSearch the tool databaseq (required)
tool_getGet tool detailsslug (required)
tool_suggestSuggest a new toolname (required), website_url, description, logo_url, category_ids
category_listList every tool category with its ID-

Examples

Once configured, you can ask your AI assistant things like:

Scan this repo (package.json, go.mod, Dockerfile, CI config) and add every tool I use to my Stackness stack

Reads the manifests in the open project and adds what it finds: tool_search finds each tool, stack_add adds it and tool_suggest files what is missing

Look at the public repos on my GitHub profile and add the languages, frameworks and services I use

Works from your public repositories instead of one checkout: tool_search finds each tool, stack_add adds it and tool_suggest files what is missing

Here is the skills section of my LinkedIn profile - add the matching tools to my stack

Paste the skills list and it matches each entry to a tool: tool_search finds each tool, stack_add adds it and tool_suggest files what is missing

“Show me what's in my stack”

Uses stack_list to display your tools

“Create a move about my prompt-driven TDD workflow”

Uses move_create to publish a new move

“What's trending on Stackness this week?”

Uses discover_trending and feed_updates

“Find alternatives to Postgres and add the best one to my stack”

Uses tool_search then stack_add

Troubleshooting

“Authentication failed” or 401 errors
  • Verify your API key starts with sfk_
  • Check the header is exactly Authorization: Bearer sfk_... - the word Bearer, one space, then the key
  • Confirm the key has not been revoked in Settings. Revoked keys stop working immediately - create a new one and update your client
The server does not show up in your client
  • Restart the client after editing its config - most clients read MCP servers only at startup
  • Check the URL is https://stackness.dev/api/v1/mcp, with no trailing slash
  • If your client has no remote server support, use the mcp-remote bridge shown in step 2 rather than a plain URL
The key looks right but calls still fail
  • Some clients mangle spaces inside args. With mcp-remote, put the header value in env and pass Authorization:${AUTH_HEADER} with no space after the colon
  • A 429 means you hit the per-user rate limit - wait a minute and retry
  • Verify the endpoint responds at all: curl -I https://stackness.dev/api/v1/mcp

Ready to get started? Create your API key and connect your AI assistant.