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

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