Skip to main content
Glama

Skill-to-MCP

main.py3.84 kB
import enum import logging import sys import click from .tools import * # noqa: F403 import all tools to register them class EnvironmentType(enum.Enum): """Enum to define environment type.""" PRODUCTION = enum.auto() DEVELOPMENT = enum.auto() @click.command(name="run") @click.option( "-t", "--transport", "transport", type=str, help="MCP transport option. Defaults to 'stdio'.", default="stdio", envvar="MCP_TRANSPORT", ) @click.option( "-p", "--port", "port", type=int, help="Port of MCP server. Defaults to '8000'", default=8000, envvar="MCP_PORT", required=False, ) @click.option( "-h", "--host", "hostname", type=str, help="Hostname of MCP server. Defaults to '0.0.0.0'", default="0.0.0.0", envvar="MCP_HOSTNAME", required=False, ) @click.option("-v", "--version", "version", is_flag=True, help="Get version of package.") @click.option( "-e", "--env", "environment", type=click.Choice(["development", "production"], case_sensitive=False), default="development", envvar="MCP_ENVIRONMENT", help="MCP server environment. Defaults to 'development'.", ) @click.option( "-s", "--skills-dir", "skills_dir", type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True), help="Path to skills directory containing SKILL.md files.", envvar="SKILLS_DIR", required=False, ) def run_app( transport: str = "stdio", port: int = 8000, hostname: str = "0.0.0.0", environment: str = "development", version: bool = False, skills_dir: str | None = None, ): """Run the MCP server "skill-to-mcp". Convert AI Skills (following Claude Skills format) into MCP server resources. This server exposes skills as MCP tools, allowing LLM applications to discover and access specialized knowledge and workflows stored in SKILL.md files. Configuration options: - Skills directory: Set via "-s/--skills-dir" or SKILLS_DIR environment variable If not provided, uses default help skill with usage instructions - Transport: Set via "-t/--transport" or MCP_TRANSPORT environment variable (default: "stdio") - Port: Set via "-p/--port" or MCP_PORT environment variable (default: 8000) - Hostname: Set via "-h/--host" or MCP_HOSTNAME environment variable (default: "0.0.0.0") - Environment: Set via "-e/--env" or MCP_ENVIRONMENT environment variable (default: "development") """ if version is True: from skill_to_mcp import __version__ click.echo(__version__) sys.exit(0) logger = logging.getLogger(__name__) # Handle skills directory - use default if not provided if not skills_dir: # Use package's default skills directory containing the help skill from pathlib import Path package_dir = Path(__file__).parent skills_dir = str(package_dir / "default_skills") logger.warning( "No skills directory provided. Using default help skill. " "To use custom skills, set --skills-dir or SKILLS_DIR environment variable." ) else: logger.info(f"Using skills directory: {skills_dir}") # Initialize MCP server with skills directory from skill_to_mcp.mcp import initialize_mcp mcp = initialize_mcp(skills_dir) if environment == "development": logger.info("Starting MCP server (DEVELOPMENT mode)") if transport == "http": mcp.run(transport=transport, port=port, host=hostname) else: mcp.run(transport=transport) else: raise NotImplementedError() # logger.info("Starting Starlette app with Uvicorn in PRODUCTION mode.") # uvicorn.run(app, host=hostname, port=port) if __name__ == "__main__": run_app()

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/biocontext-ai/skill-to-mcp'

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