Agent skill

Generate Server Card

by agentic-community in agentic-community/mcp-gateway-registry

Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL.

Apache-2.0Auto-check passedAgent Workflows

Install Generate Server Card

skills CLI
$ npx skills add agentic-community/mcp-gateway-registry --skill generate-server-card -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install agentic-community/mcp-gateway-registry generate-server-card --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/agentic-community/mcp-gateway-registry.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/generate-server-card .claude/skills/generate-server-card && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
generate-server-card
GitHub stars
964
Token cost
~2.7k tokens
SKILL.md length
676 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL.

  • Works in 10 steps: Carefully study the source code → Generate the server card JSON → Do NOT populate tool_list → …
  • Tasks that involve MCP servers
  • SKILL.md covers Steps, Reference: Minimal server card and Reference: Full server card…
  • Calls python3; reaches geo-mcp-abc123.gateway.bedrock-agentcore.us-east-1.amazonaws.com and aws.amazon.com

What it does

Generate Server Card is an agent skill from agentic-community/mcp-gateway-registry. Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL. Studies code to detect server name, tools, transport, auth, and generates a registry-compatible config.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol and GitHub. The repository describes itself as: Enterprise-ready MCP Gateway & Registry that centralizes AI development tools with secure OAuth authentication, dynamic tool discovery, and unified access for both autonomous AI… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve MCP servers

Example prompts

  • “/generate-server-card”

Requirements

  • Python 3
  • Docker

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Carefully study the source code
  2. Generate the server card JSON
  3. Do NOT populate tool_list
  4. Set the path
  5. Set the proxy_pass_url and mcp_endpoint
  6. Detect transport type
  7. Detect auth scheme
  8. Save the output
  9. Validate the generated JSON
  10. Report results

What it can do on your machine

Read from SKILL.md and the folder at commit ec3a197. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • geo-mcp-abc123.gateway.bedrock-agentcore.us-east-1.amazonaws.com
    • aws.amazon.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Generate Server Card loads about 2.7k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 676 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~62
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from agentic-community/mcp-gateway-registry at commit ec3a197, republished under its Apache-2.0 licence (© agentic-community). 676 words, ~2,686 tokens.

