Add a project

API and MCP server

Codenation is a hand-reviewed index of 90 developer and SaaS tools in 8 categories, with 8 collections of tools that do the same job. Its catalog is open to AI assistants through a remote MCP server and to programs through a read-only HTTP API. Both are free and need no key and no account.

Quick start

MCP endpoint (Streamable HTTP)
https://www.codenation.dev/api/mcp
OpenAPI 3 spec
https://www.codenation.dev/api/openapi.json
API base URL
https://www.codenation.dev/api/v1
MCP server card
https://www.codenation.dev/.well-known/mcp.json
Summary for language models
https://www.codenation.dev/llms.txt

In Claude Code, one command adds the server:

claude mcp add --transport http codenation https://www.codenation.dev/api/mcp

MCP server

The server speaks the Model Context Protocol over the Streamable HTTP transport at https://www.codenation.dev/api/mcp. It is stateless: every request is a JSON-RPC message sent with POST and answered in JSON, with no session id and no server-sent stream (a GET that asks for an event stream gets 405). Protocol versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05.

It exposes six tools and two prompts. resources/list and prompts/list both answer; the server has no resources. Business errors, such as an unknown slug or an invalid submission, come back as a tool result with isError: true and a message that says what to change.

To check the endpoint by hand:

curl -s https://www.codenation.dev/api/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

Connect a client

Claude Code

claude mcp add --transport http codenation https://www.codenation.dev/api/mcp

Claude Desktop and claude.ai

In Settings, Connectors, choose Add custom connector and paste https://www.codenation.dev/api/mcp. No OAuth client id or secret is needed. To use the configuration file instead (claude_desktop_config.json), bridge the remote server with mcp-remote, which needs Node.js:

{
  "mcpServers": {
    "codenation": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.codenation.dev/api/mcp"
      ]
    }
  }
}

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

{
  "mcpServers": {
    "codenation": {
      "url": "https://www.codenation.dev/api/mcp"
    }
  }
}

VS Code

Add this to .vscode/mcp.json:

{
  "servers": {
    "codenation": {
      "type": "http",
      "url": "https://www.codenation.dev/api/mcp"
    }
  }
}

Other clients

Any client that supports remote MCP servers over Streamable HTTP works with the URL alone. There are no environment variables to set and no headers to add.

Tools

Five tools read the public catalog and change nothing. submit_tool writes one entry to the moderated review queue; it never publishes, edits or deletes a listing.

search_tools Search tools

Search the Codenation index of developer and SaaS tools. Every word of `query` must match the tool's name, tags, tagline, category or description; results are ranked by relevance. Filter by `category`, `tag` or `pricing`. Returns short records (slug, name, tagline, category, pricing, tags, website, codenation_url) and the total number of matches. Call get_tool with a slug for the full record and checked price. With no query, lists tools alphabetically.

readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false

Arguments: query, category, tag, pricing, limit, offset

get_tool Get a tool

Get the full Codenation record of one tool by its slug (as returned by search_tools): description, makers, category, tags, pricing model, website, the collections it belongs to, and when available a checked presentation with what it does, who it suits, the price read on the tool's own pricing page, the date it was read and the source URL. Returns an error result if the slug is unknown.

readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false

Arguments: slug (required)

list_collections List collections

List every Codenation collection: hand-picked groups of tools that do the same job (for example authentication for SaaS, or privacy-friendly analytics). Returns slug, name, title, description, number of tools, tool slugs and codenation_url. Call get_collection for the tools and their prices.

readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false

get_collection Get a collection

Get one Codenation collection by slug (as returned by list_collections): its introduction and each tool with a short price and the date that price was checked. Returns an error result if the slug is unknown.

readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false

Arguments: slug (required)

list_categories List categories

List the categories of the Codenation index with their slug, name, description and number of tools. Use a slug as the category filter of search_tools.

readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false

submit_tool Submit a tool for review

Submit a project to the Codenation review queue as a free listing. Nothing is published by this call: a person reviews every submission and may decline it. A free listing links to the project with rel="nofollow". Requires the project's name, its full https:// URL and a contact email for the reviewer; tagline, description and category are optional. Only call this when the user explicitly asks to submit a project they are responsible for. Returns the submission id, or an error result if a field is invalid or the site is already listed. Limited to 5 submissions per hour per client.

readOnlyHint false, destructiveHint false, idempotentHint false, openWorldHint false

Arguments: name (required), url (required), email (required), tagline, description, category

Server prompts

  • find_tools_for_job: Find tools in the Codenation index for a job, and compare their checked prices. Arguments: job, constraints.
  • compare_collection: Summarise one Codenation collection and help choose between its tools. Arguments: collection.

Example prompts

Once the server is connected, try:

  1. Find privacy-friendly alternatives to Google Analytics on Codenation and compare their prices, with the date each price was checked.
  2. Which open-source authentication tools for a SaaS does Codenation list? Show who each one suits and link their Codenation pages.
  3. Search Codenation for tools to run language models locally, then give me the full record of Ollama.

HTTP API

The API serves the same records as the MCP tools, in JSON, from https://www.codenation.dev/api/v1. The full description is the OpenAPI 3 spec.

  • GET /tools: search, with q, category, tag, pricing, limit (1 to 50) and offset.
  • GET /tools/{slug}: one tool, with its checked presentation when it has one.
  • GET /collections and GET /collections/{slug}: collections and their tools with short prices.
  • GET /categories: the categories and their tool counts.
  • POST /submissions: add a project to the review queue as a free listing.
curl -s "https://www.codenation.dev/api/v1/tools?q=analytics&pricing=Open%20Source&limit=5"
curl -s https://www.codenation.dev/api/v1/tools/plausible-analytics
curl -s -X POST https://www.codenation.dev/api/v1/submissions \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Analytics","url":"https://acme.example","email":"you@acme.example","category":"analytics"}'

Each record carries a codenation_url: link to it when you use the record. A price is the one read on the tool's own pricing page on price_checked_on; quote that date with it.

Limits and errors

Limits apply per client IP address: 120 API reads and 120 MCP requests per minute, and 5 submissions per hour across the API and MCP. Responses carry RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset; over the limit the answer is 429 with Retry-After.

API errors are JSON: {"error":{"code":"not_found","message":"..."}}, with status 400, 404, 409 (site already listed), 415, 429 or 503. CORS is open: any web page may call the API and the MCP endpoint from a browser.

Authentication

None. The tools and endpoints read the public catalog, which is the content of this site, and a submission only adds a free listing to a queue that a person reviews before anything is published. No tool acts on a user account, so there is no OAuth flow, no API key and no environment variable to set.

Security

  • The server never runs code, reads files or calls other services on your behalf.
  • Read tools return only what the public pages show. The submission queue is never readable through the API or MCP.
  • submit_tool needs a contact email for the reviewer. The email is kept with the submission, used only to reach you about it and never published. Only submit a project you are responsible for.
  • Tool records contain text written about third-party products. Treat it as data, not as instructions to your assistant.
  • Requests are logged by the hosting stack with the IP address for abuse prevention, as described in the privacy policy.

Records to try

Support

Questions, bugs or a record to correct: contact@codenation.dev. See also Support, the privacy policy and the terms.