MCP极简入门:@modelcontextprotocol/inspector 如何使用
测试 MCP 服务器的功能(如资源、工具和提示)。支持多种传输方式(stdio、SSE、streamable-http)。无需本地安装,通过 npx 即可运行。提供 CLI 和 Web 界面两种交互方式,适合开发和调试。快速开始安装与运行执行效果默认行为启动代理服务器:端口 6277自定义端口。
Model Context Protocol(MCP)是一个用于定义和交互 AI 模型上下文的协议,而 @modelcontextprotocol/inspector 是一个强大的开发工具,提供了直观的 Web 界面(MCP Inspector Client,MCPI)和代理服务器(MCP Proxy,MCPP),用于测试和调试 MCP 服务器。本文将以最简洁的方式介绍如何快速上手使用 MCP Inspector,适合初学者快速入门。
什么是 MCP Inspector?
MCP Inspector 是一个基于 React 的 Web 界面和 Node.js 代理服务器的工具,用于:
- 测试 MCP 服务器的功能(如资源、工具和提示)。
- 支持多种传输方式(stdio、SSE、streamable-http)。
- 无需本地安装,通过 npx 即可运行。
- 提供 CLI 和 Web 界面两种交互方式,适合开发和调试。
快速开始
安装与运行
无需手动安装,直接使用 npx 运行 Inspector,连接到你的 MCP 服务器(假设服务器代码在 McpServer.ts,McpServer.ts在执行命令的当前目录下面,文件的路径是以当前代码的执行目录开始的):
npx @modelcontextprotocol/inspector npx tsx McpServer.ts
-
执行效果:
-
默认行为:
- 启动 Web 界面:http://localhost:6274
- 启动代理服务器:端口 6277
-
自定义端口:
CLIENT_PORT=8080 SERVER_PORT=9000 npx @modelcontextprotocol/inspector npx tsx McpServer.ts
使用 Web 界面
启动
访问界面 :运行命令后,打开浏览器访问 http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=ce0e0c97d3e4a6b8946a3581b9dd604d92b92c1c371bf6d5dc9373599e82a33d。需要完整的路径,填入token,否则无法连接。


连接失败的页面:

连接服务器:点击左侧"Connect"按钮,选择或输入服务器地址。

Resources
-
Resources:查看服务器提供的资源,点击"List Resources"与"List Templates"显示列表,点击具体资源查看内容。

Rsources的使用
import {
McpServer,
ResourceTemplate,
} from "@modelcontextprotocol/sdk/server/mcp.js";
import type { Variables } from "@modelcontextprotocol/sdk/shared/uriTemplate.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
// 1. 创建服务器实例
const server = new McpServer(
{
name: "internal-tools",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
},
);
server.registerResource(
"greeting",
new ResourceTemplate("greeting://{name}", { list: undefined }),
{
title: "Greeting Resource", // Display name for UI
description: "Dynamic greeting generator",
mimeType: "text/plain",
},
async (uri: URL, variables: Variables) => ({
contents: [
{
uri: uri.href,
text: `Hello, ${Array.isArray(variables.name) ? variables.name[0] : (variables.name ?? "world")}!`,
},
],
}),
);
// 4. 通过 Stdio 连接
const transport = new StdioServerTransport();
await server.connect(transport);


Tools
Tools:列出可用工具,输入参数后调用测试。

Tools的调用
server.registerTool(
"add",
{
title: "Addition Tool",
description: "Add two numbers",
inputSchema: {
a: z.number(),
b: z.number(),
},
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}),
);
调用方式与即结果:

Prompts
Prompts:查看和测试服务器的提示模板。

Prompts调用:
server.registerPrompt(
"team-greeting",
{
title: "Team Greeting",
description: "Generate a greeting for team members",
argsSchema: {
department: completable(z.string(), (value) =>
["engineering", "sales", "marketing", "support"].filter((d) =>
d.startsWith(value),
),
),
name: completable(z.string(), (value, context) => {
const department = context?.arguments?.department;
if (department === "engineering") {
return ["Alice", "Bob", "Charlie"].filter((n) =>
n.startsWith(value),
);
}
if (department === "sales") {
return ["David", "Eve", "Frank"].filter((n) => n.startsWith(value));
}
if (department === "marketing") {
return ["Grace", "Henry", "Iris"].filter((n) => n.startsWith(value));
}
return ["Guest"].filter((n) => n.startsWith(value));
}),
},
},
({ department, name }) => ({
messages: [
{
role: "assistant",
content: {
type: "text",
text: `Hello ${name}, welcome to the ${department} team!`,
},
},
],
}),
);

