Skip to main content

mcp-sdk-python-bootstrapper

Bootstrap MCP server with Python SDK, transport configuration, tool/resource handlers, and proper project structure.

来源信息

仓库
a5c-ai/babysitter
最近来源活动
2026年6月1日 07:46
检测到的 SKILL.md 语言
英语
星标
1,832
分支
113

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
mcp-sdk-python-bootstrapper
description
Bootstrap MCP server with Python SDK, transport configuration, tool/resource handlers, and proper project structure.
allowed-tools
Read, Write, Edit, Bash, Glob, Grep
graph
{"domains":["domain:software-engineering"],"specializations":["specialization:cli-mcp-development"],"skillAreas":["skill-area:mcp-server-implementation","skill-area:mcp-stdio-transport"],"roles":["role:backend-engineer","role:platform-engineer"],"workflows":["workflow:feature-development"],"topics":["topic:developer-experience"]}
# MCP SDK Python Bootstrapper Bootstrap a complete MCP server using the Python SDK with proper project structure. ## Capabilities - Generate Python MCP server project structure - Create tool and resource handlers - Configure stdio/SSE transport layers - Set up proper typing with Pydantic - Implement error handling patterns - Configure Poetry/pip project ## Usage Invoke this skill when you need to: - Bootstrap a new MCP server in Python - Create tools and resources for AI consumption - Set up MCP transport layer - Implement MCP protocol handlers ## Inputs | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | projectName | string | Yes | Name of the MCP server project | | description | string | Yes | Description of the server | | tools | array | No | List of tools to implement | | resources | array | No | List of resources to expose | | transport | string | No | Transport type: stdio, sse (default: stdio) | ### Tool Structure ```json { "tools": [ { "name": "search_files", "description": "Search for files matching a pattern", "parameters": { "pattern": { "type": "string", "description": "Search pattern" }, "path": { "type": "string", "description": "Base path", "default": "." } } } ] } ``` ## Output Structure ``` <projectName>/ ├── pyproject.toml ├── README.md ├── .gitignore ├── src/ │ └── <package>/ │ ├── __init__.py │ ├── __main__.py # Entry point │ ├── server.py # MCP server setup │ ├── tools/ │ │ ├── __init__.py │ │ └── search.py # Tool implementations │ ├── resources/ │ │ ├── __init__.py │ │ └── files.py # Resource providers │ └── types/ │ ├── __init__.py │ └── schemas.py # Pydantic models └── tests/ └── test_tools.py ``` ## Generated Code Patterns ### Server Setup (src/<package>/server.py) ```python import asyncio from mcp.server import Server from mcp.server.stdio import stdio_server from mcp.types import Tool, Resource from .tools import register_tools from .resources import register_resources # Create server instance server = Server("<projectName>") # Register handlers register_tools(server) register_resources(server) async def main(): """Run the MCP server.""" async with stdio_server() as (read_stream, write_stream): await server.run( read_stream, write_stream, server.create_initialization_options() ) def run(): """Entry point for the server.""" asyncio.run(main()) ``` ### Tool Implementation (src/<package>/tools/search.py) ```python from typing import Any from pydantic import BaseModel, Field from mcp.server import Server from mcp.types import Tool, TextContent class SearchFilesInput(BaseModel): """Input schema for search_files tool.""" pattern: str = Field(description="Search pattern (glob)") path: str = Field(default=".", description="Base path to search") def register(server: Server) -> None: """Register the search_files tool.""" @server.list_tools() async def list_tools() -> list[Tool]: return [ Tool( name="search_files", description="Search for files matching a pattern", inputSchema=SearchFilesInput.model_json_schema() ) ] @server.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: if name != "search_files": raise ValueError(f"Unknown tool: {name}") # Validate input input_data = SearchFilesInput(**arguments) # Execute search from pathlib import Path matches = list(Path(input_data.path).glob(input_data.pattern)) return [ TextContent( type="text", text="\n".join(str(m) for m in matches) ) ] ``` ### Resource Provider (src/<package>/resources/files.py) ```python from mcp.server import Server from mcp.types import Resource, TextResourceContents def register(server: Server) -> None: """Register file resources.""" @server.list_resources() async def list_resources() -> list[Resource]: return [ Resource( uri="file:///config", name="Configuration", description="Server configuration", mimeType="application/json" ) ] @server.read_resource() async def read_resource(uri: str) -> TextResourceContents: if uri == "file:///config": return TextResourceContents( uri=uri, mimeType="application/json", text='{"version": "1.0.0"}' ) raise ValueError(f"Unknown resource: {uri}") ``` ## Dependencies ```toml [tool.poetry.dependencies] python = ">=3.10" mcp = "^1.0.0" pydantic = "^2.0.0" [tool.poetry.group.dev.dependencies] pytest = "^8.0.0" pytest-asyncio = "^0.23.0" ``` ## Workflow 1. **Create project structure** - Set up Python package 2. **Generate server** - MCP server with transport 3. **Create tools** - Tool handlers with schemas 4. **Create resources** - Resource providers 5. **Add types** - Pydantic models 6. **Set up tests** - Async test fixtures ## Target Processes - mcp-server-bootstrap - mcp-tool-implementation - mcp-resource-provider
在 GitHub 查看