当前位置: 首页 > article >正文

03-Open code MCP 与工具调用

03-MCP 与工具调用掌握 OpenCode 中 MCPModel Context Protocol服务器的配置和使用扩展 AI 的工具能力。一、MCP 概述1.1 什么是 MCPMCPModel Context Protocol是一种标准化协议允许 AI 模型与外部工具和服务进行交互。通过 MCPOpenCode 可以读取和操作本地文件搜索网络信息调用外部 API 和服务运行自定义脚本和工具连接数据库等后端服务1.2 MCP 架构┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ OpenCode │──────│ MCP 协议层 │──────│ 工具服务器 │ │ Client │ │ 中间件 │ │ Server │ └─────────────┘ └─────────────┘ └─────────────┘ │ ┌────────────────────────┼────────────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐ │ File System │ │ Web Search │ │ Custom │ │ Server │ │ Server │ │ Servers │ └─────────────┘ └─────────────┘ └─────────────┘1.3 常用 MCP 服务器服务器功能典型应用File System本地文件操作读取、修改项目文件Web Search网络搜索查询文档、搜索代码Puppeteer/Playwright浏览器自动化测试 Web 应用自定义服务器任意工具根据需求扩展二、配置 MCP 服务器2.1 全局配置MCP 服务器配置在~/.opencode/config.json文件的mcp键下。标准格式使用 stdio 传输通过command和args启动 MCP 服务器进程{mcp:{servers:{filesystem:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-filesystem,/home/user/projects]},web-search:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-web-search]}}}}每个服务器配置包含字段说明type传输类型目前支持stdiocommand启动服务器的命令args命令的参数列表env环境变量可选2.2 使用 CLI 管理 MCP 服务器OpenCode 提供了opencode mcp子命令来管理 MCP 服务器# 添加 MCP 服务器opencode mcpaddnamecommand[args...]# 列出所有 MCP 服务器及其状态opencode mcp list# 或简写opencode mcpls# 认证 OAuth 启用的 MCP 服务器opencode mcp auth[name]# 移除 OAuth 凭据opencode mcplogout[name]# 调试 OAuth 连接opencode mcp debugname2.3 添加常用服务器示例# 添加文件系统服务器允许访问指定目录opencode mcpaddfilesystem npx-ymodelcontextprotocol/server-filesystem /path/to/allowed/dir# 添加自定义 Python MCP 服务器opencode mcpaddmy-server python /path/to/my_mcp_server.py# 查看当前配置的所有服务器opencode mcp list三、File System MCP3.1 配置示例{mcp:{servers:{filesystem:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-filesystem,/home/user/projects]}}}}可以通过在args中指定多个路径来允许访问多个目录{mcp:{servers:{filesystem:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-filesystem,/home/user/projects,/home/user/docs]}}}}3.2 基本文件操作配置后AI 可以通过自然语言请求文件操作读取 app/main.py 创建文件 config.yaml内容为 database: host: localhost port: 5432 列出 app/routers/ 目录下的所有文件 查找所有包含 User 的 Python 文件3.3 安全注意事项File System 服务器只能访问在args中明确指定的目录未列出的目录无法访问确保敏感文件不会被意外暴露建议仅添加项目所需的目录遵循最小权限原则四、Web Search MCP4.1 配置示例{mcp:{servers:{web-search:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-web-search]}}}}4.2 使用搜索配置后AI 可以通过自然语言执行搜索搜索 FastAPI 最佳实践 在 docs.python.org 搜索 asyncio 教程 搜索最新的 Python 3.12 特性并总结主要更新 搜索 SQLAlchemy 2.0 迁移指南应用到当前项目五、社区 MCP 服务器示例MCP 生态中有大量社区开发的服务器可以通过opencode mcp add添加。以下是一些常见类型5.1 浏览器自动化社区提供了基于 Puppeteer 或 Playwright 的 MCP 服务器用于网页截图、表单填写、页面交互等自动化操作# 添加浏览器自动化服务器示例命令具体包名以社区实际发布为准opencode mcpaddbrowser npx-yanthropic-ai/mcp-server-puppeteer配置后可以通过自然语言让 AI 执行浏览器操作如打开页面、截图、填写表单等。5.2 数据库访问社区提供了多种数据库 MCP 服务器如 SQLite、PostgreSQL、MySQL 等支持通过环境变量传递连接字符串# 添加数据库服务器示例命令具体包名以社区实际发布为准opencode mcpadddatabase npx-yanthropic-ai/mcp-server-sqlite ./mydb.sqlite敏感的连接信息应通过env字段在配置中管理而非硬编码。5.3 查找更多 MCP 服务器访问 MCP 服务器市场 浏览官方和社区服务器使用opencode mcp list查看当前已配置的服务器任何支持 stdio 传输的 MCP 服务器都可以通过opencode mcp add添加六、数据库 MCP6.1 配置示例通过环境变量传递敏感的连接信息{mcp:{servers:{database:{type:stdio,command:npx,args:[-y,modelcontextprotocol/server-sqlite,./mydb.sqlite],env:{DATABASE_URL:postgresql://localhost:5432/mydb}}}}}6.2 使用数据库工具执行 SQL: SELECT * FROM users LIMIT 5 显示 users 表的字段结构 统计每个表的记录数 查询最近一周注册的用户按注册时间排序七、自定义 MCP 服务器7.1 创建自定义服务器可以使用任何语言编写 MCP 服务器。以下是一个 Python 示例# my_mcp_server.pyimportasynciofrommcp.serverimportServerfrommcp.typesimportTool,TextContent appServer(my-server)app.list_tools()asyncdeflist_tools():return[Tool(nameget_weather,description获取指定城市的天气,inputSchema{type:object,properties:{city:{type:string}},required:[city]})]app.call_tool()asyncdefcall_tool(name,arguments):ifnameget_weather:cityarguments[city]return[TextContent(typetext,textf{city}的天气是晴朗25°C)]raiseValueError(fUnknown tool:{name})if__name____main__:frommcp.server.stdioimportstdio_server asyncio.run(stdio_server(app))7.2 配置自定义服务器{mcp:{servers:{my-server:{type:stdio,command:python,args:[/path/to/my_mcp_server.py]}}}}也可以使用环境变量{mcp:{servers:{my-server:{type:stdio,command:python,args:[/path/to/my_mcp_server.py],env:{API_KEY:your-api-key,DEBUG:false}}}}}7.3 使用自定义工具配置后AI 可以调用自定义工具使用 get_weather 查询北京天气八、MCP 最佳实践8.1 工具选择任务类型推荐工具原因文件读写File System直接操作效率高搜索信息Web Search覆盖范围广Web 测试Browser (Puppeteer)可视化验证数据查询Database (SQLite/PostgreSQL)实时数据验证特定需求自定义服务器灵活扩展8.2 组合使用读取当前实现搜索更好的方案然后重构 测试 API发现问题修改代码重新测试 查看表结构生成对应的 SQLAlchemy 模型8.3 安全建议仅在args中指定必要的目录路径遵循最小权限原则使用环境变量管理 API 密钥等敏感信息不要硬编码在配置中定期审查~/.opencode/config.json中配置的服务器不再使用的服务器及时从配置中移除九、故障排除9.1 连接问题# 列出所有 MCP 服务器及其状态opencode mcp list# 调试 OAuth 连接如果服务器需要认证opencode mcp debugname# 认证 OAuth 服务器opencode mcp auth[name]9.2 常见问题问题解决方法服务器无法启动检查command和args是否正确确保命令已安装权限错误确认文件系统服务器配置的路径存在且有访问权限OAuth 认证失败使用opencode mcp debug name查看详细错误环境变量未生效检查env字段的格式是否正确9.3 移除服务器# 从配置中移除不再需要的服务器# 直接编辑 ~/.opencode/config.json删除对应的服务器配置# 移除 OAuth 凭据opencode mcplogout[name]十、实战示例10.1 Web 应用开发流程# 1. 创建项目 创建 FastAPI 项目结构 # 2. 设计数据库 查看数据库设计模式 生成 SQLAlchemy 模型 # 3. 开发 API 生成 CRUD 路由 # 4. 测试 API 打开 http://localhost:8000/docs 测试所有端点 截图保存测试结果 # 5. 验证数据 验证数据已正确写入10.2 代码重构流程# 1. 分析现有代码 读取所有相关文件 分析代码结构 # 2. 搜索最佳实践 搜索 SQLAlchemy 2.0 最佳实践 对比当前实现 # 3. 执行重构 批量修改所有模型 更新所有查询语句 # 4. 验证重构 运行测试 检查数据库兼容性十一、下一步掌握 MCP 后建议学习04-SubAgent任务分发.md - 并行处理任务06-Skills复用.md - 创建可复用技能09-实战PythonWebAPI开发.md - 完整项目实战文档版本: 1.1 | 建议学习时长: 45分钟

