build-custom-mcp-server
О программе
Этот навык помогает разработчикам создавать пользовательские MCP-серверы для предоставления инструментов, ресурсов и промптов клиентам, таким как Claude Code. Он охватывает реализацию протокола, определение инструментов, обработку ошибок и шаблоны тестирования. Используйте его, когда вам требуется интегрировать пользовательскую функциональность, существующие API или создавать предметно-ориентированные инструменты через Model Context Protocol.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-custom-mcp-serverСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
name: build-custom-mcp-server locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Construir un servidor MCP (Model Context Protocol) personalizado que expone herramientas, recursos y prompts a clientes MCP como Claude Code. Cubrir la implementación del protocolo, definición de herramientas, manejo de errores, y patrones de testing. Usar cuando se necesite exponer funcionalidad personalizada a Claude, integrar APIs o servicios existentes vía MCP, o crear herramientas específicas del dominio. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: mcp-integration complexity: intermediate language: multi tags: mcp, custom-server, tools, protocol, typescript, python
Construir Servidor MCP Personalizado
Construir un servidor MCP personalizado para exponer herramientas y recursos a clientes como Claude Code.
Cuándo Usar
- Necesitando exponer funcionalidad personalizada a Claude vía MCP
- Integrando APIs o servicios existentes como herramientas MCP
- Creando herramientas específicas del dominio para flujos de trabajo de equipo
- Automatizando operaciones repetitivas accesibles desde Claude
- Conectando fuentes de datos internas con el ecosistema MCP
Entradas
- Requerido: Definición de las herramientas a exponer (nombre, parámetros, funcionalidad)
- Requerido: Lenguaje de implementación (TypeScript, Python, R)
- Opcional: APIs o servicios externos a integrar
- Opcional: Esquemas de datos para validación de entradas
- Opcional: Requisitos de autenticación
Procedimiento
Paso 1: Elegir SDK e Inicializar Proyecto
TypeScript (recomendado para nuevos proyectos):
mkdir mi-mcp-server && cd mi-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node tsx
npx tsc --init
Python:
mkdir mi-mcp-server && cd mi-mcp-server
python -m venv venv
source venv/bin/activate
pip install mcp pydantic
Esperado: Proyecto inicializado con dependencias MCP instaladas.
En caso de fallo: Verificar versiones de Node.js (18+) o Python (3.10+), comprobar acceso a npm/pip.
Paso 2: Implementar el Servidor
TypeScript:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "mi-servidor",
version: "1.0.0",
});
// Definir una herramienta
server.tool(
"buscar-documentos",
"Buscar documentos en el repositorio interno",
{
consulta: z.string().describe("Término de búsqueda"),
limite: z.number().optional().default(10).describe("Número máximo de resultados"),
},
async ({ consulta, limite }) => {
// Implementación de la búsqueda
const resultados = await buscarEnBase(consulta, limite);
return {
content: [{ type: "text", text: JSON.stringify(resultados, null, 2) }],
};
}
);
// Iniciar servidor
const transport = new StdioServerTransport();
await server.connect(transport);
Esperado: El servidor se ejecuta y expone herramientas vía el protocolo MCP.
En caso de fallo: Verificar que el esquema de herramientas es válido, comprobar que las dependencias están importadas correctamente.
Paso 3: Agregar Recursos y Prompts
// Recurso: exponer datos accesibles
server.resource(
"configuracion-proyecto",
"project://config",
async (uri) => ({
contents: [{
uri: uri.href,
mimeType: "application/json",
text: JSON.stringify(config),
}],
})
);
// Prompt: plantilla reutilizable
server.prompt(
"analizar-metricas",
"Analizar métricas del proyecto",
{ periodo: z.string().describe("Periodo temporal (7d, 30d, 90d)") },
async ({ periodo }) => ({
messages: [{
role: "user",
content: { type: "text", text: `Analiza las métricas del proyecto para los últimos ${periodo}...` },
}],
})
);
Esperado: Recursos y prompts disponibles junto con las herramientas en el cliente MCP.
En caso de fallo: Verificar URIs de recursos son únicos, comprobar que los esquemas de prompts son válidos.
Paso 4: Probar y Depurar
# Probar con stdio directo
echo '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{}},"id":1}' | node dist/index.js
# Agregar a Claude Code
claude mcp add mi-servidor stdio node -- dist/index.js
# Verificar herramientas disponibles
claude mcp list
Esperado: El servidor responde al handshake JSON-RPC, las herramientas aparecen en Claude Code.
En caso de fallo: Habilitar logging detallado, verificar formato de mensajes JSON-RPC, comprobar que el proceso no termina prematuramente.
Validación
- El servidor inicia sin errores
- Las herramientas aparecen en el cliente MCP
- Las herramientas ejecutan correctamente cuando se invocan
- Los errores se manejan apropiadamente (no crashean el servidor)
- Los recursos devuelven datos actualizados
- Los prompts generan mensajes bien formados
Errores Comunes
- Servidor termina prematuramente: El transporte stdio requiere que el proceso permanezca activo. No usar
process.exit(). - Esquemas de herramientas inválidos: Validar esquemas con zod/pydantic antes de registrar herramientas.
- Sin manejo de errores: Los errores no capturados crashean el servidor. Envolver handlers en try/catch.
- Herramientas sin descripción: Los clientes MCP usan las descripciones para decidir cuándo invocar herramientas.
- Respuestas demasiado grandes: Limitar el tamaño de respuestas para evitar problemas de memoria en el cliente.
Habilidades Relacionadas
configure-mcp-server- Configurar servidores MCP en clientesscaffold-mcp-server- Generar estructura de proyecto MCP desde plantillastroubleshoot-mcp-connection- Depurar problemas de conexión MCPanalyze-codebase-for-mcp- Identificar funcionalidad para exponer vía MCP
GitHub репозиторий
Frequently asked questions
What is the build-custom-mcp-server skill?
build-custom-mcp-server is a Claude Skill by pjt222. Skills package instructions and resources that Claude loads on demand, so Claude can perform build-custom-mcp-server-related tasks without extra prompting.
How do I install build-custom-mcp-server?
Use the install commands on this page: add build-custom-mcp-server to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does build-custom-mcp-server belong to?
build-custom-mcp-server is in the Meta category, tagged ai, testing, api, mcp and design.
Is build-custom-mcp-server free to use?
Yes. build-custom-mcp-server is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
Похожие навыки
Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
Этот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
