[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BEEX9ND3CTPWKTR76427M":3,"skill-same:01M69BEEX9ND3CTPWKTR76427M":72},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M69BEEX9ND3CTPWKTR76427M","mcp-server-skeleton",null,"microsoft\u002FAKS-Lab-GitHubCopilot","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BE5H0TP45ZP79NQ2WN8PK",10,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmcp-server-skeleton\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27,28],"MCP","mcp server","mcp server skeleton","2026-11-10 10:12:30",false,"# Skill: MCP Server Skeleton (FastMCP, streamable-http)\n\n## Reference layout\n\n```\nsrc\u002Fmcp_servers\u002F\u003Cname>\u002F\n├── __init__.py\n├── models.py\n├── store.py\n├── server.py\n└── Dockerfile\n```\n\n## `server.py` template\n\n```python\nfrom __future__ import annotations\n\nfrom mcp.server.fastmcp import FastMCP\nimport structlog\nfrom starlette.requests import Request\nfrom starlette.responses import JSONResponse\n\nfrom .models import StockQuery, StockReport\nfrom .store import lookup_stock\n\nlog = structlog.get_logger(\"\u003Cname>-mcp\")\nmcp = FastMCP(\"\u003Cname>-mcp\", host=\"0.0.0.0\", port=8080, streamable_http_path=\"\u002Fmcp\")\n\n\n@mcp.custom_route(\"\u002Fhealthz\", methods=[\"GET\"])\nasync def healthz(_request: Request) -> JSONResponse:\n    \"\"\"Return process health for container probes.\"\"\"\n\n    return JSONResponse({\"status\": \"ok\"})\n\n\n@mcp.custom_route(\"\u002Freadyz\", methods=[\"GET\"])\nasync def readyz(_request: Request) -> JSONResponse:\n    \"\"\"Return readiness for ACA ingress probes.\"\"\"\n\n    return JSONResponse({\"status\": \"ready\", \"name\": \"\u003Cname>-mcp\"})\n\n\n@mcp.tool()\nasync def check_stock(query: StockQuery) -> StockReport:\n    \"\"\"Return on-hand stock and reorder point for each requested location.\n\n    Args:\n        query: SKU and list of location IDs.\n    Returns:\n        StockReport with one LocationStock per requested location.\n    \"\"\"\n    log.info(\"tool.check_stock\", sku=query.sku, locations=query.locations)\n    return await lookup_stock(query)\n\n\nif __name__ == \"__main__\":\n    mcp.run(transport=\"streamable-http\")\n```\n\n## `models.py` rules\n\n- Every request \u002F response is a Pydantic v2 model with `model_config = ConfigDict(frozen=True)`.\n- Field names are snake_case; alias to camelCase only if an external API requires it.\n\n## `store.py` rules\n\n- In-memory `dict` keyed by primary key. Leave the marker:\n  ```python\n  # TODO: replace with Cosmos DB (see specs\u002Fstorage.md)\n  ```\n- Seed with at least: SKU `ZS-1042`; locations `store-101`, `store-202`, `wh-east`.\n\n## Acceptance\n\n```bash\nuv run python -m src.mcp_servers.\u003Cname>.server &\nsleep 1 && curl -fsS http:\u002F\u002Flocalhost:8080\u002Fhealthz\ncurl -fsS http:\u002F\u002Flocalhost:8080\u002Freadyz\nkill %1\n```\n",{},"main","44e33846404c95b38ed9c99d06617cd89dce5467",".github\u002Fskills\u002Fmcp-server-skeleton",31,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-10-29 09:47:55",{"source":7,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add microsoft\u002FAKS-Lab-GitHubCopilot --skill mcp-server-skeleton",{"tool":48,"command":49},"bunx","bunx skills add microsoft\u002FAKS-Lab-GitHubCopilot --skill mcp-server-skeleton",{"tool":51,"command":52},"pnpm","pnpm dlx skills add microsoft\u002FAKS-Lab-GitHubCopilot --skill mcp-server-skeleton","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmcp-server-skeleton\u002FSKILL.md",true,[56,62,68],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"checks.md","REFERENCE","参考文档",8913,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-repo-health\u002Fskills\u002Fworkflow-optimization\u002Fchecks.md",{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"scripts\u002Fsummarize_runs.py","SCRIPT","脚本",4593,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-repo-health\u002Fskills\u002Fworkflow-optimization\u002Fscripts\u002Fsummarize_runs.py",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"tests\u002Ftest_summarize_runs.py",3050,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmagpie\u002Fblob\u002Fmain\u002Fplugins\u002Fmagpie-repo-health\u002Fskills\u002Fworkflow-optimization\u002Ftests\u002Ftest_summarize_runs.py",[73,81,89,100,107,114],{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":79,"publishedAt":29},"01M69BEGJ4FRHZF5ZJE0P0YXXD","pydantic-contracts","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpydantic-contracts\u002FSKILL.md",[78],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[80],"pydantic contracts",{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":87,"publishedAt":29},"01M69BEDDG27MZ3HJA3VYZAF0B","maf-agent-skeleton","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmaf-agent-skeleton\u002FSKILL.md",[86],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[88],"maf agent skeleton",{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":95,"publishedAt":29},"01M69BEBM4PGHMSCBQGYDGXJEY","copilot-sdk-gpt55","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fcopilot-sdk-gpt55\u002FSKILL.md",[94],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[96,97,98,99],"sdk","copilot","copilot sdk","copilot sdk gpt55",{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":29},"01M69BEA91P1628K12AAXRHEG3","aks-helm","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Faks-helm\u002FSKILL.md",[],[106],"aks helm",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":29},"01M69BE8V5PBXCRGERWC0Y62RG","aca-bicep","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Faca-bicep\u002FSKILL.md",[],[113],"aca bicep",{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":29},"01M69BE7K6CSG8HPMWJ11D86Q9","a2a-loopback-tests","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAKS-Lab-GitHubCopilot\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fa2a-loopback-tests\u002FSKILL.md",[],[120,121],"a2a","a2a loopback tests"]