MCP Hub
Back to servers

MCPify

Automatically generates and runs MCP servers by scraping API documentation and using Gemini to extract endpoints and configuration. It enables users to interact with any REST API through MCP-compatible clients by simply providing a documentation URL.

Updated
Jan 23, 2026

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
OptionDescription
-o, --outputOutput file (default: mcpify-config.json)
-m, --max-pagesMax pages to scrape (default: 10)
--no-followDon't follow links
-k, --api-keyGemini API key (or use env var)
--modelGemini model (default: gemini-2.0-flash)

mcpify serve <config> - Run MCP server

mcpify serve my-api.json --auth "Bearer token" --transport stdio
OptionDescription
-a, --authAuth token for API calls
-t, --transportstdio, 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

Reviews

No reviews yet

Sign in to write a review