@modelfetch/node
Version:
Node.js runtime adapter for MCP servers built with ModelFetch
81 lines (59 loc) • 2.48 kB
Markdown
# `@modelfetch/node`
[](https://www.npmjs.com/package/@modelfetch/node)
[](https://www.npmjs.com/package/@modelfetch/node)
[](https://www.modelfetch.com/docs/runtime/node)
Run simple MCP servers with Node.js.
## Installation
```bash
npm install @modelfetch/node
```
## Usage
### Start The Server
```typescript
import handle from "@modelfetch/node";
import server from "./server"; // Import your McpServer
// Run as a Node.js HTTP server
handle(server);
```
### Get Listening Address
```typescript
import handle, { getListeningAddress } from "@modelfetch/node";
import server from "./server"; // Import your McpServer
// Run as a Node.js HTTP server
handle(server, (addressInfo) => {
// Print listening address
console.log(
`The MCP server is listening at ${getListeningAddress(addressInfo)}`,
);
});
```
### Specify Custom Port
```typescript
import handle, { getListeningAddress } from "@modelfetch/node";
import server from "./server"; // Import your McpServer
// Run as a Node.js HTTP server
handle(
server,
// Print listening address
(addressInfo) => {
console.log(
`The MCP server is listening at ${getListeningAddress(addressInfo)}`,
);
},
// Customize server options
{ port: 8080 },
);
```
## API Reference
### `handle(server, callback?, options?)`
Starts the MCP server
- **server**: Required [`McpServer`](https://github.com/modelcontextprotocol/typescript-sdk?tab=readme-ov-file#server) instance from [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk)
- **callback**: Optional listening callback that receives the server [`AddressInfo`](https://nodejs.org/api/net.html#serveraddress)
- **options**: Optional configuration object
- **port**: Custom port number (default: `3000`)
- **hostname**: Custom hostname (default: `"localhost"`)
- **createServer**: Custom server factory from `node:http`, `node:https`, or `node:http2`
- **serverOptions**: Custom server options from `node:http`, `node:https`, or `node:http2`
### `getListeningAddress(addressInfo)`
Gets listening address from the server [`AddressInfo`](https://nodejs.org/api/net.html#serveraddress)
- **addressInfo**: Required server [`AddressInfo`](https://nodejs.org/api/net.html#serveraddress) from the listening callback