Skip to main content
Glama

Magic-API MCP Server

by Dwsy
magic_api_client.py2.23 kB
#!/usr/bin/env python3 """Magic-API WebSocket 客户端 CLI。""" from __future__ import annotations import argparse import asyncio import sys from magicapi_tools import MagicAPISettings from magicapi_tools import MagicAPIWebSocketClient, parse_call_arg, run_custom_api_call def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Magic-API WebSocket 客户端") parser.add_argument("--call", help="执行 API 调用,格式 'METHOD PATH'") parser.add_argument("--params", help="查询参数字符串,例如 'a=1&b=2'") parser.add_argument("--data", help="请求体 JSON 字符串") parser.add_argument("--listen-only", action="store_true", help="仅连接 WebSocket 监听日志") return parser.parse_args() def build_client(settings: MagicAPISettings) -> MagicAPIWebSocketClient: return MagicAPIWebSocketClient( settings.ws_url, settings.base_url, username=settings.username if settings.auth_enabled else None, password=settings.password if settings.auth_enabled else None, ) def listen_only(client: MagicAPIWebSocketClient) -> None: async def runner(): try: await client.connect() except KeyboardInterrupt: print("\n⏹️ 监听已停止") finally: await client.close() asyncio.run(runner()) def execute_call( client: MagicAPIWebSocketClient, call_arg: str, params: str | None, data: str | None, ) -> None: try: method, path = parse_call_arg(call_arg) except ValueError as exc: print(f"❌ 参数错误: {exc}") sys.exit(1) run_custom_api_call( client, method, path, params=params, data=data, enable_websocket=False, ) def main() -> None: args = parse_args() if not args.listen_only and not args.call: print("❌ 必须指定 --call 或 --listen-only") sys.exit(1) settings = MagicAPISettings.from_env() client = build_client(settings) if args.listen_only: listen_only(client) return execute_call(client, args.call, args.params, args.data) if __name__ == "__main__": main()

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/Dwsy/magic-api-mcp-server'

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