commit
f720d1e232
7 changed files with 2510 additions and 0 deletions
@ -0,0 +1 @@ |
|||||
|
node_modules |
@ -0,0 +1,71 @@ |
|||||
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; |
||||
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; |
||||
|
|
||||
|
const transport = new StdioClientTransport({ |
||||
|
command: "node", |
||||
|
args: ["./server.js"], |
||||
|
cwd: process.cwd(), |
||||
|
}); |
||||
|
|
||||
|
const client = new Client( |
||||
|
{ |
||||
|
name: "example-client", |
||||
|
version: "1.0.0", |
||||
|
}, |
||||
|
{ |
||||
|
capabilities: { |
||||
|
prompts: {}, |
||||
|
resources: {}, |
||||
|
tools: {}, |
||||
|
}, |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
try { |
||||
|
await client.connect(transport); |
||||
|
console.log("Connected successfully"); |
||||
|
|
||||
|
// const prompts = await client.listPrompts();
|
||||
|
// console.log(prompts);
|
||||
|
|
||||
|
// const prompt = await client.getPrompt("example-prompt", {
|
||||
|
// arg1: "value",
|
||||
|
// });
|
||||
|
// console.log(prompt);
|
||||
|
|
||||
|
// Call a tool
|
||||
|
// const result = await client.callTool({
|
||||
|
// name: "echo",
|
||||
|
// arguments: {
|
||||
|
// message: "value",
|
||||
|
// },
|
||||
|
// });
|
||||
|
// console.log(result);
|
||||
|
|
||||
|
// const resources = await client.listResources();
|
||||
|
// console.log(resources);
|
||||
|
|
||||
|
// Read a resource
|
||||
|
const resource = await client.readResource("echo://example.txt"); |
||||
|
console.log(resource); |
||||
|
} catch (error) { |
||||
|
console.error("Failed to connect:", error); |
||||
|
} |
||||
|
|
||||
|
// // List prompts
|
||||
|
// const prompts = await client.listPrompts();
|
||||
|
// console.log(prompts);
|
||||
|
|
||||
|
// Get a prompt
|
||||
|
// const prompt = await client.getPrompt("example-prompt", {
|
||||
|
// arg1: "value"
|
||||
|
// });
|
||||
|
// console.log(11);
|
||||
|
// console.log(prompt);
|
||||
|
|
||||
|
// List resources
|
||||
|
// const resources = await client.listResources();
|
||||
|
// console.log(resources);
|
||||
|
|
||||
|
// Read a resource
|
||||
|
// const resource = await client.readResource("file:///example.txt");
|
@ -0,0 +1,19 @@ |
|||||
|
{ |
||||
|
"name": "mcp", |
||||
|
"version": "1.0.0", |
||||
|
"type": "module", |
||||
|
"description": "", |
||||
|
"main": "index.js", |
||||
|
"scripts": { |
||||
|
"test": "mcp-inspector node server.js" |
||||
|
}, |
||||
|
"keywords": [], |
||||
|
"author": "", |
||||
|
"license": "ISC", |
||||
|
"packageManager": "pnpm@10.4.1", |
||||
|
"dependencies": { |
||||
|
"@modelcontextprotocol/inspector": "^0.6.0", |
||||
|
"@modelcontextprotocol/sdk": "^1.7.0", |
||||
|
"zod": "^3.24.2" |
||||
|
} |
||||
|
} |
File diff suppressed because it is too large
@ -0,0 +1,3 @@ |
|||||
|
- https://mcpcn.com/docs/examples/ |
||||
|
- https://zhuanlan.zhihu.com/p/30869685315 |
||||
|
- https://www.npmjs.com/package/@modelcontextprotocol/inspector |
@ -0,0 +1,57 @@ |
|||||
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; |
||||
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; |
||||
|
import { |
||||
|
ListPromptsRequestSchema, |
||||
|
GetPromptRequestSchema, |
||||
|
} from "@modelcontextprotocol/sdk/types.js"; |
||||
|
|
||||
|
const server = new Server( |
||||
|
{ |
||||
|
name: "example-server", |
||||
|
version: "1.0.0", |
||||
|
}, |
||||
|
{ |
||||
|
capabilities: { |
||||
|
prompts: {}, |
||||
|
}, |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
server.setRequestHandler(ListPromptsRequestSchema, async () => { |
||||
|
return { |
||||
|
prompts: [ |
||||
|
{ |
||||
|
name: "example-prompt", |
||||
|
description: "An example prompt template", |
||||
|
arguments: [ |
||||
|
{ |
||||
|
name: "arg1", |
||||
|
description: "Example argument", |
||||
|
required: true, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
}); |
||||
|
|
||||
|
server.setRequestHandler(GetPromptRequestSchema, async (request) => { |
||||
|
if (request.params.name !== "example-prompt") { |
||||
|
throw new Error("Unknown prompt"); |
||||
|
} |
||||
|
return { |
||||
|
description: "Example prompt", |
||||
|
messages: [ |
||||
|
{ |
||||
|
role: "user", |
||||
|
content: { |
||||
|
type: "text", |
||||
|
text: "Example prompt text", |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
}); |
||||
|
|
||||
|
const transport = new StdioServerTransport(); |
||||
|
await server.connect(transport); |
@ -0,0 +1,43 @@ |
|||||
|
import { |
||||
|
McpServer, |
||||
|
ResourceTemplate, |
||||
|
} from "@modelcontextprotocol/sdk/server/mcp.js"; |
||||
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; |
||||
|
import { z } from "zod"; |
||||
|
|
||||
|
const server = new McpServer({ |
||||
|
name: "Echo", |
||||
|
version: "1.0.0", |
||||
|
}); |
||||
|
|
||||
|
server.resource( |
||||
|
"echo", |
||||
|
new ResourceTemplate("echo://{message}", { list: undefined }), |
||||
|
async (uri, { message }) => ({ |
||||
|
contents: [ |
||||
|
{ |
||||
|
uri: uri.href, |
||||
|
text: `Resource echo: ${message}`, |
||||
|
}, |
||||
|
], |
||||
|
}) |
||||
|
); |
||||
|
|
||||
|
server.tool("echo", { message: z.string() }, async ({ message }) => ({ |
||||
|
content: [{ type: "text", text: `Tool echo: ${message}` }], |
||||
|
})); |
||||
|
|
||||
|
server.prompt("echo", { message: z.string() }, ({ message }) => ({ |
||||
|
messages: [ |
||||
|
{ |
||||
|
role: "user", |
||||
|
content: { |
||||
|
type: "text", |
||||
|
text: `Please process this message: ${message}`, |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
})); |
||||
|
|
||||
|
const transport = new StdioServerTransport(); |
||||
|
await server.connect(transport); |
Loading…
Reference in new issue