Koskamo

Moodmark MCP

An MCP server that allows AI agents to save website references, including screenshots, color palettes, fonts, and tech stacks, into a searchable library. Agents can search by visual traits, organize collections, and generate design briefs for frontend builders.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Moodmark MCP logo, by MoodmarkCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Moodmark
You need:sign in with your Moodmark accountCreate a token in Settings → API & agents
MCP endpoint (Streamable HTTP)
https://app.moodmark.design/mcp
Vendor documentation

What you can do with it

  • Research and save design references by style
  • Search library by color or tags
  • Generate design.md briefs
  • Share collections with clients

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
moodmark 1.0.0
MCP protocol
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Moodmark is the user's visual library of saved websites (screenshots, colour palettes, fonts, tags, collections). Use it to file web design references the user wants to keep and to look up what they already saved. Moodmark does not search the web: find candidate sites with your own browsing/search tools, check they are real and live, then call save_websites (up to 50 per call) with a collection name. Saving into a collection that doesn't exist creates it. Sites already in the library are not duplicated; they are just added to the collection. After saving, give the user the collection link from the result. To turn a saved reference into a build prompt for v0, Cursor, Lovable or Bolt, use get_design_brief (Premium). Edits are additive only (tags, notes, collections). Only call share_collection when the user explicitly asks for a public link.

Tools

9 advertised

save_websites — Save websites to Moodmark
Advertised by the server during the last successful anonymous check.
Open-world

Save websites to the user's Moodmark library, optionally into a collection (created if missing). Moodmark captures a screenshot, title, favicon, fonts and tech stack for each; the colour palette is extracted when the user opens the library. Up to 50 URLs per call. Already-saved sites are not duplicated.

save_websites input schema
{
  "type": "object",
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Existing tag names to apply to every site (see list_tags)."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Website addresses to save."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "note": {
            "type": "string",
            "description": "Why this site is worth keeping."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          }
        }
      },
      "description": "Alternative to urls, with a title, note or tags per site."
    },
    "collection": {
      "type": "string",
      "description": "Collection name or id, e.g. \"Portfolio 27\"."
    },
    "create_collection": {
      "type": "boolean",
      "description": "Create the collection if it doesn't exist (default true)."
    }
  }
}
save_websites annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
search_library — Search the Moodmark library
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find bookmarks the user already saved — by text (title, URL, note, tags, fonts, tech), colour family, tags or collection. Returns newest first.

search_library input schema
{
  "type": "object",
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "color": {
      "enum": [
        "red",
        "orange",
        "yellow",
        "green",
        "teal",
        "blue",
        "purple",
        "pink",
        "brown",
        "gray",
        "black",
        "white"
      ],
      "type": "string"
    },
    "limit": {
      "type": "number",
      "description": "1–100, default 25."
    },
    "query": {
      "type": "string"
    },
    "collection": {
      "type": "string"
    }
  }
}
search_library annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_collections — List collections
Advertised by the server during the last successful anonymous check.
Advertised read-only

The user's collections with bookmark counts and links.

list_collections input schema
{
  "type": "object",
  "properties": {}
}
list_collections annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
create_collection — Create a collection
Advertised by the server during the last successful anonymous check.

Create an empty collection (returns the existing one if the name is taken).

create_collection input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    }
  }
}
create_collection annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_tags — List tags
Advertised by the server during the last successful anonymous check.
Advertised read-only

The user's tags by category (industry, style, layout…). Only these names can be applied when saving.

list_tags input schema
{
  "type": "object",
  "properties": {}
}
list_tags annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_design_brief — Get a design.md brief
Advertised by the server during the last successful anonymous check.

Turn one saved reference into design.md: palette roles, typography, layout, components, a paste-ready prompt for AI builders (v0, Cursor, Lovable, Bolt) and CSS/Tailwind tokens. Cached on the bookmark; Premium only.

get_design_brief input schema
{
  "type": "object",
  "required": [
    "bookmark"
  ],
  "properties": {
    "refresh": {
      "type": "boolean",
      "description": "Regenerate even if a brief is cached."
    },
    "bookmark": {
      "type": "string",
      "description": "Bookmark id (from search_library) or its URL."
    }
  }
}
get_design_brief annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
update_bookmarks — Tag, annotate or file saved bookmarks
Advertised by the server during the last successful anonymous check.

Additive edits to saved bookmarks: add existing tags, append a note, add to a collection (created if missing). Never removes anything the user set.

update_bookmarks input schema
{
  "type": "object",
  "required": [
    "bookmarks"
  ],
  "properties": {
    "add_tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Existing tag names (see list_tags)."
    },
    "bookmarks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Bookmark ids or URLs (max 100)."
    },
    "append_note": {
      "type": "string"
    },
    "add_to_collection": {
      "type": "string"
    }
  }
}
update_bookmarks annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
suggest_tags — Suggest tags for saved sites
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

AI tag suggestions for up to 10 saved bookmarks, chosen from the user's own tags, each with a short reason. Suggestions only; apply the ones that fit with update_bookmarks.

suggest_tags input schema
{
  "type": "object",
  "required": [
    "bookmarks"
  ],
  "properties": {
    "bookmarks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Bookmark ids or URLs (max 10)."
    }
  }
}
suggest_tags annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
share_collection — Share a collection publicly
Advertised by the server during the last successful anonymous check.
Open-world

Turn on the public, read-only link for a collection so it can be sent to a client (they can browse and vote). Only call this when the user explicitly asks to share.

share_collection input schema
{
  "type": "object",
  "required": [
    "collection"
  ],
  "properties": {
    "collection": {
      "type": "string",
      "description": "Collection name or id."
    }
  }
}
share_collection annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

research_references — Research design references

Advertised by the server during the last successful anonymous check.

Find live websites in a given style and file them into a collection.

brief
What to look for, e.g. 'studio portfolios with bold editorial type' (required)
collection
Collection to save into (required)
count
How many sites (default 20)
examples
Reference URLs that show the vibe
competitor_audit — Competitor visual audit

Advertised by the server during the last successful anonymous check.

Collect competitors' websites and summarise their visual patterns.

market
Industry or product category, or a list of competitors (required)
collection
Collection to save into (required)
library_review — Review a collection

Advertised by the server during the last successful anonymous check.

Read a collection and report colour, type and layout patterns, with the best three references.

collection
Collection name (required)

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
259 ms
95th percentile latency
259 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 259 ms · metadata changed · 9 tool(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http moodmark-mcp https://app.moodmark.design/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add moodmark-mcp --url https://app.moodmark.design/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable moodmark-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "moodmark-mcp": {
      "url": "https://app.moodmark.design/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "moodmark-mcp": {
      "type": "streamableHttp",
      "url": "https://app.moodmark.design/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start moodmark-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "moodmark-mcp": {
      "type": "http",
      "url": "https://app.moodmark.design/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http moodmark-mcp https://app.moodmark.design/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "moodmark-mcp": {
      "url": "https://app.moodmark.design/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "moodmark-mcp": {
      "serverUrl": "https://app.moodmark.design/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Moodmark MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.