Skip to main content
Glama

list_wwdc_videos

Browse WWDC session videos with offline transcripts and code. Filter by year, topic, or code examples to discover Apple developer content.

Instructions

Browse WWDC session videos with full offline access to transcripts and code. Shows all available sessions with filtering options. Use this to discover WWDC content, find sessions by topic, or identify videos with code examples.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yearNo
topicNo
hasCodeNo
limitNo

Implementation Reference

  • src/mcp.ts:90-132 (registration)
    Dynamically parses tool descriptions from remote API (for mcpID 1777316659692547) and registers each tool (including 'list_wwdc_videos') with the MCP server using dynamic Zod schemas and a generic proxy handler.
    for (const apiDesc of apiDescList) { let inputSchema = JSON.parse(apiDesc.inputSchema); const zodDict: Record<string, z.ZodTypeAny> = {}; Object.entries(inputSchema.properties).forEach(([name, propConfig]) => { let zodType; let pt = (propConfig as { type: string }).type; switch (pt) { case 'string': zodType = z.string(); break; case 'number': zodType = z.number(); break; case 'boolean': zodType = z.boolean(); break; case 'integer': zodType = z.bigint(); break; case 'array': zodType = z.array(z.any()); break; case 'object': zodType = z.object(z.any()); break; default: zodType = z.any(); } if (inputSchema.required?.includes(name)) { zodDict[name] = zodType; } else { zodDict[name] = zodType.optional(); } }); addToolXiaoBenYangApi( apiDesc.name, apiDesc.description ? apiDesc.description : apiDesc.name, zodDict); }
  • Generic handler invoked for 'list_wwdc_videos' and all other tools. Validates toolName, merges args, and proxies to remote calcXiaoBenYangApi.
    const handleXiaoBenYangApi = async (args: Record<string, any>, toolName: string) => { // 校验aid是否存在 if (toolName === undefined || toolName === null) { throw new Error("缺少必要参数 'aid'"); } // 合并参数 const fullArgs = {...args, toolName: toolName}; // 调用API return calcXiaoBenYangApi(fullArgs); };
  • Core proxy function that makes HTTP POST to remote https://mcp.xiaobenyang.com/api with toolName='list_wwdc_videos', apiKey, and args; returns formatted response.
    const calcXiaoBenYangApi = async function (fullArgs: Record<string, any>) { // 发起 POST 请求 let response = await fetch('https://mcp.xiaobenyang.com/api', { method: 'POST', headers: { 'XBY-APIKEY': apiKey, 'func': fullArgs.toolName, 'mcpid': mcpID }, body: new URLSearchParams(fullArgs) }); const apiResult = await response.text(); return { content: [ { type: "text", text: apiResult // 将字符串结果放入 content 中 } ] } as { [x: string]: unknown; content: [{ type: "text"; text: string }] }; };
  • Helper function called for each tool to register it with MCP server, providing name (e.g. 'list_wwdc_videos'), description, dynamic inputSchema, and the generic handler lambda.
    const addToolXiaoBenYangApi = function ( name: string, desc: string, params: Record<string, ZodType> ) { server.registerTool( name, { title: name, description: desc, inputSchema: params, } , async (args: Record<string, any>) => handleXiaoBenYangApi(args, name) ) };
  • src/mcp.ts:6-6 (registration)
    Defines the mcpID used to fetch the list of tools from remote, which includes 'list_wwdc_videos'.
    const mcpID: string = '1777316659692547';

Latest Blog Posts

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/xiaobenyang-com/Search-Apple-Docs'

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