使用postman测试自己编写的mcp服务

MCP 使用 SSE(Server-Sent Events)协议,需要两步配合。

第一步:建立 SSE 连接(GET)

在 Postman 中新建一个 GET 请求:

bash 复制代码
GET http://localhost:8888/api/mcp

发送后会一直挂着(长连接),你会看到类似这样的 SSE 事件:

bash 复制代码
event: endpoint
data: /api/mcp/message?sessionId=6dd06aab-01c5-44f4-a80a-d616aac5e273

复制这个 sessionId 值,第二步要用。

不要关闭这个请求 tab,保持连接。

第二步:发送 JSON-RPC 请求(POST)

新建一个 POST 请求:

bash 复制代码
POST http://localhost:8888/api/mcp/message?sessionId=6dd06aab-01c5-44f4-a80a-d616aac5e273

sessionId 用第一步拿到的实际值替换。

Headers:

bash 复制代码
Content-Type: application/json

先发 initialize(必须先发这个)

Body → raw → JSON:

bash 复制代码
{
  "jsonrpc": "2.0",   // 固定值,声明使用 JSON-RPC 2.0 版本
  "id": 0,          // 请求编号,用于匹配请求和响应(1对1)
  "method": "initialize",   // 要执行的方法名
  "params": {               //params(MCP 特有的参数)大括号内的都不需要改
    "protocolVersion": "2024-11-05",//客户端支持的 MCP 协议版本号
    "capabilities": {},     //客户端声明自己支持哪些 MCP 功能
    "clientInfo": {         
      "name": "postman-test",// 客户端名称
      "version": "1.0.0"    //客户端版本
    }
  }
}

点发送后,回到第一步的 GET 请求 tab ,应该能看到返回的 SSE 事件,里面有 serverInfo

返回结果

bash 复制代码
{
    "jsonrpc": "2.0",
    "id": 0,
    "result": {
        "protocolVersion": "2024-11-05",
        "capabilities": {
            "completions": {},
            "logging": {},
            "prompts": {
                "listChanged": true
            },
            "resources": {
                "subscribe": false,
                "listChanged": true
            },
            "tools": {
                "listChanged": true
            }
        },
        "serverInfo": {
            "name": "foss-mcp-server",
            "version": "1.0.0"
        }
    }
}

再发 initialized 通知

bash 复制代码
{
  "jsonrpc": "2.0",
  "method": "notifications/initialized"
}

查看工具列表

bash 复制代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

GET tab 里应该返回:

bash 复制代码
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "tools": [
            {
                "name": "helloWord",
                "description": "搜索开源软件信息",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string",
                            "description": "群聊的id"
                        }
                    },
                    "required": [
                        "name"
                    ],
                    "additionalProperties": false
                }
            },
            {
                "name": "hello",
                "description": "搜索开源软件信息",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "name"
                    ],
                    "additionalProperties": false
                }
            }
        ]
    }
}

调用工具

bash 复制代码
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "hello",
    "arguments": {
      "name": "世界"
    }
  }
}

GET tab 返回:

bash 复制代码
{
    "jsonrpc": "2.0",
    "id": 2,
    "result": {
        "content": [
            {
                "type": "text",
                "text": "\"Hello, 世界! 调用成功啦!\""
            }
        ],
        "isError": false
    }
}

Server 日志应该输出:

复制代码
>>> [TOOL EXEC] 收到工具调用!参数 name=世界
>>> [TOOL EXEC] 执行完毕,返回:Hello, 世界! 调用成功啦!

完整操作流程图

复制代码
Postman Tab 1 (GET)          Postman Tab 2 (POST)
─────────────────            ─────────────────────
GET /api/mcp                 
  → 挂起,拿 sessionId  ───→  POST /api/mcp/message?sessionId=xxx
  ← 返回 SSE 事件        ←──  Body: initialize
  ← 返回 SSE 事件        ←──  Body: notifications/initialized
  ← 返回 SSE 事件        ←──  Body: tools/list
  ← 返回 SSE 事件        ←──  Body: tools/call

关键点:GET 请求必须一直保持连接,POST 的响应是通过 GET 的 SSE 流返回的。

相关推荐
goodesocket13 小时前
手机LPDDR芯片测试座厂商适配性强
测试工具
小小测试开发1 天前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
我的xiaodoujiao2 天前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
川石课堂软件测试2 天前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
Chloeis Syntax2 天前
JAVAEE初阶 --- 构造HTTP请求
网络·网络协议·http·postman
天才测试猿3 天前
Selenium自动化测试网页加载太慢怎么解决?
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
川石课堂软件测试4 天前
安全测试|服务器安全加固方法
服务器·功能测试·测试工具·jmeter·mysql·web安全·单元测试
Saniffer_SH6 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
杭州双色云谱6 天前
2026年蓝光光谱照度计选购与实战指南:双色云谱如何守护光环境安全?
科技·测试工具