相关文章:

03-Open code MCP 与工具调用

03-MCP 与工具调用 掌握 OpenCode 中 MCP(Model Context Protocol)服务器的配置和使用,扩展 AI 的工具能力。 一、MCP 概述 1.1 什么是 MCP MCP(Model Context Protocol)是一种标准化协议,允许 AI 模型与…...

新媒体人AI工作流:从选题到爆款,一篇文章搞定全流程

选题挖掘与验证通过社交媒体热点追踪工具(如微博热搜、抖音热榜)或第三方数据平台(新榜、清博)筛选近期高互动话题。结合行业垂直类账号的爆款内容,分析标题关键词和用户评论倾向,确保选题具备传播潜力。数…...

如何在 SvelteKit 中为动态加载的图片实现响应式悬停覆盖层

本文讲解如何在 sveltekit 中正确实现动态图片的鼠标悬停交互(如显示标题/描述覆盖层),避免直接操作 dom,推荐使用响应式状态绑定与组件化方案提升可维护性与编译兼容性。 本文讲解如何在 sveltekit 中正确实现动态图片的鼠标…...

远程电脑连接tplink路由器中的虚拟专网

文章目录前言一、配置路由器1.配置虚拟专网2.新增地址池3.配置用户二、远程电脑连接1.搜索虚拟专网并打开2.配置连接信息3.问题1-连接不上4.问题2-默认网关“争夺”🔍 为什么会这样?—— 默认网关的“争夺”🛠️ 如何改变?—— 启…...

