README.md•2.62 kB
# 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)