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

相关推荐
闪电悠米1 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
测试员周周4 小时前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例
weixin_307779137 小时前
智能模拟数据生成平台:生成式AI合成数据技术重塑开发测试效能
人工智能·测试工具·算法·测试用例
Lust Dusk11 小时前
postman工具介绍(附下载教程)
测试工具·安全·web安全·postman
忧云12 小时前
Wireshark 中文整完整安装与实操教程
测试工具·wireshark·抓包工具·tcp抓包
闪电悠米13 小时前
黑马点评-Redis 消息队列-04_stream_seckill_order
数据库·redis·分布式·缓存·oracle·junit·lua
呦呦鹿鸣Rzh14 小时前
Redis Lua 脚本:从入门到避坑指南
redis·junit·lua
清晨00114 小时前
工业互联网实时数据统计一致性保障 — 基于 Redis Lua 的并发安全方案
redis·安全·lua
yly2015020314 小时前
wrk 使用教程
测试工具