OpenClaw任务编排:gemma-3-12b-it复杂工作流设计指南

OpenClaw任务编排:gemma-3-12b-it复杂工作流设计指南 1. 为什么需要复杂工作流设计 上周我尝试用OpenClaw自动处理一个简单的日报生成任务,结果发现当遇到数据缺失或格式异常时,整个流程就会中断。这让我意识到——真正的自动化不是线性执行…...

利用StructBERT构建企业级文档查重系统

利用StructBERT构建企业级文档查重系统 每次看到新闻里爆出学术论文抄袭、营销文案雷同,或者企业内部报告高度重复,你是不是也会想,要是能有个“火眼金睛”的系统自动发现这些问题就好了?对于教育机构、出版社、大型企业的内容审…...

PM2 服务器服务运维入门指南

PM2 服务器服务运维入门指南 一、PM2 简介 PM2 是一个 Node.js 应用的进程管理器,支持守护进程、监控、日志管理等功能,也支持运行 Python、Shell 等脚本。 二、常用命令速查 1. 查看运行状态 pm2 ps # 查看所有运行中的服务&#xf…...

手把手教你用思博伦GSS7000的SimReplayPlus模块:从硬件连接到功率调节的完整避坑指南

手把手教你用思博伦GSS7000的SimReplayPlus模块:从硬件连接到功率调节的完整避坑指南 第一次接触思博伦GSS7000卫星导航模拟器时,面对复杂的硬件接口和PosApp软件里密密麻麻的参数,不少工程师会感到无从下手。作为业内公认的高精度测试设备&a…...

天龙八部GM工具终极指南:5步掌握高效游戏管理技巧

