Skip to content

Commit eb87195

Browse files
Merge pull request modelcontextprotocol#115 from modelcontextprotocol/justin/simplified-ts-sdk
Update TypeScript examples to use simplified API
2 parents 558de7a + 335db05 commit eb87195

File tree

5 files changed

+141
-251
lines changed

5 files changed

+141
-251
lines changed

docs/concepts/architecture.mdx

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -210,35 +210,30 @@ Here's a basic example of implementing an MCP server:
210210

211211
<Tabs>
212212
<Tab title="TypeScript">
213-
```typescript
214-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
215-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
216-
217-
const server = new Server({
218-
name: "example-server",
219-
version: "1.0.0"
220-
}, {
221-
capabilities: {
222-
resources: {}
223-
}
224-
});
225-
226-
// Handle requests
227-
server.setRequestHandler(ListResourcesRequestSchema, async () => {
228-
return {
229-
resources: [
230-
{
231-
uri: "example://resource",
232-
name: "Example Resource"
233-
}
234-
]
235-
};
236-
});
237-
238-
// Connect transport
239-
const transport = new StdioServerTransport();
240-
await server.connect(transport);
241-
```
213+
```typescript
214+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
215+
216+
const server = new McpServer({
217+
name: "example-server",
218+
version: "1.0.0"
219+
});
220+
221+
// Register a resource
222+
server.resource(
223+
"example",
224+
"example://resource",
225+
async (uri) => ({
226+
contents: [{
227+
uri: uri.href,
228+
text: "Example resource content"
229+
}]
230+
})
231+
);
232+
233+
// Connect transport
234+
const transport = new StdioServerTransport();
235+
await server.connect(transport);
236+
```
242237
</Tab>
243238
<Tab title="Python">
244239
```python

docs/concepts/prompts.mdx

Lines changed: 46 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -197,98 +197,52 @@ Here's a complete example of implementing prompts in an MCP server:
197197

198198
<Tabs>
199199
<Tab title="TypeScript">
200-
```typescript
201-
import { Server } from "@modelcontextprotocol/sdk/server";
202-
import {
203-
ListPromptsRequestSchema,
204-
GetPromptRequestSchema
205-
} from "@modelcontextprotocol/sdk/types";
206-
207-
const PROMPTS = {
208-
"git-commit": {
209-
name: "git-commit",
210-
description: "Generate a Git commit message",
211-
arguments: [
212-
{
213-
name: "changes",
214-
description: "Git diff or description of changes",
215-
required: true
216-
}
217-
]
218-
},
219-
"explain-code": {
220-
name: "explain-code",
221-
description: "Explain how code works",
222-
arguments: [
223-
{
224-
name: "code",
225-
description: "Code to explain",
226-
required: true
227-
},
228-
{
229-
name: "language",
230-
description: "Programming language",
231-
required: false
232-
}
233-
]
234-
}
235-
};
236-
237-
const server = new Server({
238-
name: "example-prompts-server",
239-
version: "1.0.0"
240-
}, {
241-
capabilities: {
242-
prompts: {}
243-
}
244-
});
245-
246-
// List available prompts
247-
server.setRequestHandler(ListPromptsRequestSchema, async () => {
248-
return {
249-
prompts: Object.values(PROMPTS)
250-
};
251-
});
252-
253-
// Get specific prompt
254-
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
255-
const prompt = PROMPTS[request.params.name];
256-
if (!prompt) {
257-
throw new Error(`Prompt not found: ${request.params.name}`);
258-
}
259-
260-
if (request.params.name === "git-commit") {
261-
return {
262-
messages: [
263-
{
264-
role: "user",
265-
content: {
266-
type: "text",
267-
text: `Generate a concise but descriptive commit message for these changes:\n\n${request.params.arguments?.changes}`
268-
}
269-
}
270-
]
271-
};
272-
}
273-
274-
if (request.params.name === "explain-code") {
275-
const language = request.params.arguments?.language || "Unknown";
276-
return {
277-
messages: [
278-
{
279-
role: "user",
280-
content: {
281-
type: "text",
282-
text: `Explain how this ${language} code works:\n\n${request.params.arguments?.code}`
283-
}
284-
}
285-
]
286-
};
287-
}
288-
289-
throw new Error("Prompt implementation not found");
290-
});
291-
```
200+
```typescript
201+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
202+
import { z } from "zod";
203+
204+
const server = new McpServer({
205+
name: "example-prompts-server",
206+
version: "1.0.0"
207+
});
208+
209+
// Register git commit prompt
210+
server.prompt(
211+
"git-commit",
212+
"Generate a Git commit message",
213+
{
214+
changes: z.string().describe("Git diff or description of changes")
215+
},
216+
({ changes }) => ({
217+
messages: [{
218+
role: "user",
219+
content: {
220+
type: "text",
221+
text: `Generate a concise but descriptive commit message for these changes:\n\n${changes}`
222+
}
223+
}]
224+
})
225+
);
226+
227+
// Register code explanation prompt
228+
server.prompt(
229+
"explain-code",
230+
"Explain how code works",
231+
{
232+
code: z.string().describe("Code to explain"),
233+
language: z.string().optional().describe("Programming language")
234+
},
235+
({ code, language }) => ({
236+
messages: [{
237+
role: "user",
238+
content: {
239+
type: "text",
240+
text: `Explain how this ${language || "Unknown"} code works:\n\n${code}`
241+
}
242+
}]
243+
})
244+
);
245+
```
292246
</Tab>
293247
<Tab title="Python">
294248
```python

