Skip to main content
Glama

Magic-API MCP Server

by Dwsy
parameter_metadata_example.md8.38 kB
# FastMCP 参数元数据示例 本文档展示了为 Magic-API 助手工具添加的参数元数据示例,提升了LLM的参数理解和使用体验。 ## 参数元数据特性 ### 🎯 核心优势 - **智能提示**: LLM 能理解每个参数的用途和格式 - **类型验证**: 使用 Literal 和 Field 约束参数值范围 - **默认值处理**: 清晰区分必需参数和可选参数 - **中文描述**: 为中文用户提供友好的参数说明 ### 🔧 实现方式 #### **简单字符串描述** ```python from typing import Annotated param: Annotated[str, "参数的简短描述"] ``` #### **高级元数据 (推荐)** ```python from typing import Annotated from pydantic import Field param: Annotated[ Type, Field( description="详细的参数描述", ge=最小值, # 大于等于 le=最大值, # 小于等于 pattern="正则表达式" # 字符串模式 ) ] = 默认值 ``` ## 📋 参数元数据示例 ### 1. 资源树查询 - resource_tree ```python def resource_tree( kind: Annotated[ Literal["api", "function", "task", "datasource", "all"], Field(description="资源类型过滤器:api(API接口)、function(函数)、task(任务)、datasource(数据源)或all(全部)") ] = "api", search: Annotated[ Optional[str], Field(description="简单搜索关键词,支持部分匹配(兼容性保留参数)") ] = None, csv: Annotated[ bool, Field(description="是否以CSV格式输出资源信息") ] = False, depth: Annotated[ Optional[int], Field(description="限制显示的资源树深度,正整数", ge=1, le=10) ] = None, method_filter: Annotated[ Optional[str], Field(description="HTTP方法过滤器,如'GET'、'POST'、'PUT'、'DELETE'") ] = None, path_filter: Annotated[ Optional[str], Field(description="路径正则表达式过滤器,用于匹配API路径") ] = None, name_filter: Annotated[ Optional[str], Field(description="名称正则表达式过滤器,用于匹配资源名称") ] = None, query_filter: Annotated[ Optional[str], Field(description="通用查询过滤器,支持复杂的搜索条件") ] = None, ) -> Dict[str, Any]: ``` **LLM 理解效果**: - 知道 `kind` 参数必须是预定义的选项之一 - 理解 `depth` 参数的取值范围 (1-10) - 清楚每个过滤器的用途和格式 ### 2. 分组创建 - create_group ```python def create_group( name: Annotated[ Optional[str], Field(description="分组名称(单个分组创建时必需)") ] = None, parent_id: Annotated[ str, Field(description="父分组ID,根分组使用'0'") ] = "0", group_type: Annotated[ Literal["api", "function", "task", "datasource"], Field(description="分组类型:api(API接口组)、function(函数组)、task(任务组)、datasource(数据源组)") ] = "api", path: Annotated[ Optional[str], Field(description="分组路径,可选的URL路径前缀") ] = None, options: Annotated[ Optional[str], Field(description="分组选项配置,JSON格式字符串") ] = None, groups_data: Annotated[ Optional[str], Field(description="批量分组数据,JSON数组格式,每个对象包含name等字段(批量操作时使用)") ] = None, ) -> Dict[str, Any]: ``` **LLM 理解效果**: - 区分单个操作和批量操作的参数 - 理解 `group_type` 的有效选项 - 知道必需参数和可选参数的区别 ### 3. API接口创建 - create_api ```python def create_api( group_id: Annotated[ Optional[str], Field(description="分组ID(单个API创建时必需),指定API所属的分组") ] = None, name: Annotated[ Optional[str], Field(description="API接口名称(单个API创建时必需)") ] = None, method: Annotated[ Optional[Literal["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]], Field(description="HTTP请求方法(单个API创建时必需)") ] = None, path: Annotated[ Optional[str], Field(description="API路径,如'/api/users'(单个API创建时必需)") ] = None, script: Annotated[ Optional[str], Field(description="API执行脚本,Magic-Script代码(单个API创建时必需)") ] = None, apis_data: Annotated[ Optional[str], Field(description="批量API数据,JSON数组格式,每个对象包含group_id,name,method,path,script字段(批量操作时使用)") ] = None, ) -> Dict[str, Any]: ``` **LLM 理解效果**: - 知道HTTP方法的有效选项 - 理解批量操作的JSON格式要求 - 清楚每个参数在不同操作模式下的要求 ### 4. API调用 - call ```python def call( method: Annotated[ Literal["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"], Field(description="HTTP请求方法") ], path: Annotated[ str, Field(description="API请求路径,如'/api/users'或'GET /api/users'") ], params: Annotated[ Optional[Mapping[str, Any]], Field(description="URL查询参数字典") ] = None, data: Annotated[ Optional[Any], Field(description="请求体数据,可以是字典、字符串或其他格式") ] = None, headers: Annotated[ Optional[Mapping[str, str]], Field(description="HTTP请求头字典") ] = None, ) -> Dict[str, Any]: ``` **LLM 理解效果**: - 理解HTTP方法的完整选项 - 知道各种参数的数据类型 - 清楚可选参数的用途 ### 5. 断点设置 - set_breakpoint ```python def set_breakpoint( line_number: Annotated[ Optional[int], Field(description="单个断点行号,正整数(单个断点设置时使用)", ge=1) ] = None, line_numbers: Annotated[ Optional[str], Field(description="断点行号列表,JSON数组格式如'[5,10,15]'(批量断点设置时使用)") ] = None, ) -> Dict[str, Any]: ``` **LLM 理解效果**: - 知道行号必须是正整数 - 理解批量操作的JSON数组格式 - 清楚单个和批量操作的参数区别 ## 🎯 验证约束示例 ### **数值范围约束** ```python depth: Annotated[ Optional[int], Field(description="限制显示的资源树深度,正整数", ge=1, le=10) ] = None ``` ### **字符串模式约束** ```python path: Annotated[ str, Field(description="API路径", pattern=r"^/") ] = "/api/default" ``` ### **枚举值约束** ```python method: Annotated[ Literal["GET", "POST", "PUT", "DELETE"], Field(description="HTTP请求方法") ] ``` ## 📈 改进效果 ### **LLM 体验提升** | 方面 | 改进前 | 改进后 | |-----|-------|-------| | **参数理解** | 仅函数名推断 | 详细描述 + 类型约束 | | **错误避免** | 运行时错误 | 约束检查 + 提示 | | **使用效率** | 试错学习 | 直接正确调用 | | **功能发现** | 被动探索 | 主动引导 | ### **开发体验提升** - **IDE 支持**: 类型检查和自动补全 - **文档生成**: 自动生成API文档 - **维护便利**: 参数变更时自动验证 - **团队协作**: 标准化参数说明 ## 🔧 最佳实践 ### **参数描述规范** 1. **清晰简洁**: 用一句话说明参数用途 2. **格式示例**: 提供具体的数据格式示例 3. **约束说明**: 明确参数的取值范围和限制 4. **使用场景**: 说明在什么情况下使用该参数 ### **类型选择建议** - **必需参数**: 使用具体类型,不设默认值 - **可选参数**: 使用 `Optional[Type]`,设置合理的默认值 - **枚举参数**: 使用 `Literal["选项1", "选项2"]` - **复杂验证**: 使用 `Field` 的 `ge`、`le`、`pattern` 等约束 ### **批量操作设计** - **统一接口**: 单个参数和批量参数使用不同名称 - **格式明确**: 在描述中说明JSON格式要求 - **互斥逻辑**: 单个和批量参数通常不同时使用 这套参数元数据体系让 Magic-API 助手具备了企业级的工具参数定义标准,大大提升了LLM的理解能力和使用体验!🚀

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