MCP的本质
是一系列tools工具的集合。由于是一种集合,内部工具数量巨多,Agent应用会一次性通过提示词的方式告诉模型有哪些工具,什么时候调用以及具体的一些参数,这些提示词字数庞大会增加上下文,造成token的额外消耗。
最佳实践:采用skills,渐进式的方式,只提供一部分提示词,如工程规范、文件如何创建、git提交等。减少上下文,并且同样能够调用tools因为内部可内置脚本文件。
MCP 问题排查记录
在添加Chrome devTools MCP服务的过程中遇到无法连接的问题的排查过程
- 检查opencode.json配置
- 检查MCP服务本身。检查node版本-->npx运行-->更换专门测试MCP连接的MCP服务(×)@modelcontextprotocol/server-everything - npm
- opencode本身连接不上MCP。包管理器?卸载Volta,用npm下载,正常。
总结:Volta的shim二进制特性会改变opencode初始化设置的路径,导致无法连接服务。且由于设置的环境变量有优先级,通过npm下载的会被Volta拦截,降低Volta优先级又不能切换node版本(不用nvm是因为Volta切换版本更快),因此删除Volta。
记住了一些命令:
- npm config get registry 。npm源
- npm config get prefix。npm全局安装文件地址
where.exe opencode查找全局命令的地址
目前Volta非必要,故不寻找Volta和npm兼容的方法。
简化opencode命令的过程
- 系统环境变量。不能改变opencode脚本文件名称,pass.
- PowerShell Set-Alias方法。
- bat脚本:编写bat脚本在npm全局文件夹下,相当于做一层中间代理转发。
命名为oc,后续直接oc启动命令即可。
@echo off
npx opencode %*