Skip to main content
Glama

Magic-API MCP Server

by Dwsy
MCP-MagicAPI-Assistant-设计与提示词.md7.78 kB
# Magic-API 代码 AI 助手(FastMCP 实现) 基于 [FastMCP Quickstart](https://gofastmcp.com/getting-started/quickstart) 与 Magic-API 官方脚本文档(https://www.ssssssss.org/magic-api/pages/base/script/),在本仓库中落地一个面向 Magic-API 的代码 AI 助手。助手提供标准 MCP 工具,整合现有 Python 调试脚本,能够输出 Magic-Script 语法、示例、文档索引、最佳实践、常见坑点以及端到端工作流。 --- ## 架构与运行 ```mermaid flowchart LR LLM <-->|MCP| FastMCPClient FastMCPClient <-->|stdio| MCPServer[magicapi_assistant] MCPServer --> Tools[工具: syntax / examples / docs / best_practices / pitfalls / workflow / resource_tree / path_to_id / path_detail / api_detail / call / meta] MCPServer --> Knowledge[知识库 (mcp/knowledge_base.py)] MCPServer --> HTTPClient[HTTP 客户端 (mcp/http_client.py)] HTTPClient --> MagicAPI[Magic-API 服务 (HTTP + WebSocket)] HTTPClient --> LocalTools[Python 工具脚本 extract_api_paths.py 等] ``` - **FastMCP 服务**:位于 `mcp/magicapi_assistant.py`,通过 `create_app()` 构建,默认 `stdio` 传输,可使用 `fastmcp run mcp/magicapi_assistant.py:mcp` 启动。 - **HTTP 客户端**:`mcp/http_client.py` 封装了登录、资源树、接口详情和 API 调用,继承现有工具的认证逻辑。 - **配置解析**:`mcp/config.py` 负责解析环境变量,默认匿名模式,可按需启用用户名/密码或 Token。 - **知识库**:`mcp/knowledge_base.py` 汇总 Magic-Script 语法、示例、最佳实践与踩坑项,全部数据经过官方文档核对。 ## Python 模块整合 - 新增 `magicapi_tools` 包集中封装配置、HTTP 会话、资源提取及 WebSocket 调试逻辑。 - 所有 CLI 脚本复用该包,CLI 行为保持兼容,同时利于扩展与单元测试。 - MCP 服务直接依赖 `magicapi_tools`,避免重复实现认证、路径查询与调用封装。 --- ## 依赖与安装 推荐使用 [uv](https://gofastmcp.com/getting-started/installation): ```bash # 在项目根目录 uv add fastmcp uv pip install -r requirements.txt # 或 uv sync ``` > FastMCP 未安装时,`create_app()` 会抛出提示性异常,提醒先执行 `uv add fastmcp`。 --- ## 环境变量与认证策略 | 变量 | 默认值 | 说明 | | --- | --- | --- | | `MAGIC_API_BASE_URL` | `http://127.0.0.1:10712` | HTTP 接口根地址 | | `MAGIC_API_WS_URL` | `ws://127.0.0.1:10712/magic/web/console` | WebSocket 控制台地址(暂保留浮动) | | `MAGIC_API_USERNAME` / `MAGIC_API_PASSWORD` | 空 | 认证用户名与密码 | | `MAGIC_API_TOKEN` | 空 | Header Token | | `MAGIC_API_AUTH_ENABLED` | `false` | 是否启用认证(true/false/1/on) | | `MAGIC_API_TIMEOUT_SECONDS` | `30` | HTTP 请求超时时间 | | `LOG_LEVEL` | `INFO` | MCP 服务日志等级(预留) | | `FASTMCP_TRANSPORT` | `stdio` | 可切换为 `http` 等 Transport | - 当 `MAGIC_API_AUTH_ENABLED=true` 时,`MagicAPIHTTPClient` 会先调用 `/magic/web/login`,并在请求头中附带 Token/用户名信息。 - 所有 MCP 工具在调用外部脚本或 HTTP 接口前都会透传当前环境变量,保证与原有 CLI 行为一致。 --- ## MCP 工具一览 服务注册的工具均在 `mcp/magicapi_assistant.py` 中声明: | 工具 | 输入参数 | 返回结构 | 说明 | | --- | --- | --- | --- | | `syntax(topic, locale='zh-CN')` | `topic`:`keywords/operators/types/collections/db/response` | `{topic, title, summary, sections[], doc}` | 从知识库返回 Magic-Script 语法速查,覆盖可选链、事务、集合操作等重点。 | | `examples(kind, keyword=None)` | `kind`:`basic/db/http` 等 | `{kind, examples[]}` | 返回场景化示例,支持关键字过滤。 | | `docs(index_only=True)` | 布尔 | `{index, summary?}` | Magic-API 官方文档导航,含脚本语法与模块说明。 | | `best_practices()` | 无 | `{items[]}` | SQL 注入防护、事务规范、响应统一等团队最佳实践。 | | `pitfalls()` | 无 | `{items[]}` | 逻辑短路差异、`exit` 语义、时间戳转换等常见坑点。 | | `workflow(task='create_api', with_commands=True)` | 任务类型 | `{task, description, steps[], commands?[]}` | 工作流中融入仓库 Python 脚本,默认返回命令清单。 | | `resource_tree(kind='api', search=None, csv=False, depth=None)` | 类型、搜索词、深度、CSV 开关 | `{kind, count, nodes[], csv?}` | 调用资源树 API,返回结构化节点列表,可选 CSV 输出。 | | `path_to_id(path, fuzzy=True)` | 接口路径 | `{path, matches[]}` 或错误 | 通过资源树查找接口 ID,支持模糊/精确匹配。 | | `path_detail(path, fuzzy=True)` | 接口路径 | `{path, fuzzy, results[{meta, detail|error}]}` | 直接返回详情,等价于脚本 `--path-to-detail` 功能。 | | `api_detail(file_id)` | 文件 ID | `{id, name, path, method, script, meta_raw}` | 包装 `/magic/web/resource/file/{id}`,返回完整脚本与元信息。 | | `call(method, path, params=None, data=None, headers=None)` | HTTP 方法、路径及参数 | `{status, headers, body}` | 直接发起 Magic-API 调用,自动注入调用标识头。 | | `meta()` | 无 | `{system_prompt, environment}` | 返回系统提示词与运行时环境信息,便于客户端调试。 | 错误统一返回 `{ "error": { code, message, detail? } }`,方便 LLM 进行容错处理。 --- ## 系统提示词(System Prompt) 内置于 `mcp/knowledge_base.py` 的 `SYSTEM_PROMPT`: ``` 你是 Magic-API 的代码 AI 助手。处理需求时务必: 1. 优先调用 path_detail(或 path_to_id → api_detail)获取最新脚本,避免使用过期范例; 2. SQL 参数必须使用 #{ } 占位,禁止 ${ } 字符串拼接; 3. 输出方案前同步最佳实践与潜在坑点,提醒事务、空数据、分页、时区风险; 4. 推荐配套 Python 工具命令,确保开发者可以落地执行。 ``` 当 FastMCP SDK 提供 `set_system_prompt` 接口时会自动写入;若没有,也可在客户端侧读取 `meta()` 手动设置。 --- ## 与仓库 Python 工具的协同 MCP 工具默认输出可直接执行的命令,建议结合以下脚本完成端到端流程: 1. **资源初探**:`python3 magic_api_resource_manager.py --list-tree --depth 2` 2. **路径检索**:`python3 extract_api_paths.py --url --path-to-id '/订单/'` 3. **接口详情**:`python3 extract_api_paths.py --detail <接口ID>` 4. **调试调用**:`python3 magic_api_client.py --call 'POST /order/create' --data '{"id":1}'` 5. **断点分析**:`python3 magic_api_debug_client.py` 这些命令与 MCP `workflow()` 返回的步骤保持一致,可作为人机协作背书。 --- ## 测试策略与验证命令 针对新增模块补充了轻量级单元测试: - `test/test_magicapi_config.py`:验证环境变量解析与认证注入。 - `test/test_magicapi_utils.py`:覆盖知识库输出、节点过滤与 CSV 编码。 运行方式(避免触发旧测试的语法问题): ```bash python3 -m unittest discover -s test -p 'test_magicapi_*.py' ``` 如需合并原有脚本测试,可逐个执行(例如 `python3 test_step_commands.py`)。 --- ## 验收清单 - [x] FastMCP 服务代码:`mcp/magicapi_assistant.py`、`mcp/http_client.py`、`mcp/config.py`、`mcp/knowledge_base.py` - [x] 依赖更新:`requirements.txt` 新增 `fastmcp` - [x] 单元测试:`test/test_magicapi_config.py`、`test/test_magicapi_utils.py` - [x] 文档(本文件)说明架构、配置、工具、提示词、测试与运行方式 完成上述步骤后,可使用 `fastmcp run mcp/magicapi_assistant.py:mcp` 启动服务,并在任意兼容 MCP 的客户端中体验 Magic-API 专用代码助手。

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