JUHE API Marketplace
hemanth avatar
MCP Server

mcp-remote-server

A Model Context Protocol server that provides tools for fetching xkcd comics and resources for dynamic data retrieval, WebSocket echo functionality, and static JSON data testing.

5
GitHub Stars
8/23/2025
Last Updated
No Configuration
Please check the documentation below.

README Documentation

mcp-remote-server

A Model Context Protocol (MCP) server built with mcp-framework.

Quick Start

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

The server will run on port 1947 at endpoint /mcp by default.

Project Structure

mcp-remote-server/
├── src/
│   ├── tools/                # MCP Tools
│   │   └── XkcdTool.ts       # Tool: Fetches random xkcd comics
│   ├── resources/            # MCP Resources
│   │   ├── DynamicResource.ts  # Fetches data from JSONPlaceholder
│   │   ├── RealTimeResource.ts # Echo WebSocket resource
│   │   └── StaticResource.ts   # Returns static JSON data
│   └── index.ts              # Server entry point
├── package.json
├── tsconfig.json
└── README.md

Included Tools

XkcdTool

  • Name: xkcd
  • Description: Fetches a random xkcd comic image and its alt text.

Included Resources

DynamicResource

  • URI: resource://market-data
  • Description: Fetches data from JSONPlaceholder (free, no API key required).

EchoResource

  • URI: resource://echo
  • Description: Connects to a public WebSocket echo server (wss://echo.websocket.org).

StaticResource

  • URI: resource://static
  • Description: Returns static JSON data for testing.

Adding Components

You can add more tools using the CLI:

# Add a new tool
mcp add tool my-tool

Tool Development Example

import { MCPTool } from "mcp-framework";
import { z } from "zod";

interface MyToolInput {
  message: string;
}

class MyTool extends MCPTool<MyToolInput> {
  name = "my_tool";
  description = "Describes what your tool does";

  schema = {
    message: {
      type: z.string(),
      description: "Description of this input parameter",
    },
  };

  async execute(input: MyToolInput) {
    // Your tool logic here
    return `Processed: ${input.message}`;
  }
}

export default MyTool;

Running and Testing

  1. Make changes to your tools or resources as needed.
  2. Run npm run build to compile.
  3. Start the server with npm start.
  4. The server will automatically load your tools and resources on startup.

Server Details

  • Port: 1947
  • Endpoint: /mcp
  • Transport: HTTP stream
  • Session management: Enabled
  • CORS: Enabled for all origins

Learn More

Quick Actions

Key Features

Model Context Protocol
Secure Communication
Real-time Updates
Open Source