@ubuligan/server 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# @ubuligan/server
|
|
2
|
+
|
|
3
|
+
A thin **DX layer over the MCP SDK server**. Create an `McpServer`, register your tools / resources /
|
|
4
|
+
prompts with the standard SDK methods, then boot it over **stdio** (local) or **Streamable HTTP**
|
|
5
|
+
(production) with a single `serve()` call.
|
|
6
|
+
|
|
7
|
+
Part of the [MCP Toolkit](https://github.com/jsznpm/create-mcp-toolkit).
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @ubuligan/server zod
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
(`zod` is used to declare tool input schemas — recommended but not required.)
|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import { createMCPServer, serve } from "@ubuligan/server";
|
|
21
|
+
import { z } from "zod";
|
|
22
|
+
|
|
23
|
+
const server = createMCPServer({ name: "my-server", version: "1.0.0" });
|
|
24
|
+
|
|
25
|
+
server.registerTool(
|
|
26
|
+
"add",
|
|
27
|
+
{
|
|
28
|
+
title: "Add two numbers",
|
|
29
|
+
inputSchema: { a: z.number(), b: z.number() },
|
|
30
|
+
},
|
|
31
|
+
async ({ a, b }) => ({
|
|
32
|
+
content: [{ type: "text", text: String(a + b) }],
|
|
33
|
+
}),
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
// stdio for Claude Desktop / local clients:
|
|
37
|
+
await serve(server, { transport: "stdio" });
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Run over Streamable HTTP
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
// Pass a factory so each request gets a fresh server (stateless mode).
|
|
44
|
+
await serve(() => buildServer(), { transport: "http", port: 3000, path: "/mcp" });
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## API
|
|
48
|
+
|
|
49
|
+
### `createMCPServer({ name, version? }): McpServer`
|
|
50
|
+
Returns the SDK `McpServer`. Register capabilities with `registerTool` / `registerResource` /
|
|
51
|
+
`registerPrompt` — see the [MCP SDK docs](https://github.com/modelcontextprotocol/typescript-sdk).
|
|
52
|
+
|
|
53
|
+
### `serve(serverOrFactory, options): Promise<void>`
|
|
54
|
+
Boot over the chosen transport.
|
|
55
|
+
|
|
56
|
+
| Option | Type | Default |
|
|
57
|
+
| --- | --- | --- |
|
|
58
|
+
| `transport` | `"stdio" \| "http"` | — (required) |
|
|
59
|
+
| `port` | `number` | `3000` (http) |
|
|
60
|
+
| `path` | `string` | `"/mcp"` (http) |
|
|
61
|
+
| `logger` | `Logger \| LogLevel` | silent |
|
|
62
|
+
|
|
63
|
+
For `http`, pass a **factory** `() => McpServer` to get a fresh server per request.
|
|
64
|
+
|
|
65
|
+
### Lower-level helpers
|
|
66
|
+
- `startStdio(server, logger?)` — connect a server over stdio.
|
|
67
|
+
- `startHttp(serverOrFactory, opts?)` — start the HTTP listener; resolves to
|
|
68
|
+
`{ port, close }`. Supports `port: 0` (OS-assigned port, returned as the actual `port`).
|
|
69
|
+
|
|
70
|
+
`McpServer` is re-exported for convenience.
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ubuligan/server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Thin DX layer over the MCP SDK server: create a server and boot it over stdio or Streamable HTTP in one call",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
21
21
|
"express": "^4.21.2",
|
|
22
|
-
"@ubuligan/shared": "^0.1.
|
|
22
|
+
"@ubuligan/shared": "^0.1.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/express": "^4.17.21",
|