Skip to main content
Glama

Magic-API MCP Server

by Dwsy
开发者指南.md7.3 kB
# Magic-API 工具开发者指南 本文档面向维护者与扩展开发者,介绍代码结构、模块职责、运行调试方式与贡献规范。 ## 代码结构概览 ``` magic-api-mcp-server/ ├── docs/ # 用户 & 开发者文档 ├── magicapi_tools/ # 核心可复用模块 │ ├── __init__.py # 导出统一 API │ ├── settings.py # MagicAPISettings 环境解析 │ ├── http_client.py # HTTP 调用封装 │ ├── extractor.py # 资源树遍历、路径匹配工具 │ ├── resource_manager.py # 资源管理类(增删改、锁定) │ ├── ws.py # WebSocket 客户端与调试器实现 │ └── mcp/ # MCP 工具实现(ApiTools、ResourceTools 等) ├── mcp/ # 兼容包,转发至 magicapi_mcp │ ├── __init__.py # 兼容导出 │ ├── config.py # 指向 magicapi_mcp.config │ ├── knowledge_base.py # 指向 magicapi_tools.knowledge_base │ └── magicapi_assistant.py # 指向 magicapi_mcp.magicapi_assistant ├── extract_api_paths.py # CLI:资源树提取(调用 magicapi_tools) ├── magic_api_client.py # CLI:WebSocket 日志 / API 调用 ├── magic_api_debug_client.py # CLI:断点调试入口 ├── magic_api_resource_manager.py # CLI:资源管理操作 └── test/ # 针对工具模块的单元测试 ``` ## 模块职责说明 ### `magicapi_tools.settings` - `MagicAPISettings.from_env()`:统一解析 `MAGIC_API_*` 环境变量。 - `inject_auth()` / `to_requests_kwargs()`:在需要认证时自动注入 Header。 ### `magicapi_tools.http_client` - `MagicAPIHTTPClient`:封装 `/magic/web/resource` 系列请求。 - `resource_tree()` 返回完整资源树 JSON。 - `api_detail(file_id)` 获取脚本详情。 - `call_api(method, path, ...)` 直接访问业务接口。 - CLI 与 MCP 服务均通过该类访问 Magic-API。 ### `magicapi_tools.extractor` - `load_resource_tree()`:支持本地 JSON、HTTP 两种加载方式。 - `extract_api_endpoints()`:扁平化生成 `method path [name]` 列表。 - `find_api_id_by_path()` / `find_api_detail_by_path()`:提供 `--path-to-id/--path-to-detail` 核心逻辑。 - `filter_endpoints()`:统一的正则/方法/关键字过滤。 - `format_file_detail()`:格式化详情输出,供 CLI/MCP 复用。 ### `magicapi_tools.ws` - `MagicAPIWebSocketClient`:基础日志监听 + API 调用。 - `MagicAPIDebugClient`:断点调试核心,配合 `DebugCompleter` 和 `setup_readline()`。 - `run_custom_api_call()`:可选择是否建立 WebSocket 监听。 - 所有 CLI 均从此处导入清晰的接口,避免冗余实现。 ### `magicapi_tools.resource_manager` - `MagicAPIResourceManager`:封装分组增删改、资源锁定/解锁、保存脚本等操作。 - 仍保留原脚本输出日志行为,便于排查请求结果。 ### `magicapi_tools.mcp` - `common.py`:`error_response`、`path_to_id_impl`、`find_api_details_by_path_impl` 等通用逻辑。 - `ApiTools` / `ResourceManagementTools` / `QueryTools` / `DocumentationTools` / `DebugTools` / `SystemTools`:统一注册 FastMCP 工具,直接复用上述客户端与资源管理组件。 - `__init__.py`:聚合导出供 `magicapi_mcp` 与兼容包 `mcp` 调用。 ## MCP 服务工具 `magicapi_mcp/magicapi_assistant.py` 负责组合工具并暴露 `create_app()`,其内部逻辑全部来自 `magicapi_tools.mcp`;`mcp/` 目录仅用于兼容旧引用路径。 - `path_to_id` / `path_detail`:调用 `magicapi_tools.mcp.common` 的路径解析实现。 - `resource_tree`:`MagicAPIResourceTools` 负责资源树遍历与 CSV 导出。 - `call`、`api_detail`、`workflow`:共用 `MagicAPIHTTPClient`、知识库与工作流模板。 运行方法(建议使用 uv): ```bash # 查看 fastmcp 使用文档 uv tool run fastmcp --help # 启动 MCP 服务(默认 stdio) uv tool run fastmcp run magicapi_mcp/magicapi_assistant.py:tools --no-banner ``` > 若所在系统限制 `uv` 写入缓存,可提前执行 `uv tool run fastmcp --help` 拉取工具。 ## 测试与质量保障 - **单元测试**: ```bash python3 -m unittest discover -s test -p 'test_magicapi_*.py' ``` 覆盖配置解析、资源过滤、CSV 导出逻辑。 - **场景脚本**:`python3 test_step_commands.py` 验证断点消息格式。 - **开发建议**: 1. 修改 CLI 前优先更新 `magicapi_tools` 中的对应模块;CLI 层仅负责参数解析与打印。 2. 新增工具时请补充测试或示例,保持 `test/` 目录命名规范(`test_*.py`)。 3. 引入第三方库需更新 `requirements.txt` 并给出用途注释。 ## 扩展指引 1. **新增 MCP 工具**:在 `magicapi_assistant.py` 中调用 `magicapi_tools` 或自定义模块,并更新 `MCP-MagicAPI-Assistant-设计与提示词.md`。 2. **CLI 扩展**:使用 `argparse`,解析完成后调用 `magicapi_tools` 对应方法,保持入口简洁;示例可参考新的 `extract_api_paths.py`。 3. **自定义脚本/自动化**: ```python from magicapi_tools import MagicAPISettings, MagicAPIHTTPClient, find_api_detail_by_path settings = MagicAPISettings.from_env() client = MagicAPIHTTPClient(settings) details = find_api_detail_by_path('/demo/path', client=client) ``` 4. **调试 WebSocket**:可直接使用 `MagicAPIDebugClient`,或在 CLI 基础上替换输入来源,实现自动脚本。 ## 发布流程建议 1. 运行单元测试与关键脚本: ```bash python3 -m unittest discover -s test -p 'test_magicapi_*.py' python3 test_step_commands.py ``` 2. 通过 `uv tool run fastmcp run ...` 验证 MCP 服务最小可运行。 3. 更新文档:`docs/用户指南.md`、`docs/开发者指南.md`、`README.md` 梳理兼容性变更。 4. 提交信息建议:`refactor(magicapi_tools): ...` 或 `feat(mcp): ...`。 ## 常见维护问题 | 问题 | 处理建议 | | --- | --- | | 需要访问历史脚本范例 | 使用 `path_detail`(MCP 或 CLI)获取数据库最新版本,避免依赖过期示例。 | | `uv tool run fastmcp` 报权限错误 | 首次拉取会写入 `~/.cache/uv`,若目录受限可指定 `UV_CACHE_DIR` 或手动执行 `uv tool` 命令时开启权限。 | | 调试客户端阻塞 | `MagicAPIDebugClient` 已在内部启用线程 + `asyncio` 事件循环,保持 CLI 代码简洁;若要脚本化调用,建议直接复用类而非 CLI。 | | 需要新增测试类型 | 可在 `test/` 下增加 `test_magicapi_xxx.py`,使用标准 `unittest`。 | ## 参考文档 - `MCP-MagicAPI-Assistant-设计与提示词.md`:整体架构与 MCP 工具说明 - `docs/用户指南.md`:终端用户操作手册 - 官方参考: - [FastMCP Quickstart](https://gofastmcp.com/getting-started/quickstart) - [Magic-API 脚本文档](https://www.ssssssss.org/magic-api/pages/base/script/) --- 如需进一步讨论架构或新增功能规范,可在提交 PR 前补充设计说明,确保所有 CLI/MCP 均通过 `magicapi_tools` 模块共用逻辑。

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