small fixes like argsSchema

This commit is contained in:
ihrpr 2025-06-16 10:55:02 +01:00
commit bce2dbfb83
No known key found for this signature in database
4 changed files with 51 additions and 55 deletions

View file

@ -55,8 +55,7 @@ import { z } from "zod";
// Create an MCP server
const server = new McpServer({
name: "demo-server",
version: "1.0.0",
title: "Demo Server" // Optional display name
version: "1.0.0"
});
// Add an addition tool
@ -109,9 +108,8 @@ The McpServer is your core interface to the MCP protocol. It handles connection
```typescript
const server = new McpServer({
name: "my-app", // Unique identifier for your server
version: "1.0.0", // Server version
title: "My Application" // Optional display name for UI
name: "my-app",
version: "1.0.0"
});
```
@ -471,8 +469,7 @@ import { z } from "zod";
const server = new McpServer({
name: "echo-server",
version: "1.0.0",
title: "Echo Server"
version: "1.0.0"
});
server.registerResource(
@ -507,7 +504,7 @@ server.registerPrompt(
{
title: "Echo Prompt",
description: "Creates a prompt to process a message",
arguments: { message: z.string() }
argsSchema: { message: z.string() }
},
({ message }) => ({
messages: [{

View file

@ -17,8 +17,7 @@ const useOAuth = process.argv.includes('--oauth');
const getServer = () => {
const server = new McpServer({
name: 'simple-streamable-http-server',
version: '1.0.0',
title: 'Simple Streamable HTTP Server', // Display name for UI
version: '1.0.0'
}, { capabilities: { logging: {} } });
// Register a simple tool that returns a greeting
@ -94,7 +93,7 @@ const getServer = () => {
{
title: 'Greeting Template', // Display name for UI
description: 'A simple greeting prompt template',
arguments: {
argsSchema: {
name: z.string().describe('Name to include in greeting'),
},
},
@ -158,10 +157,10 @@ const getServer = () => {
server.registerResource(
'greeting-resource',
'https://example.com/greetings/default',
{
{
title: 'Default Greeting', // Display name for UI
description: 'A simple greeting resource',
mimeType: 'text/plain'
mimeType: 'text/plain'
},
async (): Promise<ReadResourceResult> => {
return {

View file

@ -1011,7 +1011,7 @@ export class McpServer {
config: {
title?: string;
description?: string;
arguments?: Args;
argsSchema?: Args;
},
cb: PromptCallback<Args>
): RegisteredPrompt {
@ -1019,7 +1019,7 @@ export class McpServer {
throw new Error(`Prompt ${name} is already registered`);
}
const { title, description, arguments: argsSchema } = config;
const { title, description, argsSchema } = config;
const registeredPrompt = this._createRegisteredPrompt(
name,

View file

@ -7,12 +7,12 @@ import { McpServer } from "./mcp.js";
describe("Title field backwards compatibility", () => {
it("should work with tools that have title", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new McpServer(
{ name: "test-server", version: "1.0.0" },
{ capabilities: {} }
);
// Register tool with title
server.registerTool(
"test-tool",
@ -25,12 +25,12 @@ describe("Title field backwards compatibility", () => {
},
async () => ({ content: [{ type: "text", text: "result" }] })
);
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.server.connect(serverTransport);
await client.connect(clientTransport);
const tools = await client.listTools();
expect(tools.tools).toHaveLength(1);
expect(tools.tools[0].name).toBe("test-tool");
@ -40,12 +40,12 @@ describe("Title field backwards compatibility", () => {
it("should work with tools without title", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new McpServer(
{ name: "test-server", version: "1.0.0" },
{ capabilities: {} }
);
// Register tool without title
server.tool(
"test-tool",
@ -53,12 +53,12 @@ describe("Title field backwards compatibility", () => {
{ value: z.string() },
async () => ({ content: [{ type: "text", text: "result" }] })
);
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.server.connect(serverTransport);
await client.connect(clientTransport);
const tools = await client.listTools();
expect(tools.tools).toHaveLength(1);
expect(tools.tools[0].name).toBe("test-tool");
@ -68,12 +68,12 @@ describe("Title field backwards compatibility", () => {
it("should work with prompts that have title using update", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new McpServer(
{ name: "test-server", version: "1.0.0" },
{ capabilities: {} }
);
// Register prompt with title by updating after creation
const prompt = server.prompt(
"test-prompt",
@ -81,12 +81,12 @@ describe("Title field backwards compatibility", () => {
async () => ({ messages: [{ role: "user", content: { type: "text", text: "test" } }] })
);
prompt.update({ title: "Test Prompt Display Name" });
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.server.connect(serverTransport);
await client.connect(clientTransport);
const prompts = await client.listPrompts();
expect(prompts.prompts).toHaveLength(1);
expect(prompts.prompts[0].name).toBe("test-prompt");
@ -96,33 +96,33 @@ describe("Title field backwards compatibility", () => {
it("should work with prompts using registerPrompt", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new McpServer(
{ name: "test-server", version: "1.0.0" },
{ capabilities: {} }
);
// Register prompt with title using registerPrompt
server.registerPrompt(
"test-prompt",
{
title: "Test Prompt Display Name",
description: "A test prompt",
arguments: { input: z.string() }
argsSchema: { input: z.string() }
},
async ({ input }) => ({
messages: [{
role: "user",
content: { type: "text", text: `test: ${input}` }
}]
async ({ input }) => ({
messages: [{
role: "user",
content: { type: "text", text: `test: ${input}` }
}]
})
);
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.server.connect(serverTransport);
await client.connect(clientTransport);
const prompts = await client.listPrompts();
expect(prompts.prompts).toHaveLength(1);
expect(prompts.prompts[0].name).toBe("test-prompt");
@ -133,12 +133,12 @@ describe("Title field backwards compatibility", () => {
it("should work with resources using registerResource", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new McpServer(
{ name: "test-server", version: "1.0.0" },
{ capabilities: {} }
);
// Register resource with title using registerResource
server.registerResource(
"test-resource",
@ -148,19 +148,19 @@ describe("Title field backwards compatibility", () => {
description: "A test resource",
mimeType: "text/plain"
},
async () => ({
contents: [{
async () => ({
contents: [{
uri: "https://example.com/test",
text: "test content"
}]
text: "test content"
}]
})
);
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.server.connect(serverTransport);
await client.connect(clientTransport);
const resources = await client.listResources();
expect(resources.resources).toHaveLength(1);
expect(resources.resources[0].name).toBe("test-resource");
@ -171,21 +171,21 @@ describe("Title field backwards compatibility", () => {
it("should support serverInfo with title", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = new Server(
{
{
name: "test-server",
version: "1.0.0",
title: "Test Server Display Name"
},
{ capabilities: {} }
);
const client = new Client({ name: "test-client", version: "1.0.0" });
await server.connect(serverTransport);
await client.connect(clientTransport);
const serverInfo = client.getServerVersion();
expect(serverInfo?.name).toBe("test-server");
expect(serverInfo?.version).toBe("1.0.0");