MCP-学习(1)

MCP学习的前置知识

这一章主要对MCP的前置知识进行学习:stdio(通信方式)、JSON-RPC(通信格式)

stdio

stdio:st and ard i nput and output (标准输入输出)

进程之间是相互独立的,而进程需要与外界进行通信,通信的方式有很多,其中一种就是stdio。它能够让一个进程 通过标准输出接口(stdout) 向外界发送信息、外界也可以 通过它的标准输入接口(stdin) 向进程中写入一些信息。

举个栗子🌰

标准输出接口

用node.js来写个简单案例:

js 复制代码
//创建一个server.js
//process进程  stdout标准输出
process.stdout.write('Hello World!!\n')

然后在终端中运行它node server.js (意思:启动一个node进程,参数是'server.js'),就会发现终端中打印了Hello World!!。没错看起来效果很像console.log(),因为在node环境console.log()的内部确实是调用了process.stdout.write()加上一些额外处理。

那我们刚刚说了,stdio是通信方式呀,那这里是谁跟谁通信了嘞?这里其实是node进程与终端进行通信了 :终端本身是一个进程,它在 启动子进程(这里是node进程) 的时候会去 监听子进程的标准输出接口,终端已经内置了这些流程,当它监听到数据后就会将其显示在终端。

标准输入接口
js 复制代码
//server.js
//监听父进程(终端)输入
process.stdin.on('data',(data)=>{
    const resp = `回复 ${data}\n`
    process.stdout.write(resp)
})

运行后,会发现终端中就会一直运行着这个node进程,可以在终端输入数据然后回车来发送,就可以被node子进程接收到。那么我们就会发现,在这个场景下,终端 类似于客户端 ,因此才会给这个js文件起名为server.js

当然node.js自己本身也可以作为一个父进程来创建更多子进程:

js 复制代码
import {spawn} from 'child_process'

// 创建子进程
const serverProcess = spawn('node',['server.js']) //启动node应用程序,参数是'server.js'

stdio的特点:简洁、高效 ,但仅适用于本地进程间通信

JSON-RPC (通信格式约束)

request(2.0的版本,如果用到不同版本需要分析)
json 复制代码
{
    'jsonrpc': '2.0',  //版本
    'method': 'sum',   //方法
    'params': {        //参数
        "a": 5,
        "b": 6
    },
    'id': 1            //标记
}
response
json 复制代码
{
    'jsonrpc': '2.0',  //版本
    'result': 11,
    'id': 1
}

这边从server.js这边写一个测试:

js 复制代码
import utils from './utils.js'
process.stdin.on('data',(data)=>{
    const req = JSON.parse(data)
    const funcName = req.method
    const params = req.params
    const result = utils[funcName](params)
    const res = {
        'jsonrpc': '2.0',
        'result': result,
        'id': req.id
    }
})

小结

这些通信,主要是补充了某一些进程功能上的不足

相关推荐
想用offer打牌3 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅3 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60614 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX4 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法5 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端