天龙八部GM工具终极指南:5步掌握高效游戏管理技巧 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool TlbbGmTool是一款专为《天龙八部》单机版本设计的专业游戏管理工具,为游戏管…...

骨干网为什么偏爱IS-IS?从报文结构到PRC算法详解运营商级路由协议设计

骨干网为何青睐IS-IS?从协议设计到现网实践的深度解析 在互联网基础设施的底层,运营商骨干网如同数字时代的高速公路系统,承载着全球90%以上的跨域流量。而这条"信息高速公路"的交通指挥系统,则高度依赖IS-IS&#xff0…...

英文文档处理不求人:UDOP-large一站式解决方案体验

英文文档处理不求人:UDOP-large一站式解决方案体验 1. 引言:告别繁琐的英文文档处理 在日常工作中,处理英文文档是许多专业人士的必修课。无论是学术研究人员需要整理海量论文,财务人员需要处理国际发票,还是法务人员…...

Qwen3-VL:30B系统部署:U盘启动盘制作与安装

Qwen3-VL:30B系统部署:U盘启动盘制作与安装 1. 引言 在AI大模型快速发展的今天,本地化部署多模态模型成为许多开发者和企业的迫切需求。Qwen3-VL:30B作为强大的视觉语言模型,能够在离线环境下提供出色的多模态理解能力。但在开始模型部署之…...

Phi-4-mini-reasoning应用场景:科研工作者论文公式推导与定理验证助手

Phi-4-mini-reasoning应用场景:科研工作者论文公式推导与定理验证助手 1. 模型介绍与核心优势 Phi-4-mini-reasoning是一款专为数学推理和逻辑推导设计的轻量级开源模型,由微软Azure AI Foundry开发。这个3.8B参数的模型虽然体积小巧,但在数…...

StructBERT情感分类镜像保姆级教程:GPU加速中文情感分析快速上手

StructBERT情感分类镜像保姆级教程:GPU加速中文情感分析快速上手 10分钟学会部署和使用专业级中文情感分析模型,让AI帮你读懂用户情绪 1. 前言:为什么要用StructBERT做情感分析? 你有没有遇到过这些情况? 电商平台上…...

Qwen3-Reranker常见问题解决:如何稳定运行Decoder-only架构模型

Qwen3-Reranker常见问题解决:如何稳定运行Decoder-only架构模型 1. 问题背景与核心挑战 在部署Qwen3-Reranker-0.6B模型时,许多开发者会遇到一个典型错误:当使用传统的AutoModelForSequenceClassification加载模型时,系统会报错…...

Ostrakon-VL像素特工部署实战:Python入门者的3步环境搭建指南

Ostrakon-VL像素特工部署实战:Python入门者的3步环境搭建指南 1. 为什么选择Ostrakon-VL 如果你刚接触Python又想尝试AI图像处理,Ostrakon-VL是个不错的起点。这个模型特别适合处理图像扫描和基础视觉任务,对硬件要求不高,部署过…...

PS软件自动化:利用SenseVoice-Small语音指令批量处理图片

PS软件自动化:利用SenseVoice-Small语音指令批量处理图片 你是不是也厌倦了在Photoshop里一遍又一遍地重复那些机械性的操作?给几十张图片统一调整尺寸、批量添加水印、或者对一组照片执行同样的滤镜效果。这些工作既枯燥又耗时,还容易因为手…...

SDMatte移动端优化思路:模型量化与轻量化部署探索

SDMatte移动端优化思路:模型量化与轻量化部署探索 1. 移动端AI部署的挑战与机遇 将大型AI模型部署到移动设备上一直是个技术难题。以SDMatte这样的专业抠图模型为例,原始版本动辄几百MB的模型大小和复杂的计算需求,很难直接在手机或平板上流…...

SECS-II与HSMS核心区别解析

SECS-II与HSMS是SEMI(国际半导体设备与材料协会)制定的半导体设备通讯标准(SECS)协议族中的核心成员,它们在通信栈中扮演着截然不同但又紧密协作的角色。简单来说,SECS-II定义了通信的“内容”和“语义”&a…...

