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

相关推荐
大侠归来9 小时前
C++ 与 Lua 的协程交互:从原理到实战
c++·lua·交互
疯狂成瘾者1 天前
海康 Artemis 接口对接
开发语言·lua
一线灵1 天前
跨平台游戏引擎 Axmol-2.11.5 发布
游戏引擎·lua
水水不水啊2 天前
告别杂乱的调试窗口:我用 Python + WebView 写了一个现代化串口助手
python·测试工具·嵌入式·嵌入式开发·串口调试·串口助手
花间相见8 天前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
霍格沃兹测试学院-小舟畅学9 天前
UI 测试的语义断言:Midscene aiAssert 比像素比对稳在哪、又会骗在哪
人工智能·测试工具
zuozewei9 天前
附录 A:主流工具对比选型表
人工智能·测试工具
我的xiaodoujiao9 天前
Django 基础知识详细图文教程 10-Django 模板引擎 3
后端·python·测试工具·django
霍格沃兹测试学院-小舟畅学9 天前
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
人工智能·测试工具
Liaiyang669 天前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审