谢亚昕 1 month ago
commit
f720d1e232
  1. 1
      .gitignore
  2. 71
      client.js
  3. 19
      package.json
  4. 2316
      pnpm-lock.yaml
  5. 3
      readme.md
  6. 57
      server copy.js
  7. 43
      server.js

1
.gitignore

@ -0,0 +1 @@
node_modules

71
client.js

@ -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");

19
package.json

@ -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"
}
}

2316
pnpm-lock.yaml

File diff suppressed because it is too large

3
readme.md

@ -0,0 +1,3 @@
- https://mcpcn.com/docs/examples/
- https://zhuanlan.zhihu.com/p/30869685315
- https://www.npmjs.com/package/@modelcontextprotocol/inspector

57
server copy.js

@ -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);

43
server.js

@ -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…
Cancel
Save