Download SKILL.mdSave it as .claude/skills/generate-server-card/SKILL.md (or your agent's skills folder).
name
generate-server-card
description
Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL. Studies code to detect server name, tools, transport, auth, and generates a registry-compatible config.
argument-hint
[folder-path-or-github-url]
disable-model-invocation
true

Generate MCP Server Card

Generate an MCP server card JSON file in the mcp-gateway-registry format by analyzing the source code at $ARGUMENTS.

This format is used by https://github.com/agentic-community/mcp-gateway-registry for registering MCP servers in the gateway registry.

Steps

1. Carefully study the source code

Do NOT just skim the top-level files. MCP servers can be complex, multi-file projects. You MUST thoroughly explore the entire folder structure before generating the card.

If $ARGUMENTS is a local folder path, use Glob to find ALL Python files, YAML/JSON configs, and README files in the folder and its subfolders. Read every relevant file.

If $ARGUMENTS is a GitHub URL, use WebFetch to read the raw file contents. Follow imports to discover additional files.

Where to look (MCP servers are not always a single file):

  • Entrypoints: main.py, app.py, server.py, __main__.py, mcp_server.py
  • Tool definitions: look for @mcp.tool(), @server.tool(), @tool, tool handler functions, tool registrations
  • OpenAPI specs: .json or .yaml files in openapi-specs/, specs/, api/ folders - these define the tools when an API is exposed as MCP
  • Config files: pyproject.toml, requirements.txt, .bedrock_agentcore.yaml, deploy_*.py, docker-compose.yml
  • Deployment scripts: these reveal the gateway URL, auth scheme, transport type
  • Gateway configs: .deployment_info.json, .roo.json - these have the actual MCP endpoint URL
  • Sub-folders: check ALL subdirectories for additional tools, resources, or shared utilities
  • Resource definitions: MCP servers can expose resources and prompts in addition to tools

From the code, detect:

  • Server name: from constants, config files, class names, gateway name
  • Description: from docstrings, README, module-level comments, OpenAPI spec info
  • Tools: from @tool decorators, tool registrations, OpenAPI operationIds, function definitions
  • Tool schemas: parameter types, required fields, descriptions from function signatures or OpenAPI specs
  • Supported transports: streamable-http, sse, stdio - from server framework config
  • Auth scheme: none, bearer JWT, API key, OAuth2, Cognito - from deployment scripts or middleware
  • MCP endpoint URL: from deployment info, gateway URL, or config files
  • Proxy pass URL: the backend URL the gateway proxies to (may differ from the MCP endpoint)
  • Version: from constants, pyproject.toml, or default to 1.0.0
  • Provider info: organization name and URL if detectable
  • License: from pyproject.toml or LICENSE file
  • Status: active, beta, etc.
2. Generate the server card JSON

Create a JSON file following the mcp-gateway-registry server config format.

Required fields
json
{
  "server_name": "string - Human-readable server name",
  "description": "string - What the server does",
  "path": "string - URL path prefix on the gateway, must start with /",
  "proxy_pass_url": "string - Backend URL to proxy to",
  "tags": ["string - Relevant tags for discovery"],
  "supported_transports": ["streamable-http"]
}
json
{
  "auth_scheme": "string - none, bearer, api_key, oauth2",
  "mcp_endpoint": "string - Custom MCP endpoint URL if different from proxy_pass_url",
  "version": "string - Server version e.g. 1.0.0",
  "status": "string - active, beta, deprecated",
  "visibility": "string - public or private",
  "provider_organization": "string - Organization name",
  "provider_url": "string - Organization URL",
  "num_tools": 0,
  "license": "string - License identifier e.g. MIT, Apache-2.0",
  "metadata": {
    "category": "string - e.g. documentation, geolocation, utility",
    "official": false,
    "mcp_compatible": "1.0"
  },
  "tool_list": []
}
3. Do NOT populate tool_list
  • Always set "tool_list": [] (empty array)
  • Do NOT add individual tool entries to tool_list - leave it empty
  • Still count the tools and set num_tools to the correct count (for informational purposes)
  • The tool details are intentionally omitted from the server card
Show full SKILL.md (263 more words)Show less
4. Set the path
  • The path must start with /
  • Use the gateway name or a short descriptive slug, e.g. /geo-mcp, /cloudflare-docs
  • Check .deployment_info.json for the gateway name if available
5. Set the proxy_pass_url and mcp_endpoint
  • Check for .deployment_info.json, .roo.json, or .bedrock_agentcore.yaml for the actual deployed URL
  • proxy_pass_url: the backend URL the gateway proxies to
  • mcp_endpoint: the full MCP endpoint URL that clients connect to (if different from proxy_pass_url)
  • If no deployment info found, use placeholder: https://<GATEWAY_URL>/mcp
6. Detect transport type
  • streamable-http: most common for remote MCP servers, HTTP-based
  • sse: Server-Sent Events based transport
  • stdio: local process communication (not for remote servers)
  • Default to ["streamable-http"] for gateway-deployed servers
7. Detect auth scheme
  • Cognito JWT / bearer token: "bearer" or describe as "custom_jwt"
  • API key: "api_key"
  • No auth: "none"
  • Check deployment scripts for authorizerType, customJWTAuthorizer, bearer token usage
8. Save the output
  • Name the file {server_name}_server_card.json using the detected server name in snake_case
  • Save it in the server's folder (same folder as the source code)
  • Pretty-print with 2-space indentation
9. Validate the generated JSON

After writing the file, validate it by running this Python script via Bash:

bash
python3 -c "
import json
import sys

file_path = '<OUTPUT_FILE_PATH>'

# Step 1: JSON format check
try:
    with open(file_path) as f:
        card = json.load(f)
    print('PASS: Valid JSON format')
except json.JSONDecodeError as e:
    print(f'FAIL: Invalid JSON - {e}')
    sys.exit(1)

# Step 2: Required fields
errors = []
REQUIRED = ['server_name', 'description', 'path', 'proxy_pass_url', 'tags', 'supported_transports']
for field in REQUIRED:
    if field not in card:
        errors.append(f'Missing required field: {field}')
    elif field in ('server_name', 'description', 'path', 'proxy_pass_url') and not isinstance(card[field], str):
        errors.append(f'{field} must be a string')
    elif field in ('tags', 'supported_transports') and not isinstance(card[field], list):
        errors.append(f'{field} must be an array')

# Step 3: Path must start with /
if 'path' in card and isinstance(card['path'], str) and not card['path'].startswith('/'):
    errors.append('path must start with /')

# Step 4: proxy_pass_url must be a valid URL
if 'proxy_pass_url' in card and isinstance(card['proxy_pass_url'], str):
    if not card['proxy_pass_url'].startswith(('http://', 'https://')):
        errors.append('proxy_pass_url must start with http:// or https://')

# Step 5: tags must be non-empty
if not card.get('tags'):
    errors.append('tags must have at least one entry')

# Step 6: supported_transports must be non-empty
if not card.get('supported_transports'):
    errors.append('supported_transports must have at least one entry')
valid_transports = ['streamable-http', 'sse', 'stdio']
for t in card.get('supported_transports', []):
    if t not in valid_transports:
        errors.append(f'Unknown transport: {t}, must be one of {valid_transports}')

# Step 7: Validate tool_list is an empty array
if 'tool_list' in card:
    if not isinstance(card['tool_list'], list):
        errors.append('tool_list must be an array')
    elif len(card['tool_list']) > 0:
        errors.append('tool_list must be empty ([]) - do not populate individual tool entries')

# Step 8: num_tools must be present and a non-negative integer
if 'num_tools' in card:
    if not isinstance(card['num_tools'], int) or card['num_tools'] < 0:
        errors.append('num_tools must be a non-negative integer')

# Step 9: Report results
if errors:
    print(f'FAIL: {len(errors)} validation error(s):')
    for e in errors:
        print(f'  - {e}')
    sys.exit(1)
else:
    tool_count = len(card.get('tool_list', []))
    transport_count = len(card.get('supported_transports', []))
    print(f'PASS: All required fields present ({tool_count} tool(s), {transport_count} transport(s))')
"

Replace <OUTPUT_FILE_PATH> with the actual path of the generated JSON file.

If validation fails, fix the errors in the JSON and re-run validation until all checks pass. Do NOT report success to the user until validation passes.

10. Report results

After validation passes, output results in EXACTLY this format:

Validation passed. Here's a summary of the generated server card:

Output file: <filename>.json

Detected from code:

- Server name: <ServerName> (from <how it was detected>)
- Tools: <count> - <tool_name> (<brief description>), ...
- Transport: <streamable-http|sse|stdio> (<why>)
- Auth: <none|bearer|api_key|oauth2> (<details>)
- MCP endpoint: <URL or placeholder>
- Proxy pass URL: <URL or placeholder>
- Status: <active|beta>
- Provider: <org name> or <not detected>

If validation fails, show the errors first, fix them, re-validate, and only show the summary above after all checks pass.

Reference: Minimal server card

json
{
  "server_name": "Minimal MCP Server",
  "description": "A minimal server configuration with only required fields",
  "path": "/minimal-server",
  "proxy_pass_url": "http://minimal-server:9001/",
  "supported_transports": ["streamable-http"],
  "tags": ["mcp", "minimal", "example"]
}

Reference: Full server card with tools

json
{
  "server_name": "Geolocation MCP Server",
  "description": "IP geolocation lookup via ipwho.is, deployed on Amazon Bedrock AgentCore Gateway with Cognito JWT auth",
  "path": "/geo-mcp",
  "proxy_pass_url": "https://geo-mcp-abc123.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp",
  "supported_transports": ["streamable-http"],
  "auth_scheme": "bearer",
  "tags": ["geolocation", "ip-lookup", "aws", "bedrock-agentcore"],
  "num_tools": 1,
  "version": "1.0.0",
  "status": "active",
  "visibility": "public",
  "provider_organization": "AWS",
  "provider_url": "https://aws.amazon.com",
  "license": "MIT",
  "metadata": {
    "category": "geolocation",
    "official": false,
    "mcp_compatible": "1.0"
  },
  "tool_list": []
}

© agentic-community, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/generate-server-card of agentic-community/mcp-gateway-registry.

Open the folder on GitHubat commit ec3a197

Compare with similar skills

Generate Server Card next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Generate Server Card compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Generate Server Card this skillagentic-community/mcp-gateway-registry964—~2.7kAutomated safety check: PassApache-2.0
Skill Seekers Builderyusufkaraaslan/Skill_Seekers15k—~760Automated safety check: PassMIT
MCP Apps Builderawslabs/cli-agent-orchestrator1.4k—~1.7kAutomated safety check: PassApache-2.0
Releasejgravelle/jcodemunch-mcp2.7k—~6.5kAutomated safety check: PassCustom licence
Open PRArcadeAI/arcade-mcp1k—~2.9kAutomated safety check: PassMIT
Triage Security Advisoriesactivepieces/activepieces25k—~3.9kAutomated safety check: PassCustom licence

Similar skills

  • Skill Seekers Builder

    yusufkaraaslan/Skill_Seekers

    Detects the type of a knowledge source and uses the Skill Seekers MCP tools to turn docs, repos, PDFs or videos into packaged AI skills.

    15k GitHub stars~760 tokensUpdated 8 days ago
    Agent WorkflowsAuto-check passed
  • MCP Apps Builder

    awslabs/cli-agent-orchestrator

    Official

    Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com/modelcontextprotocol/ext-apps.

    1.4k GitHub stars~1.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Release

    jgravelle/jcodemunch-mcp

    Publishing a jMunch release (jcodemunch-mcp, jdocmunch-mcp, jdatamunch-mcp, jragmunch-cli), reviewing/merging/closing PRs, and responding to the community.

    2.7k GitHub stars~6.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Open PR

    ArcadeAI/arcade-mcp

    Prepare arcade-mcp changes for review by verifying intended behavior, filling the repository PR template, and creating or updating the PR.

    1k GitHub stars~2.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Triage Security Advisories

    activepieces/activepieces

    Triage the GitHub privately-reported vulnerability backlog for Activepieces — pull repository security advisories from the Security tab, scope-check against SECURITY.md, deeply validate each…

    25k GitHub stars~3.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Setup Context A8c

    woocommerce/woocommerce-ios

    Set up the ContextA8C MCP server for accessing Automattic internal resources (Slack, Linear, P2s, GitHub Enterprise, etc.)

    358 GitHub starsUsed in 1 repo~627 tokens
    Agent WorkflowsAuto-check: notes

More from agentic-community/mcp-gateway-registry

All 17 skills in this repo
  • Explainer

    agentic-community/mcp-gateway-registry

    Explain a GitHub issue or pull request at 100, 200, and 300 level.

    964 GitHub stars~3.8k tokensUpdated 2 days ago
    Auto-check passed
  • Debug

    agentic-community/mcp-gateway-registry

    Debug issues in the MCP Gateway Registry using first-principles thinking.

    964 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check: notes
  • Infra Sync

    agentic-community/mcp-gateway-registry

    Keep Terraform and CDK infrastructure in sync. An agent skill from agentic-community/mcp-gateway-registry.

    964 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed
  • Search Benchmark

    agentic-community/mcp-gateway-registry

    Generate a search quality benchmark for the AI Registry. An agent skill from agentic-community/mcp-gateway-registry.

    964 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Writing

    agentic-community/mcp-gateway-registry

    Write prose people will actually read. An agent skill from agentic-community/mcp-gateway-registry.

    964 GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed
  • Agentcore Register

    agentic-community/mcp-gateway-registry

    Given an MCP server URL, probe the server via curl to discover its metadata and tools, then generate a markdown file with copy-pasteable content for each field in the Amazon Bedrock AgentCore…

    964 GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed

Categories

Questions about Generate Server Card

What does Generate Server Card do?

Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL. Generate Server Card is an agent skill from agentic-community/mcp-gateway-registry. Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL.

When should I use Generate Server Card?

Generate Server Card fits situations like: tasks that involve MCP servers.

How do I install Generate Server Card in Claude Code?

Run `npx skills add agentic-community/mcp-gateway-registry --skill generate-server-card -a claude-code`. Or copy the skill folder (.claude/skills/generate-server-card in agentic-community/mcp-gateway-registry) into .claude/skills/generate-server-card in your project. Claude Code loads it when a task matches its description.

How do I install Generate Server Card in Codex?

Run `npx skills add agentic-community/mcp-gateway-registry --skill generate-server-card -a codex`. Or copy the skill folder (.claude/skills/generate-server-card in agentic-community/mcp-gateway-registry) into .agents/skills/generate-server-card in your project. Codex loads it when a task matches its description.

Can I use Generate Server Card in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agentic-community/mcp-gateway-registry --skill generate-server-card -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-server-card, .gemini/skills/generate-server-card, .github/skills/generate-server-card and .opencode/skills/generate-server-card in your project.

What does Generate Server Card need to run?

Going by SKILL.md and its folder, Generate Server Card needs the command-line tools its instructions call (python3). Our summary lists: Python 3; Docker.

Does Generate Server Card access the network?

SKILL.md names 2 domains. In commands or code: geo-mcp-abc123.gateway.bedrock-agentcore.us-east-1.amazonaws.com and aws.amazon.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Generate Server Card safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Generate Server Card use?

Generate Server Card is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Generate Server Card use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Generate Server Card?

Skills that share tags, products or a category with Generate Server Card: Skill Seekers Builder (yusufkaraaslan/Skill_Seekers, 15k stars), MCP Apps Builder (awslabs/cli-agent-orchestrator, 1.4k stars), Release (jgravelle/jcodemunch-mcp, 2.7k stars) and Open PR (ArcadeAI/arcade-mcp, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Generate Server Card?

agentic-community (a GitHub organization) maintains it in agentic-community/mcp-gateway-registry, which has 964 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 6, 2026.

Source: agentic-community/mcp-gateway-registry on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.