Skip to main content
Glama

MCPify

Point it at API docs, get an MCP server.

MCPify scrapes API documentation, uses Gemini to figure out the endpoints/auth/params, and spits out a config file. The runtime reads that config and runs an MCP server that Claude (or any MCP client) can use to call the API.

Installation

git clone https://github.com/yourusername/mcpify.git
cd mcpify
pip install -e .

Needs Python 3.11+ and a Gemini API key.

Usage

export GEMINI_API_KEY="your-api-key"

# Parse docs into a config file
mcpify parse https://api.example.com/docs -o my-api.json

# Run the server
mcpify serve my-api.json --auth "your-api-token"

# Or do both at once
mcpify quickstart https://api.example.com/docs --auth "token"

To use with Claude Desktop, add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "my-api": {
      "command": "mcpify",
      "args": ["serve", "/path/to/my-api.json", "--auth", "your-token"]
    }
  }
}

CLI

mcpify parse <url> - Scrape docs and generate config

mcpify parse https://docs.github.com/en/rest -o github.json --max-pages 15

Option

Description

-o, --output

Output file (default: mcpify-config.json)

-m, --max-pages

Max pages to scrape (default: 10)

--no-follow

Don't follow links

-k, --api-key

Gemini API key (or use env var)

--model

Gemini model (default: gemini-2.0-flash)

mcpify serve <config> - Run MCP server

mcpify serve my-api.json --auth "Bearer token" --transport stdio

Option

Description

-a, --auth

Auth token for API calls

-t, --transport

stdio, sse, or http (default: stdio)

mcpify show <config> - Print config as table

mcpify quickstart <url> - Parse and serve in one shot

Config Format

The generated JSON looks like this:

{
  "name": "my-api",
  "description": "Description of the API",
  "base_url": "https://api.example.com/v1",
  "version": "1.0.0",
  "auth": {
    "type": "bearer",
    "header_name": "Authorization",
    "prefix": "Bearer "
  },
  "tools": [
    {
      "name": "get_users",
      "description": "Retrieve a list of users",
      "method": "GET",
      "path": "/users",
      "parameters": [
        {
          "name": "limit",
          "type": "integer",
          "description": "Max results to return",
          "required": false,
          "location": "query",
          "default": 10
        }
      ],
      "response": {
        "description": "Array of user objects"
      },
      "tags": ["users"]
    }
  ]
}

Auth types: none, api_key, bearer, oauth2

Parameter locations: query, path, header, body

Python API

from mcpify.scraper import scrape_documentation
from mcpify.parser import parse_documentation
from mcpify.runtime import create_mcp_server

# Scrape docs
docs = await scrape_documentation("https://api.example.com/docs")

# Parse with Gemini
config = await parse_documentation(docs)

# Save config
config_path = "my-api.json"
with open(config_path, "w") as f:
    f.write(config.to_json())

# Create and run server
server = create_mcp_server(config, auth_token="your-token")
server.run()

Examples

# GitHub
mcpify parse https://docs.github.com/en/rest/users -o github.json
mcpify serve github.json --auth "ghp_your_token"

# Stripe
mcpify parse https://stripe.com/docs/api -o stripe.json
mcpify serve stripe.json --auth "sk_test_your_key"

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/raghav-misra/mcpify'

If you have feedback or need assistance with the MCP directory API, please join our Discord server