使用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 流返回的。

相关推荐
xingpanvip14 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
程序员小远15 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
骇客之技术15 天前
AutoLua:在安卓上写 Lua 脚本
android·junit·lua
weixin_4713830315 天前
Node.js + Express 入门实战笔记-01-基础
node.js·lua·express
LT101579744415 天前
2026年Web自动化测试工具选型指南:多浏览器兼容解决方案
前端·测试工具·自动化
闪电悠米15 天前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
程序员三藏15 天前
Web自动化测试详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
专业机床数据采集15 天前
基于 Wireshark 抓包逆向设备通信协议,并用 C# UDP协议跨平台 实现宝元数控程序列表读取、上传、下载和删除
网络·测试工具·wireshark·程序传输·宝元数控·dnc·数控程序传输
程序员龙叔15 天前
从 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
自动化测试·软件测试·python·软件测试工程师·测试工具·性能测试·ai测试