RMBG-2.0部署避坑指南:常见问题解决方案

RMBG-2.0部署避坑指南:常见问题解决方案 1. 引言 最近RMBG-2.0这个开源背景去除模型确实火得不行,效果确实惊艳,精确到发丝级别的抠图能力让很多开发者跃跃欲试。但在实际部署过程中,不少朋友都遇到了各种坑:环境配置…...

Phi-4-mini-reasoning效果展示:离散数学关系性质判定与反例构造生成

Phi-4-mini-reasoning效果展示:离散数学关系性质判定与反例构造生成 1. 模型能力概览 Phi-4-mini-reasoning是一个专注于数学推理的轻量级开源模型,基于高质量合成数据训练而成。这个模型特别擅长处理需要逻辑推理的数学问题,尤其是离散数学…...

免费开源一款聚合支付系统,已封装微信、支付宝、PayPal、京东、银联、QQ等支付方式

大家好,我是小悟。 众所周知,几乎所有商业应用都离不开支付功能,但支付集成却常常成为开发者的"痛点"。 面对微信支付、支付宝、银联等众多支付渠道,每个平台都有自己复杂的API、不同的签名机制和开发规范。 开发者往往…...

EagleEye DAMO-YOLO TinyNAS实战:基于YOLOv8的高效目标检测部署

EagleEye DAMO-YOLO TinyNAS实战:基于YOLOv8的高效目标检测部署 1. 引言 目标检测在实际应用中经常遇到一个难题:既要检测准确,又要运行速度快。传统的解决方案往往需要在精度和速度之间做出妥协,要么选择复杂的模型导致推理缓慢…...

关于wokwi运行程序出错,而实机运行正常的问题

## 先说结论: # 由于wokwi的时间流速和现实不一致,所以rtos的调度可能会有一点差异,导致一些“逻辑有问题但是时序正好能运行”的代码时序改变,然后挂掉了。可以通过backtraceaddr2line寻找出错代码,然后检查逻辑解决#…...

新手必看!手把手教你搭建微调大模型环境,附硬件配置与工具链教程

本文详细介绍了微调大模型的环境搭建与工具链配置,包括硬件要求(不同模型所需显存及推荐显卡)、核心依赖安装(transformers、peft、bitsandbytes等)、Hugging Face生态速览(模型、数据集、Trainer&#xff…...

DeepSeek-OCR-2高级配置:多GPU并行处理优化

DeepSeek-OCR-2高级配置:多GPU并行处理优化 1. 引言 如果你正在处理海量文档,可能会发现单张GPU运行DeepSeek-OCR-2时速度不够理想。一张A100处理复杂文档可能需要几秒钟,当成千上万的文档排队等待时,这个时间就会累积成小时甚至…...

SecGPT-14B作品分享:5类典型安全任务(漏洞/日志/异常/攻防/命令)全覆盖输出

SecGPT-14B作品分享:5类典型安全任务全覆盖输出 1. SecGPT-14B简介 SecGPT是由云起无垠团队于2023年推出的开源大语言模型,专门针对网络安全领域设计开发。该模型基于先进的自然语言处理技术,融合了安全专业知识库,能够高效处理…...

SDMatte助力电商应用:批量生成商品透明背景主图实战

SDMatte助力电商应用:批量生成商品透明背景主图实战 1. 电商行业的商品图处理痛点 电商商家每天都要处理大量商品图片,其中最常见也最耗时的任务之一就是抠图。无论是上新商品还是优化现有商品展示,都需要将商品从原始背景中分离出来&#…...

Qwen3.5-9B实战教程:app.py添加流式输出支持+前端loading状态优化

Qwen3.5-9B实战教程:app.py添加流式输出支持前端loading状态优化 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解(图文输入)和长上下文处理&…...

项目建议书、可研报告与初步设计方案的定位与关联

在信息化项目建设过程中,项目建议书、可行性研究报告(以下简称“可研报告”)和初步设计方案是前期工作阶段最为核心的三份文件,它们共同构成了项目从构想到落地的决策链条,承担着不同阶段的论证与规划职责。然而实际工…...