Skip to main content
Glama
ssut

Remote-MCP Server

by ssut

Remote-MCP: Protocolo de contexto de modelo remoto

Una solución simple, bidireccional y segura para la comunicación MCP remota , que permite el acceso remoto y la gestión centralizada de los contextos del modelo.

avance

Arquitectura

%%{init: {"flowchart": {"htmlLabels": false}} }%%
graph TD
    %% Modern, Bright Color Styling with white text
    classDef client fill:#22c55e,stroke:#059669,stroke-width:2px,color:#ffffff
    classDef gateway fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#ffffff
    classDef backend fill:#f97316,stroke:#ea580c,stroke-width:2px,color:#ffffff
    classDef resource fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px,color:#ffffff
    classDef server fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#ffffff

    linkStyle default stroke:#64748b,stroke-width:1.5px,stroke-dasharray: 5 5

    %% Current MCP Setup (Multiple Local Servers)
    subgraph Current["Current Setup (Local)"]
        direction LR
        subgraph ClientGroup["Client"]
            A[Client]:::client
        end

        subgraph Servers["Local MCP Servers"]
            direction TB
            B1["Local MCP Server (DB)"]:::server -->|"DB Access"| C1[DB]:::resource
            B2["Local MCP Server (API 1)"]:::server -->|"API Access"| C2["Web API 1"]:::resource
            B3["Local MCP Server (API 2)"]:::server -->|"API Access"| C3["Web API 2"]:::resource
        end

        A -->|"MCP Protocol"| B1
        A -->|"MCP Protocol"| B2
        A -->|"MCP Protocol"| B3
    end

    %% Vertical separator
    Current --> Proposed

    %% Proposed MCP Architecture (Decoupled)
    subgraph Proposed["Proposed Architecture (Remote)"]
        direction LR
        D[Client/Host]:::client -->|"MCP Protocol"| E["Local MCP Server (@remote-mcp/client)"]:::server
        E <-->|"tRPC(HTTP)"| F["Remote MCP Server (@remote-mcp/server)"]:::backend

        %% Separated Resources
        F -->|"DB Access"| G1[DB]:::resource
        F -->|"API Access"| G2["Web API 1"]:::resource
        F -->|"API Access"| G3["Web API 2"]:::resource
    end

Related MCP server: Typecast API MCP Server

¿Por qué hice esto? (ahora)

Sí, sé que la hoja de ruta oficial de MCP incluye compatibilidad con MCP remoto en el primer trimestre de 2025. Sin embargo, la necesidad de acceso remoto fue inmediata para mí, y probablemente para muchos otros. Esta biblioteca se creó para cubrir esa necesidad, ofreciendo una forma de conectarse a un servidor MCP remoto desde un cliente MCP local de inmediato , sin esperar futuras implementaciones oficiales.

Nota: No quiero que esto sea algo sofisticado ni demasiado complicado. De momento, este método funciona .

Empezando

Nota: Este proyecto se encuentra actualmente en desarrollo y se considera experimental. Se prevén cambios importantes y posibles problemas.

Uso del cliente

Utilice un paquete publicado públicamente

Simplemente coloque el siguiente código en la configuración de su cliente MCP, aquí estoy usando a Claude como ejemplo:

{
  "mcpServers": {
    "remote-mcp": {
      "command": "npx",
      "args": ["-y", "@remote-mcp/client"],
      "env": {
        "REMOTE_MCP_URL": "http://localhost:9512",
        "HTTP_HEADER_Authorization": "Bearer <token>"
      }
    }
  }
}

Codifique su propio servidor MCP local

Requisitos de instalación:

$ npm install @remote-mcp/client @trpc/client@next zod

Luego escribe tu propio código como el siguiente:

import { RemoteMCPClient } from "@remote-mcp/client";

const client = new RemoteMCPClient({
  remoteUrl: "http://localhost:9512",

  onError: (method, error) => console.error(`Error in ${method}:`, error)
});

void client.start();

Uso del servidor (implementación de MCP remoto)

Puedes ver algunos ejemplos en el directorio de examples .

Codifique su propio servidor MCP remoto

Después de npm install @remote-mcp/server , puede crear su propio servidor MCP remoto como el siguiente:

import { MCPRouter, LogLevel } from "@remote-mcp/server";
import { createHTTPServer } from '@trpc/server/adapters/standalone';

import { z } from "zod";

// Create router instance
const mcpRouter = new MCPRouter({
  logLevel: LogLevel.DEBUG,
  name: "example-server",
  version: "1.0.0",
  capabilities: {
    logging: {},
  },
});

// Add example tool
mcpRouter.addTool(
  "calculator",
  {
    description:
      "Perform basic calculations. Add, subtract, multiply, divide. Invoke this every time you need to perform a calculation.",
    schema: z.object({
      operation: z.enum(["add", "subtract", "multiply", "divide"]),
      a: z.string(),
      b: z.string(),
    }),
  },
  async (args) => {
    const a = Number(args.a);
    const b = Number(args.b);

    let result: number;
    switch (args.operation) {
      case "add":
        result = Number(a) + b;
        break;
      case "subtract":
        result = a - b;
        break;
      case "multiply":
        result = a * b;
        break;
      case "divide":
        if (b === 0) throw new Error("Division by zero");
        result = a / b;
        break;
    }

    return {
      content: [{ type: "text", text: `${result}` }],
    };
  },
);

const appRouter = mcpRouter.createTRPCRouter();

void createHTTPServer({
  router: appRouter,
  createContext: () => ({}),
}).listen(Number(process.env.PORT || 9512));

Luego podrás ver algo como lo siguiente en tu cliente MCP:

Paquetes

Este repositorio contiene:

  • @remote-mcp/client : biblioteca cliente que actúa como un servidor MCP local y se conecta a una implementación remota.

  • @remote-mcp/server : biblioteca de servidor para crear servicios MCP accesibles de forma remota (utilizada como implementación remota).

Hoja de ruta

Características principales

  • [x] Comunicación básica cliente/servidor con seguridad de tipos

    • [x] Soporte básico de comandos MCP

    • [x] Soporte básico de herramientas MCP

    • [x] Soporte básico de indicaciones de MCP

    • [ ] Manejo seguro ante accidentes (WIP, máxima prioridad)

  • [ ] Sistema completo de suscripción a eventos

    • [ ] Notificaciones de cambios de recursos

    • [ ] Notificaciones de cambios en la lista de herramientas/mensajes

  • [ ] Compatibilidad con encabezados HTTP

    • [x] Encabezados personalizados

    • [ ] Middleware de autenticación

  • [ ] Mejoras básicas en el manejo de errores

  • [ ] Soporte básico de middleware

Soporte del marco

  • [ ] Integración con Nest.js ( @remote-mcp/nestjs )

Funciones avanzadas

  • [ ] Comunicación bidireccional

    • [ ] Solicitudes de servidor a cliente

    • [ ] Intercambio de recursos entre servidor/cliente

  • [ ] Monitoreo y registro básicos

Contribuir

Se agradecen las contribuciones. Para más detalles, consulte CONTRIBUTING.md .

Descargo de responsabilidad

Esta biblioteca es una extensión complementaria, no parte de la especificación oficial de MCP, construida sobre conceptos de MCP existentes.

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo de LICENCIA para más detalles.

Referencias

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/ssut/Remote-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server