Guide · MCP Registry Distribution

Getting your MCP server listed on Glama

Glama (glama.ai) runs a curated MCP server directory that is embedded directly in its AI playground and accessible to developers choosing tools for their agent pipelines. Unlike general GitHub search, Glama performs active protocol verification — it doesn't just index repositories, it tests whether your server speaks MCP correctly. A listing on Glama increases your server's discoverability across the Glama platform's user base. This guide covers the submission process, what Glama's scanner checks, how to write a listing that ranks well, and how to keep your server visible after it's listed.

TL;DR

Submit your GitHub repository (or a direct endpoint URL for remote servers) via Glama's submission form. Glama's scanner will attempt an MCP initialize handshake and a tools/list call. Both must succeed for your server to appear as "verified". Write clear tool descriptions — Glama surfaces them in its search index. Monitor your endpoint continuously with AliveMCP so you catch outages before Glama's re-scan marks your server as unhealthy.

Submission requirements

Glama accepts both locally-installable (stdio) servers submitted via their GitHub repository and remote (HTTP/SSE) servers submitted via endpoint URL. The requirements differ:

Server typeWhat to submitWhat Glama checks
Stdio (local install)GitHub repository URLRepository structure, package metadata, install command, tool schema from static analysis
HTTP/SSE (remote)Public endpoint URLTLS certificate, initialize handshake, tools/list response, tool schema validity

For remote servers, the endpoint URL must be HTTPS with a valid certificate from a public CA. Self-signed certificates fail immediately. The endpoint must accept POST requests at the URL you provide (for streamable HTTP transport) or accept SSE connections (for the older SSE transport). Glama's scanner follows redirects up to 3 hops but prefers stable, non-redirecting URLs.

For stdio servers, Glama reads your repository's README, package.json (or pyproject.toml), and any MCP-specific manifest file. It may perform static analysis of your tool definitions to extract the tool list without running the server. A repository with clear documentation, a working install command in the README, and well-typed tool definitions (using Zod or JSON Schema) will score better than one that requires reading the source code to understand what tools are available.

What Glama's scanner checks for remote servers

When you submit a remote endpoint, Glama runs a verification sequence similar to what AliveMCP runs on every 60-second probe cycle:

# Step 1: TLS verification
# Glama checks: certificate valid, not expired, chain to public CA, SAN matches hostname
openssl s_client -connect your-server.example.com:443 -servername your-server.example.com &1 \
  | grep -E "Verify return code|subject|issuer"

# Step 2: MCP initialize handshake
curl -s -X POST https://your-server.example.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": { "tools": {} },
      "clientInfo": { "name": "glama-scanner", "version": "1.0" }
    }
  }'

# Glama expects: { "jsonrpc": "2.0", "id": 1, "result": { "protocolVersion": "...", "serverInfo": { "name": "...", "version": "..." }, ... }}

# Step 3: Tool list retrieval
curl -s -X POST https://your-server.example.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# Glama expects: { "result": { "tools": [ { "name": "...", "description": "...", "inputSchema": {...} } ] } }

Each step must succeed for your server to receive a "Verified" badge. The most common failure at the initialize step is a server that handles the HTTP request but does not process the JSON-RPC method correctly — returning an HTTP 200 with an empty body or an HTML error page instead of a JSON-RPC response. Test with the curl commands above before submitting.

Writing tool descriptions that rank in Glama's search

Glama indexes your tool names and descriptions for its internal search. When a developer searches "analytics MCP server" or "query database MCP", Glama matches against your tool descriptions. Descriptions that are vague or self-referential ("This tool is part of our MCP server") do not match meaningful queries.

Good tool descriptions for Glama follow a pattern: [verb] + [object] + [constraints or context].

Bad (vague)Good (specific)
"Gets data from the API""Fetches daily active user counts from your analytics platform, filterable by date range, country, and plan tier"
"Creates a thing""Creates a new Jira issue in the specified project with title, description, priority, and optional assignee"
"Searches for items""Full-text search across your knowledge base — returns title, URL, excerpt, and relevance score for up to 10 results"
"Manages files""Lists files in a directory with size, modification time, and type; supports glob patterns"

The description appears on your Glama listing card and in search results. Keep the most important information in the first 120 characters — the rest may be truncated in card views. The full description is available on the tool's detail page and is indexed for search regardless of length.

Maintaining your Glama listing after approval

Glama re-scans listed servers periodically. A server that was healthy at submission time can lose its verified badge if subsequent scans find it unreachable or non-compliant. The consequences:

The gap between Glama's scans means you can have an outage, recover, and not know Glama caught it — until you see your listing lose its badge. AliveMCP fills this gap with 60-second protocol probes: the same initialize + tools/list sequence Glama's scanner runs. When AliveMCP alerts you to a failure, you have time to investigate and recover before Glama's next scan runs.

// Add a dedicated /healthz endpoint for monitoring tools
// This does NOT replace AliveMCP's protocol probe — it supplements it
app.get('/healthz', async (req, res) => {
  try {
    // Verify that the MCP server transport is up and accepting connections
    // A 200 here means the HTTP layer is healthy
    res.json({
      status: 'ok',
      server: process.env.npm_package_name,
      version: process.env.npm_package_version,
      uptime: process.uptime(),
    });
  } catch (err) {
    res.status(503).json({ status: 'error', message: err.message });
  }
});

// Note: AliveMCP probes the MCP protocol layer (initialize + tools/list), not /healthz
// Both checks are complementary — HTTP health covers process health, protocol probe covers MCP compliance

Related questions

How do I update my Glama listing when I add new tools?

Glama's scanner picks up tool changes on its next re-scan. You do not need to re-submit to add tools. If you want the updated tool list to appear sooner, contact Glama to request a manual re-scan. Keep your endpoint healthy during tool additions — a failed scan that coincides with a deployment can cause your listing to lose its verified badge even if the change was intentional.

Does Glama support authenticated MCP servers?

Glama's scanner cannot authenticate to private endpoints — it sends unauthenticated requests. If your server requires authentication, Glama can only verify the HTTP layer (that the server exists and returns something), not the MCP protocol layer. For public-facing MCP servers with optional authentication (public tool list, authenticated tool calls), Glama can verify the unauthenticated tools/list response. Fully private servers (requiring authentication even for initialize) are not compatible with Glama's automated verification.

What categories should I use for my Glama listing?

Glama's category taxonomy covers areas like "Database", "Productivity", "Developer Tools", "Data Analysis", "Communication", and "File System". Choose the most specific category that fits your server's primary use case. If your server bridges multiple categories (e.g., a server that queries a database and sends Slack notifications), pick the primary use case for the category and mention the secondary functionality in the description. Miscategorized servers appear in fewer relevant searches.

Can I list the same MCP server on Glama and Smithery?

Yes, and you should. The MCP registries do not have exclusivity requirements. A server listed on Glama, Smithery, PulseMCP, and MCP.so multiplies its discoverability. Each registry's user base differs slightly — Smithery skews toward developers configuring Claude Desktop and Cursor, Glama skews toward developers using Glama's AI playground, PulseMCP aggregates across all registries. Being on all of them costs nothing beyond the initial setup.

Further reading