docs/concepts/resources.mdx

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -145,47 +145,32 @@ Here's a simple example of implementing resource support in an MCP server:
145145
<Tabs>
146146
<Tab title="TypeScript">
147147
```typescript
148-
const server = new Server({
148+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
149+
150+
const server = new McpServer({
149151
name: "example-server",
150152
version: "1.0.0"
151-
}, {
152-
capabilities: {
153-
resources: {}
154-
}
155-
});
156-
157-
// List available resources
158-
server.setRequestHandler(ListResourcesRequestSchema, async () => {
159-
return {
160-
resources: [
161-
{
162-
uri: "file:///logs/app.log",
163-
name: "Application Logs",
164-
mimeType: "text/plain"
165-
}
166-
]
167-
};
168153
});
169154

170-
// Read resource contents
171-
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
172-
const uri = request.params.uri;
173-
174-
if (uri === "file:///logs/app.log") {
155+
// Add static resource
156+
server.resource(
157+
"logs",
158+
"file:///logs/app.log",
159+
{
160+
mimeType: "text/plain",
161+
description: "Application log file"
162+
},
163+
async (uri) => {
175164
const logContents = await readLogFile();
176165
return {
177-
contents: [
178-
{
179-
uri,
180-
mimeType: "text/plain",
181-
text: logContents
182-
}
183-
]
166+
contents: [{
167+
uri: uri.href,
168+
mimeType: "text/plain",
169+
text: logContents
170+
}]
184171
};
185172
}
186-
187-
throw new Error("Resource not found");
188-
});
173+
);
189174
```
190175
</Tab>
191176
<Tab title="Python">

docs/concepts/tools.mdx

Lines changed: 25 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -40,50 +40,31 @@ Here's an example of implementing a basic tool in an MCP server:
4040

4141
<Tabs>
4242
<Tab title="TypeScript">
43-
```typescript
44-
const server = new Server({
45-
name: "example-server",
46-
version: "1.0.0"
47-
}, {
48-
capabilities: {
49-
tools: {}
50-
}
51-
});
52-
53-
// Define available tools
54-
server.setRequestHandler(ListToolsRequestSchema, async () => {
55-
return {
56-
tools: [{
57-
name: "calculate_sum",
58-
description: "Add two numbers together",
59-
inputSchema: {
60-
type: "object",
61-
properties: {
62-
a: { type: "number" },
63-
b: { type: "number" }
64-
},
65-
required: ["a", "b"]
66-
}
67-
}]
68-
};
69-
});
70-
71-
// Handle tool execution
72-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
73-
if (request.params.name === "calculate_sum") {
74-
const { a, b } = request.params.arguments;
75-
return {
76-
content: [
77-
{
78-
type: "text",
79-
text: String(a + b)
80-
}
81-
]
82-
};
83-
}
84-
throw new Error("Tool not found");
85-
});
86-
```
43+
```typescript
44+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
45+
import { z } from "zod";
46+
47+
const server = new McpServer({
48+
name: "example-server",
49+
version: "1.0.0"
50+
});
51+
52+
// Register a tool
53+
server.tool(
54+
"calculate_sum",
55+
"Add two numbers together",
56+
{
57+
a: z.number(),
58+
b: z.number()
59+
},
60+
async ({ a, b }) => ({
61+
content: [{
62+
type: "text",
63+
text: String(a + b)
64+
}]
65+
})
66+
);
67+
```
8768
</Tab>
8869
<Tab title="Python">
8970
```python

0 commit comments

Comments
 (0)