MCP HubMCP Hub
Retour aux compétences

build-custom-mcp-server

pjt222
Mis à jour Yesterday
1 vues
17
2
17
Voir sur GitHub
Métaaitestingapimcpdesign

À propos

Cette compétence guide les développeurs dans la construction de serveurs MCP personnalisés pour exposer des outils, des ressources et des invites aux clients comme Claude Code. Elle couvre la mise en œuvre du protocole, la définition des outils, la gestion des erreurs et les modèles de test. Utilisez-la lorsque vous avez besoin d'intégrer des fonctionnalités personnalisées, des API existantes ou de créer des outils spécifiques à un domaine via le Model Context Protocol.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-custom-mcp-server

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation


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 clientes
  • scaffold-mcp-server - Generar estructura de proyecto MCP desde plantillas
  • troubleshoot-mcp-connection - Depurar problemas de conexión MCP
  • analyze-codebase-for-mcp - Identificar funcionalidad para exponer vía MCP

Dépôt GitHub

pjt222/agent-almanac
Chemin: i18n/es/skills/build-custom-mcp-server
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Compétences associées

content-collections

Méta

Cette compétence propose une configuration éprouvée en production pour Content Collections, un outil axé sur TypeScript qui transforme des fichiers Markdown/MDX en collections de données typées de manière sûre avec une validation Zod. Utilisez-la lors de la création de blogs, de sites de documentation ou d'applications Vite + React riches en contenu pour garantir la sécurité de typage et la validation automatique du contenu. Elle couvre tout, de la configuration du plugin Vite et de la compilation MDX à l'optimisation des déploiements et la validation des schémas.

Voir la compétence

polymarket

Méta

Cette compétence permet aux développeurs de créer des applications avec la plateforme de marchés prédictifs Polymarket, incluant l'intégration d'API pour le trading et les données de marché. Elle fournit également une diffusion de données en temps réel via WebSocket pour surveiller les transactions en direct et l'activité du marché. Utilisez-la pour mettre en œuvre des stratégies de trading ou pour créer des outils traitant les mises à jour de marché en direct.

Voir la compétence

creating-opencode-plugins

Méta

Cette compétence aide les développeurs à créer des plugins OpenCode qui s'interconnectent avec plus de 25 types d'événements tels que les commandes, les fichiers et les opérations LSP. Elle fournit la structure du plugin, les spécifications de l'API événementielle et les modèles d'implémentation pour les modules JavaScript/TypeScript. Utilisez-la lorsque vous avez besoin d'intercepter, de surveiller ou d'étendre le cycle de vie de l'assistant IA OpenCode avec une logique personnalisée pilotée par les événements.

Voir la compétence

sglang

Méta

SGLang est un framework de service LLM haute performance spécialisé dans la génération rapide et structurée pour les workflows JSON, regex et agentiques grâce à son cache de préfixe RadixAttention. Il offre une inférence nettement plus rapide, particulièrement pour les tâches avec des préfixes répétés, ce qui le rend idéal pour les sorties complexes et structurées ainsi que les conversations multi-tours. Choisissez SGLang plutôt que des alternatives comme vLLM lorsque vous avez besoin d'un décodage contraint ou que vous construisez des applications avec un partage étendu de préfixes.

Voir la compétence