Skip to content

Commit 16b0cc8

Browse files
committed
Update TypeScript examples to use simplified API
1 parent 6c610ba commit 16b0cc8

File tree

4 files changed

+123
-218
lines changed

4 files changed

+123
-218
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/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

quickstart/server.mdx

Lines changed: 28 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -450,64 +450,39 @@ const ForecastArgumentsSchema = z.object({
450450
longitude: z.number().min(-180).max(180),
451451
});
452452

453-
// Create server instance
454-
const server = new Server(
453+
```typescript
454+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
455+
import { z } from "zod";
456+
457+
const server = new McpServer({
458+
name: "weather",
459+
version: "1.0.0"
460+
});
461+
462+
// Register weather alert tool
463+
server.tool(
464+
"get-alerts",
465+
"Get weather alerts for a state",
455466
{
456-
name: "weather",
457-
version: "1.0.0",
467+
state: z.string().length(2).describe("Two-letter state code (e.g. CA, NY)")
458468
},
459-
{
460-
capabilities: {
461-
tools: {},
462-
},
469+
async ({ state }) => {
470+
// Tool implementation
463471
}
464472
);
465-
```
466-
467-
### Implementing tool listing
468-
469-
We need to tell clients what tools are available. This `server.setRequestHandler` call will register this list for us:
470473
471-
```typescript
472-
// List available tools
473-
server.setRequestHandler(ListToolsRequestSchema, async () => {
474-
return {
475-
tools: [
476-
{
477-
name: "get-alerts",
478-
description: "Get weather alerts for a state",
479-
inputSchema: {
480-
type: "object",
481-
properties: {
482-
state: {
483-
type: "string",
484-
description: "Two-letter state code (e.g. CA, NY)",
485-
},
486-
},
487-
required: ["state"],
488-
},
489-
},
490-
{
491-
name: "get-forecast",
492-
description: "Get weather forecast for a location",
493-
inputSchema: {
494-
type: "object",
495-
properties: {
496-
latitude: {
497-
type: "number",
498-
description: "Latitude of the location",
499-
},
500-
longitude: {
501-
type: "number",
502-
description: "Longitude of the location",
503-
},
504-
},
505-
required: ["latitude", "longitude"],
506-
},
507-
},
508-
],
509-
};
510-
});
474+
// Register forecast tool
475+
server.tool(
476+
"get-forecast",
477+
"Get weather forecast for a location",
478+
{
479+
latitude: z.number().min(-90).max(90).describe("Latitude of the location"),
480+
longitude: z.number().min(-180).max(180).describe("Longitude of the location")
481+
},
482+
async ({ latitude, longitude }) => {
483+
// Tool implementation
484+
}
485+
);
511486
```
512487

513488
This defines our two tools: `get-alerts` and `get-forecast`.

0 commit comments

Comments
 (0)