MCP Server Boilerplate
Plantilla de servidor MCP
Una implementación de servidor MCP (Model Context Protocol) mínima y bien documentada, diseñada para servir como base reutilizable para crear servidores MCP personalizados.
¿Qué es MCP?
El Model Context Protocol (MCP) es un protocolo estandarizado que permite a los asistentes de IA interactuar con servidores externos. Los servidores MCP pueden proporcionar:
Herramientas (Tools): Funciones que la IA puede llamar para realizar acciones
Recursos (Resources): Datos estáticos o dinámicos que la IA puede leer
Prompts: Plantillas de prompts reutilizables para interacciones consistentes con la IA
Related MCP server: MCP Mingdao
Características
Esta plantilla proporciona:
Estructura mínima: Base limpia que puede extenderse fácilmente
Documentación extensa: Comentarios en línea y archivos de documentación separados
Diagramas de arquitectura: Diagramas Mermaid que muestran las interacciones de los componentes
Guía de escalado: Mejores prácticas para hacer crecer su servidor
Sugerencias de tipo (Type hints): Anotaciones de tipo completas para un mejor soporte en el IDE
Async/await: E/S sin bloqueo para operaciones concurrentes
Plantillas de Prompts Reutilizables
Los prompts son plantillas reutilizables que le permiten definir prompts estructurados con marcadores de posición. Permiten:
Consistencia: Formatos de prompt estandarizados en diferentes interacciones con la IA
Parametrización: Inserción de contenido dinámico a través de argumentos
Reutilizabilidad: Definir una vez, usar múltiples veces con diferentes entradas
Seguridad de tipos: Esquemas de argumentos definidos con validación
Una plantilla de prompt consiste en:
Nombre: Identificador único para el prompt
Descripción: Qué hace el prompt
Argumentos: Parámetros opcionales que se pueden completar al usar el prompt
Ejemplos de casos de uso:
Plantillas de revisión de código con niveles de severidad configurables
Generación de documentación con tono personalizable
Prompts de análisis con áreas de enfoque variables
Generación de informes con diferentes formatos de salida
Estructura del Proyecto
windsurf-project-3/
├── mcp_server.py # Main server implementation with extensive comments
├── pyproject.toml # Project configuration for uv
├── ARCHITECTURE.md # Architecture documentation with Mermaid diagrams
├── SCALING_GUIDE.md # Scaling patterns and best practices
├── README.md # This file
├── tools/ # Placeholder for tool modules (create as needed)
├── resources/ # Placeholder for resource modules (create as needed)
├── prompts/ # Placeholder for prompt modules (create as needed)
└── utils/ # Placeholder for utility modules (create as needed)Instalación
Este proyecto utiliza uv para una gestión rápida de paquetes de Python.
Instale Python 3.10 o superior
Instale uv (si aún no está instalado):
curl -LsSf https://astral.sh/uv/install.sh | shInstale las dependencias:
uv syncInicio Rápido
1. Añada su primera herramienta
Edite mcp_server.py y añada una herramienta en la función list_tools():
@app.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="echo",
description="Echo back the input text",
inputSchema={
"type": "object",
"properties": {
"text": {"type": "string", "description": "Text to echo"}
},
"required": ["text"]
}
)
]2. Implemente el manejador de la herramienta
Añada la lógica de la herramienta en la función call_tool():
@app.call_tool()
async def call_tool(name: str, arguments: Any) -> str:
if name == "echo":
text = arguments.get("text", "")
return f"Echo: {text}"
raise ValueError(f"Unknown tool: {name}")3. Añada un prompt (Opcional)
Añada un prompt en la función list_prompts():
@app.list_prompts()
async def list_prompts() -> list[Prompt]:
return [
Prompt(
name="example_prompt",
description="An example prompt template",
arguments=[
PromptArgument(
name="topic",
description="The topic to write about",
required=True
)
]
)
]Luego implemente el manejador en get_prompt():
@app.get_prompt()
async def get_prompt(name: str, arguments: dict[str, str] | None) -> str:
if name == "example_prompt":
topic = arguments.get("topic") if arguments else None
if not topic:
raise ValueError("Argument 'topic' is required")
return f"Write a detailed explanation about {topic}."
raise ValueError(f"Unknown prompt: {name}")3. Ejecute el servidor
uv run python mcp_server.py4. Configure su cliente MCP
Añada esto a la configuración de su cliente MCP:
{
"mcpServers": {
"your-server-name": {
"command": "uv",
"args": ["run", "python", "/path/to/mcp_server.py"]
}
}
}Documentación
ARCHITECTURE.md: Documentación detallada de la arquitectura con diagramas Mermaid que muestran:
Módulos de Python y sus propósitos
Interacciones de componentes
Flujos de solicitud (invocación de herramientas, lectura de recursos)
Patrones de diseño utilizados
SCALING_GUIDE.md: Mejores prácticas para escalar su servidor:
Patrones de modularización
Estrategias de gestión de estado
Patrones de manejo de errores
Registro y monitoreo
Gestión de configuración
Estrategias de prueba
Optimización del rendimiento
Consideraciones de seguridad
Estructura del Código
El archivo principal del servidor (mcp_server.py) está organizado en secciones:
Inicialización del servidor: Crear la instancia del servidor MCP
Registro de herramientas: Definir las herramientas disponibles
Manejadores de herramientas: Implementar la lógica de ejecución de herramientas
Registro de recursos: Definir los recursos disponibles
Manejadores de recursos: Implementar la lógica de lectura de recursos
Punto de entrada: Iniciar el servidor con comunicación stdio
Cada sección incluye comentarios extensos en línea que explican el propósito y el uso de cada componente.
Puntos de Extensión
Añadir herramientas
Defina la herramienta en
list_tools()con su esquemaImplemente el manejador en
call_tool()Para proyectos más grandes, muévalo a un módulo separado en el directorio
tools/
Añadir prompts
Defina el prompt en
list_prompts()con sus argumentosImplemente el manejador en
get_prompt()Para proyectos más grandes, muévalo a un módulo separado en el directorio
prompts/
Añadir recursos
Defina el recurso en
list_resources()con sus metadatosImplemente el manejador en
read_resource()Para proyectos más grandes, muévalo a un módulo separado en el directorio
resources/
Añadir utilidades
Extraiga el código compartido en el directorio utils/:
Funciones de validación
Ayudantes de registro
Gestión de configuración
Utilidades de manejo de errores
Uso como base
Esta plantilla está diseñada para ser copiada y modificada para nuevos proyectos:
Copie todo el directorio del proyecto
Cambie el nombre del proyecto en
pyproject.tomlActualice el nombre del servidor en
mcp_server.pyAñada sus herramientas, recursos y prompts
Personalice la documentación según sea necesario
Módulos de Python utilizados
mcp.server.Server: Clase principal del servidor MCPmcp.types.Tool: Definición del tipo de herramientamcp.types.Resource: Definición del tipo de recursomcp.types.Prompt: Definición del tipo de promptmcp.types.PromptArgument: Definición del tipo de argumento de promptmcp.server.stdio: Flujos de comunicación stdioasyncio: Async/await para operaciones concurrentestyping: Sugerencias de tipo para mayor claridad del código
Consulte ARCHITECTURE.md para obtener explicaciones detalladas de cada módulo.
Desarrollo
Ejecución de pruebas
# Run with pytest (add tests first)
uv run pytestEstilo de código
Este proyecto utiliza sugerencias de tipo de Python y sigue las convenciones de PEP 8. Considere usar:
ruffpara lintingmypypara comprobación de tipos
Añadir dependencias
uv add <package-name>Solución de problemas
Error de importación: Ejecute
uv syncpara instalar las dependenciasEl servidor no responde: Compruebe la configuración del cliente MCP
Errores de tipo: Asegúrese de que Python 3.10+ esté instalado
Comando uv no encontrado: Instale uv desde https://github.com/astral-sh/uv
Recursos
Licencia
Esta plantilla se proporciona tal cual para fines educativos y de desarrollo. Siéntase libre de usarla y modificarla para sus proyectos.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA basic MCP server template that provides a foundation for building custom tools, resources, and prompts. Serves as a starting point for developers to create their own MCP server functionality.

MCP Mingdaoofficial
FlicenseNot gradedqualityDmaintenanceA minimal MCP server template demonstrating basic tools, resources, and prompts functionality built with Smithery SDK.- FlicenseNot gradedqualityCmaintenanceA template/starter project for building MCP servers with structured directories for tools, prompts, and resources that are automatically discovered and registered.5
- FlicenseNot gradedqualityDmaintenanceA boilerplate template for developing Model Context Protocol (MCP) servers, providing a structured framework for defining tools, resources, and prompts.
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/GlenTrudgett/mcp_template'
If you have feedback or need assistance with the MCP directory API, please join our Discord server