导出配置
导出配置:通过“Server Entry”或“Servers File”生成配置文件,方便复用。下面是复制Servers File的样例,可以添加到自己的mcp的json配置中。
{
"mcpServers": {
"default-server": {
"command": "npx",
"args": [
"tsx",
"McpServer.ts"
],
"env": {
"HOME": "/Users/a0000",
"LOGNAME": "a0000",
"PATH": "/Users/a0000/.npm/_npx/5a9d879542beca3a/node_modules/.bin:/Users/a0000/Desktop/learn/my-custom-mcp/src/node_modules/.bin:/Users/a0000/Desktop/learn/my-custom-mcp/node_modules/.bin:/Users/a0000/Desktop/learn/node_modules/.bin:/Users/a0000/Desktop/node_modules/.bin:/Users/a0000/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/Users/a0000/.antigravity/antigravity/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/a0000/.antigravity/antigravity/bin:/Users/a0000/Library/pnpm:/opt/homebrew/bin:/opt/homebrew/sbin",
"SHELL": "/bin/zsh",
"TERM": "xterm-256color",
"USER": "a0000"
}
}
}
}
使用 CLI 模式
CLI 模式适合自动化测试或脚本化操作,需指定 --cli 和方法。
列出资源:
npx @modelcontextprotocol/inspector --cli npx tsx McpServer.ts --method resources/list
{
"resources": []
}
调用工具:
npx @modelcontextprotocol/inspector --cli npx tsx McpServer.ts --method tools/call --tool-name add --tool-arg a=8 b=7
{
"content": [
{
"type": "text",
"text": "15"
}
]
}
远程服务器调用:
npx @modelcontextprotocol/inspector --cli https://my-mcp-server.example.com --method tools/list
配置多个服务器
通过 JSON 配置文件管理多个 MCP 服务器:
{
"mcpServers": {
"myserver": {
"command": "npx",
"args": [
"tsx",
"McpServer.ts"
],
"env": { "key": "value" }
}
}
}
启动并指定服务器:
npx @modelcontextprotocol/inspector --config config.json --server myserver
注意事项
- 端口冲突:通过 CLIENT_PORT 和 SERVER_PORT 自定义端口。
- web地址要带token:没有token会无法正常连接;
- 远程调试:确保远程服务器支持 SSE 或 streamable-http,并检查 SDK 版本兼容性。
- 调试日志:确保服务器日志输出到 stderr,避免干扰 stdout 的 MCP 协议通信。
- 更多帮助:访问 Model Context Protocol 官网 查看详细文档。
总结
MCP Inspector 是一个简单而强大的工具,通过 Web 界面或 CLI 即可快速测试和调试 MCP 服务器。无论是本地开发还是远程部署,只需几行命令即可上手。开始你的 MCP 之旅吧!
import {
McpServer,
ResourceTemplate,
} from "@modelcontextprotocol/sdk/server/mcp.js";
import { completable } from "@modelcontextprotocol/sdk/server/completable.js";
import type { Variables } from "@modelcontextprotocol/sdk/shared/uriTemplate.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
// 1. 创建服务器实例
const server = new McpServer(
{
name: "internal-tools",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
},
);
server.registerResource(
"greeting",
new ResourceTemplate("greeting://{name}", { list: undefined }),
{
title: "Greeting Resource", // Display name for UI
description: "Dynamic greeting generator",
mimeType: "text/plain",
},
async (uri: URL, variables: Variables) => ({
contents: [
{
uri: uri.href,
text: `Hello, ${Array.isArray(variables.name) ? variables.name[0] : (variables.name ?? "world")}!`,
},
],
}),
);
server.registerTool(
"add",
{
title: "Addition Tool",
description: "Add two numbers",
inputSchema: {
a: z.number(),
b: z.number(),
},
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}),
);
server.registerPrompt(
"team-greeting",
{
title: "Team Greeting",
description: "Generate a greeting for team members",
argsSchema: {
department: completable(z.string(), (value) =>
["engineering", "sales", "marketing", "support"].filter((d) =>
d.startsWith(value),
),
),
name: completable(z.string(), (value, context) => {
const department = context?.arguments?.department;
if (department === "engineering") {
return ["Alice", "Bob", "Charlie"].filter((n) =>
n.startsWith(value),
);
}
if (department === "sales") {
return ["David", "Eve", "Frank"].filter((n) => n.startsWith(value));
}
if (department === "marketing") {
return ["Grace", "Henry", "Iris"].filter((n) => n.startsWith(value));
}
return ["Guest"].filter((n) => n.startsWith(value));
}),
},
},
({ department, name }) => ({
messages: [
{
role: "assistant",
content: {
type: "text",
text: `Hello ${name}, welcome to the ${department} team!`,
},
},
],
}),
);
// 4. 通过 Stdio 连接
const transport = new StdioServerTransport();
await server.connect(transport);
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)