Skip to main content
Glama

Magic-API MCP Server

by Dwsy
类方法检索工具使用指南.md12.7 kB
# Magic-API 类和方法检索工具使用指南 ## 概述 `extract_class_methods.py` 是一个专门用于检索 Magic-API 中类和方法信息的命令行工具。它基于 Magic-API 的 `/magic/web/classes` 和 `/magic/web/class` 两个端点,提供类搜索、方法查询和详细信息查看功能。 ## 功能特性 - 📦 **类信息检索**: 获取所有可用的脚本类、扩展类和全局函数 - 🔍 **关键词搜索**: 搜索包含指定关键词的类或函数 - 🎯 **方法搜索**: 查找包含特定方法的类 - 📋 **类详情查看**: 显示指定类的完整方法和字段信息 - 📄 **JSON输出**: 支持结构化数据输出,便于程序处理 ## 安装依赖 确保已安装必要的依赖包: ```bash pip install -r requirements.txt ``` ## 使用方法 ### 基本语法 ```bash python3 extract_class_methods.py --url <服务器地址> [选项] ``` ### 命令选项 | 选项 | 参数 | 说明 | |------|------|------| | `--url` | URL | Magic-API 服务器基础 URL(默认: http://127.0.0.1:10712/) | | `--limit` | NUMBER | 限制输出结果的最大数量(默认: 10,节约大模型 token) | | `--page` | NUMBER | 指定页码进行翻页浏览(默认: 1,从第1页开始) | | `--page-size` | NUMBER | 每页显示的数量(默认: 10,与 limit 配合使用) | | `--list` | 无 | 列出所有可用的类、扩展和函数 | | `--search` | KEYWORD | 搜索包含关键词的类、扩展或函数 | | `--regex` | PATTERN | 使用正则表达式搜索类、扩展或函数 | | `--case-sensitive` | 无 | 搜索时区分大小写(默认不区分) | | `--logic` | and/or | 多关键词搜索逻辑(默认 or) | | `--scope` | all/class/method/field | 搜索范围(默认 all) | | `--exact` | 无 | 精确匹配关键词(默认包含匹配) | | `--exclude` | KEYWORD | 排除包含指定关键词的结果 | | `--txt` | 无 | 显示压缩格式的类信息(classes.txt) | | `--txt-search` | KEYWORD | 在压缩格式类信息中搜索关键词 | | `--class` | CLASS_NAME | 显示指定类的详细信息 | | `--method` | METHOD_NAME | 搜索包含指定方法名的类 | | `--json` | 无 | 以 JSON 格式输出结果 | | `--csv` | 无 | 以 CSV 格式输出结果 | | `--timeout` | SECONDS | HTTP 请求超时时间(默认: 30秒) | ### 使用示例 #### 1. 列出所有类信息 ```bash # 基本列表显示(默认限制10项) python3 extract_class_methods.py --url http://127.0.0.1:9999 --list # 限制显示前5项(节约大模型token) python3 extract_class_methods.py --url http://127.0.0.1:9999 --list --limit 5 # 翻页浏览第2页(每页3项) python3 extract_class_methods.py --url http://127.0.0.1:9999 --list --page 2 --page-size 3 # JSON格式输出 python3 extract_class_methods.py --url http://127.0.0.1:9999 --list --json ``` 输出示例: ``` === Magic-API 类和方法检索 === 📦 脚本类 (15 个): • DateUtil • HttpClient • JSONUtil • SQLModule 🔧 扩展类 (8 个): • CacheModule • FileUtil • LogUtil ⚡ 全局函数 (23 个): • assert • debug • log ``` #### 2. 搜索关键词 ```bash # 搜索包含 "http" 的类 python3 extract_class_methods.py --url http://127.0.0.1:9999 --search http # 限制搜索结果数量(节约token) python3 extract_class_methods.py --url http://127.0.0.1:9999 --search http --limit 3 # 搜索结果翻页浏览 python3 extract_class_methods.py --url http://127.0.0.1:9999 --search http --page 1 --page-size 2 # JSON格式输出 python3 extract_class_methods.py --url http://127.0.0.1:9999 --search http --json ``` 输出示例: ``` 🔍 搜索结果: 'http' (共 3 个匹配) 📦 匹配的脚本类 (2 个): • HttpClient • HttpUtil ⚡ 匹配的全局函数 (1 个): • httpGet ``` #### 3. 搜索方法 ```bash # 查找包含 "get" 方法的类 python3 extract_class_methods.py --url http://127.0.0.1:9999 --method get # JSON格式输出 python3 extract_class_methods.py --url http://127.0.0.1:9999 --method get --json ``` 输出示例: ``` 🔍 方法搜索结果: 'get' (共 8 个匹配) 📦 包含该方法的脚本类 (5 个): • HttpClient • JSONUtil • SQLModule • CacheModule 🔧 包含该方法的扩展类 (3 个): • FileUtil • LogUtil • ConfigUtil ``` #### 4. 查看类详情 ```bash # 查看 HttpClient 类的详细信息 python3 extract_class_methods.py --url http://127.0.0.1:10712 --class HttpClient # JSON格式输出 python3 extract_class_methods.py --url http://127.0.0.1:10712 --class HttpClient --json # CSV格式输出 python3 extract_class_methods.py --url http://127.0.0.1:10712 --class HttpClient --csv #### 5. 增强搜索功能 ##### 5.1 正则表达式搜索 ```bash # 搜索以"Http"开头的类 python3 extract_class_methods.py --url http://127.0.0.1:10712 --regex "^Http" # 搜索包含数字的类名 python3 extract_class_methods.py --url http://127.0.0.1:10712 --regex ".*[0-9]+.*" # 搜索以"Util"结尾的类 python3 extract_class_methods.py --url http://127.0.0.1:10712 --regex "Util$" ``` ##### 5.2 大小写敏感搜索 ```bash # 区分大小写搜索(只会匹配大写的"Util") python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "Util" --case-sensitive # 默认不区分大小写(会匹配"util"、"Util"、"UTIL"等) python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "util" ``` ##### 5.3 多关键词搜索 ```bash # OR逻辑:包含"get"或"post"的类(默认) python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "get post" # AND逻辑:同时包含"get"和"post"的类 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "get post" --logic and ``` ##### 5.4 搜索范围限定 ```bash # 仅搜索类名 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "Client" --scope class # 仅搜索方法名 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "parse" --scope method # 仅搜索字段名 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "timeout" --scope field # 搜索全部(类名、方法名、字段名、参数名、返回类型等) python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "String" --scope all ``` ##### 5.5 精确匹配 vs 包含匹配 ```bash # 包含匹配(默认):类名中包含"Http"的 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "Http" # 精确匹配:类名完全等于"Http"的 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "Http" --exact ``` ##### 5.6 排除搜索 ```bash # 搜索包含"Util"的类,但排除包含"Test"的 python3 extract_class_methods.py --url http://127.0.0.1:10712 --search "Util" --exclude "Test" # 结合其他选项使用 python3 extract_class_methods.py --url http://127.0.0.1:10712 --regex ".*Util.*" --exclude "Mock" --case-sensitive ``` ##### 5.7 组合使用示例 ```bash # 复杂搜索:大小写敏感,正则表达式,仅搜索方法,排除测试相关 python3 extract_class_methods.py --url http://127.0.0.1:10712 \ --regex "get.*Data" \ --case-sensitive \ --scope method \ --exclude "Test" \ --csv ``` #### 6. 压缩类信息功能 ##### 6.1 显示压缩格式类信息 ```bash # 显示原始压缩格式类信息 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt # CSV格式输出压缩类信息 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt --csv ``` 输出示例: ``` === 压缩格式类信息 === java.lang:String,Boolean,Integer,Long,Double,Float java.util:List,Map,Set,ArrayList,HashMap,HashSet org.springframework.web.bind.annotation:RequestMapping,GetMapping,PostMapping ``` ##### 6.2 在压缩类信息中搜索 ```bash # 搜索包含"String"的类 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt-search "String" # 限制压缩搜索结果数量 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt-search "String" --limit 5 # 压缩搜索结果翻页 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt-search "String" --page 2 --page-size 3 # 区分大小写搜索 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt-search "List" --case-sensitive # CSV格式输出搜索结果 python3 extract_class_methods.py --url http://127.0.0.1:10712 --txt-search "Map" --csv ``` 输出示例: ``` 🔍 压缩类信息搜索: 关键词 'String' (不区分大小写) 📦 包: java.lang • String ✓ 📦 包: java.util • String • StringBuffer • StringBuilder 找到 4 个类,分布在 2 个包中 ``` ##### 6.3 压缩格式说明 `/classes.txt` 端点返回的压缩格式具有以下特点: - **格式结构**: `包名:类名1,类名2,类名3` - **每行一个包**: 同一包的类用逗号分隔 - **过滤规则**: 不包含内部类($符号)和 `package-info` 类 - **排序**: 类名按字典序排序 - **用途**: 提供快速的类浏览和搜索功能 ``` 输出示例: ``` 📋 类详情: HttpClient 实例 1: 方法: • java.lang.String get(java.lang.String) • java.lang.String post(java.lang.String, java.lang.Object) • java.lang.String put(java.lang.String, java.lang.Object) • java.lang.String delete(java.lang.String) • void setTimeout(int) 字段: • int timeout • java.lang.String userAgent ``` #### CSV 输出格式说明 不同操作的 CSV 输出格式: **1. --list --csv**: 列出所有类 ```csv type,name class,HttpClient class,JSONUtil extension,java.util.Iterator function,assert ``` **2. --search KEYWORD --csv**: 搜索结果 ```csv type,name,keyword class,HttpClient,http extension,java.util.Iterator,util function,assert,http ``` **3. --method METHOD_NAME --csv**: 方法搜索结果 ```csv type,class_name,method_name class,HttpClient,get extension,java.util.Iterator,get ``` **4. --class CLASS_NAME --csv**: 类详情 ```csv class_name,method_name,return_type,parameters,field_name,field_type HttpClient,get,java.lang.String,java.lang.String arg0,, HttpClient,post,java.lang.String,java.lang.String arg0; java.lang.Object arg1,, HttpClient,,int,,timeout HttpClient,,java.lang.String,,userAgent ``` ## API 端点说明 该工具基于以下 Magic-API 端点: ### `/magic/web/classes` (POST) - **用途**: 获取所有类信息 - **返回数据**: - `classes`: 脚本类映射 - `extensions`: 扩展脚本类 - `functions`: 全局函数映射 ### `/magic/web/class` (POST) - **用途**: 获取单个类详细信息 - **请求参数**: `className` (类名) - **返回数据**: 指定类的 ScriptClass 集合 ### `/magic/web/classes.txt` (GET) - **用途**: 获取压缩格式的类信息文本 - **返回格式**: `text/plain` - **压缩格式**: `包名:类名1,类名2,类名3`(每行一个包) - **特点**: - 过滤内部类(包含 `$` 符号)和 `package-info` 类 - 类名按字典序排序 - 提供快速的类浏览和搜索功能 ## 注意事项 1. **认证要求**: 这些端点标记为 `@Valid(requireLogin = false)`,通常不需要登录认证,但具体取决于服务器配置。 2. **网络连接**: 确保能够访问指定的 Magic-API 服务器地址。 3. **超时设置**: 默认超时时间为30秒,可根据网络情况调整。 4. **数据格式**: 实际的类详情格式可能因 Magic-API 版本和配置而异。 ## 故障排除 ### 常见错误 1. **连接失败** ``` 错误:获取类信息失败: Connection refused ``` - 检查服务器地址和端口是否正确 - 确认 Magic-API 服务正在运行 2. **认证失败** ``` 错误:API 返回错误: {"success": false, "message": "Unauthorized"} ``` - 检查服务器是否需要认证 - 可能需要通过其他方式获取认证令牌 3. **类不存在** ``` ⚠️ 类 'UnknownClass' 没有可用的详细信息 ``` - 确认类名拼写正确 - 检查该类是否在当前 Magic-API 实例中注册 ### 调试技巧 - 使用 `--json` 选项查看原始响应数据 - 检查服务器日志了解具体的错误原因 - 使用浏览器直接访问端点进行验证 ## 集成使用 该工具可以与其他脚本结合使用: ```bash # 获取所有类名列表,用于其他脚本处理 python3 extract_class_methods.py --url http://127.0.0.1:9999 --list --json | jq '.classes | keys[]' # 批量检查特定方法的分布 python3 extract_class_methods.py --url http://127.0.0.1:9999 --method execute --json > method_analysis.json ``` ## 版本兼容性 - Magic-API v2.x+ - Python 3.7+ - requests 2.25.0+

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