@@ -62,6 +62,67 @@ const resourceContent = await client.request(
62
62
63
63
### Creating a Server
64
64
65
+ The SDK provides two ways to create a server: using the low-level ` Server ` class or the simplified ` McpServer ` class with an Express-style API.
66
+
67
+ #### Using McpServer (Recommended)
68
+
69
+ ``` typescript
70
+ import { McpServer } from " @modelcontextprotocol/sdk/server/index.js" ;
71
+ import { StdioServerTransport } from " @modelcontextprotocol/sdk/server/stdio.js" ;
72
+ import { z } from " zod" ;
73
+
74
+ const server = new McpServer ({
75
+ name: " example-server" ,
76
+ version: " 1.0.0" ,
77
+ });
78
+
79
+ // Define a simple tool with no parameters
80
+ server .tool (" save" , async () => {
81
+ return {
82
+ content: [{ type: " text" , text: " Saved successfully." }]
83
+ };
84
+ });
85
+
86
+ // Define a tool with parameters
87
+ server .tool (" add" , { a: z .number (), b: z .number () }, async ({ a , b }) => {
88
+ return {
89
+ content: [{ type: " text" , text: String (a + b ) }]
90
+ };
91
+ });
92
+
93
+ // Define a static resource
94
+ server .resource (
95
+ " welcome-message" ,
96
+ " file:///welcome.txt" ,
97
+ async (uri ) => ({
98
+ contents: [{
99
+ uri: uri .href ,
100
+ text: " Welcome to the server!"
101
+ }]
102
+ })
103
+ );
104
+
105
+ // Define a prompt with parameters
106
+ server .prompt (
107
+ " greeting" ,
108
+ { name: z .string (), language: z .string ().optional () },
109
+ ({ name , language }) => ({
110
+ messages: [{
111
+ role: " assistant" ,
112
+ content: {
113
+ type: " text" ,
114
+ text: ` ${language === " es" ? " ¡Hola" : " Hello" } ${name }! `
115
+ }
116
+ }]
117
+ })
118
+ );
119
+
120
+ const transport = new StdioServerTransport ();
121
+ await server .connect (transport );
122
+ ```
123
+
124
+ #### Using Server (Low-level API)
125
+
65
126
``` typescript
66
127
import { Server } from " @modelcontextprotocol/sdk/server/index.js" ;
67
128
import { StdioServerTransport } from " @modelcontextprotocol/sdk/server/stdio.js" ;
0 commit comments