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
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"}'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:
| Setting | Required | Value | Description |
|---|---|---|---|
| url | Yes | https://stackness.dev/api/v1/mcp | The hosted endpoint, served over Streamable HTTP |
| Authorization | Yes | Bearer sfk_... | Request header carrying your sfk_ API key. Every tool call is scoped to its owner |
| transport | No | http | Set 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.
| Tool | Description | Parameters |
|---|---|---|
| stack_list | List all tools in your stack | - |
| stack_add | Add a tool to your stack | tool_id (required), note, category_id (profile grouping uses subspaces instead), start_date, end_date, visibility, screenshot_url |
| stack_update | Update a stack entry | id (required), note, category_id (profile grouping uses subspaces instead), start_date, end_date, visibility, screenshot_url |
| stack_remove | Remove a tool from your stack | id (required) |
| Tool | Description | Parameters |
|---|---|---|
| subspace_list | List your profile subspaces in display order | - |
| subspace_create | Create a subspace on your profile grid | name (required), color (8-color palette, default indigo), start_collapsed |
| subspace_update | Rename, recolor, or resize a subspace | id (required), name, color (8-color palette), start_collapsed, width ("full" or "half") |
| subspace_reorder | Reorder your subspaces | subspace_ids (required) |
| subspace_delete | Delete a subspace, its items fall back to ungrouped | id (required) |
| cluster_create | Create a cluster, a compact tile of mini items | name (required), subspace_id, position |
| cluster_update | Rename a cluster | id (required), name (required) |
| cluster_delete | Delete a cluster and ungroup its items | id (required) |
| stack_layout_get | Read the full profile layout with sizes and positions | - |
| stack_layout_update | Batch move, resize, and regroup profile tiles | items (required), clusters |
| Tool | Description | Parameters |
|---|---|---|
| move_list | List your moves | cursor, limit |
| move_create | Create a new move | title (required), description, tool_ids, category_id, start_date, end_date, cover_image_url, visibility |
| move_update | Update a move you created | id (required), title, description, tool_ids, category_id, start_date, end_date, cover_image_url, visibility |
| move_get | Get a specific move | id (required) |
| move_delete | Delete a move | id (required) |
| Tool | Description | Parameters |
|---|---|---|
| feed_read | Read your personal feed | cursor, limit |
| feed_updates | Read the updates feed | cursor, limit |
| discover_trending | Discover trending items | type (required: "tools" or "moves") |
| discover_search | Search tools, users, moves | q (required), type |
| Tool | Description | Parameters |
|---|---|---|
| user_profile | Get a user's profile | username (required) |
| user_follow | Follow a user | username (required) |
| user_unfollow | Unfollow a user | username (required) |
| Tool | Description | Parameters |
|---|---|---|
| tool_search | Search the tool database | q (required) |
| tool_get | Get tool details | slug (required) |
| tool_suggest | Suggest a new tool | name (required), website_url, description, logo_url, category_ids |
| category_list | List 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
- Verify your API key starts with
sfk_ - Check the header is exactly
Authorization: Bearer sfk_...- the wordBearer, 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
- 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
- Some clients mangle spaces inside
args. With mcp-remote, put the header value inenvand passAuthorization:${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.