Skip to main content
Glama
hemanth

mcp-remote-server

by hemanth
README.md
# mcp-remote-server

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

## Quick Start

```bash
# 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](https://jsonplaceholder.typicode.com/posts) (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:

```bash
# Add a new tool
mcp add tool my-tool
```

## Tool Development Example

```typescript
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

- [MCP Framework Github](https://github.com/QuantGeekDev/mcp-framework)
- [MCP Framework Docs](https://mcp-framework.com)