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

AI工具集:本地Node基于云端AI模型使用Stdio封装自定义MCP服务

AI工具集:本地Node基于云端AI模型使用Stdio封装自定义MCP服务

背景

购买 Coding Plan 除了能替代 AI编辑器 内置 Agent 处理代码问题,还可以封装自定义 MCP 服务。在 技术方案 / 代码修改 / 单元测试 / Code Review时候进行审核辅助,毕竟单一模型在不同能力维度上各有侧重。搭建一个本地的自定义 MCP 服务,是一个很有意义的方案

本文将一步步带你配置本地版本 MCP 服务,也可以学习自建MCP服务的过程和注意事项

资源应用介绍

  1. Agent:讯飞星辰 MaaS · Astron Coding Plan
  2. 编辑器:Trae(其他编辑器类同)
  3. 服务端:本地 Node 搭建 Stdio 服务

1. Agent套餐

Coding Plan是专为开发者打造的高性能 AI 算力订阅服务,可一站式调用顶流大模型,全面提效代码生产。

1.1 购买套餐

最主要是便宜,首月3.9元不限量 https://maas.xfyun.cn/packageSubscription

1.2 可用模型

2. 搭建MCP服务

2.1 新建文件

新建一个目录,并新建【package.json】【stdio.js】

2.1.1 package.json
{"name":"localmcp","version":"1.0.0","description":"MCP 服务,调用云端 AI 模型","main":"index.js","scripts":{"start:stdio":"node stdio.js"},"keywords":[],"author":"","license":"ISC","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^4.4.3"}}
2.1.2 stdio.js

stdio.js 是 MCP (Model Context Protocol) 服务的本地部署版本 。本地使用 sse 模式,和本文不一致

替换自己的 API_KEY,若是其他平台更换 url地址 和模型ID

#!/usr/bin/env nodeconst{McpServer}=require('@modelcontextprotocol/sdk/server/mcp.js');const{StdioServerTransport}=require('@modelcontextprotocol/sdk/server/stdio.js');const{z}=require('zod');/** * 调用云端 AI 模型进行对话或代码生成 * @param {Array<{role: 'user'|'assistant', content: string}>} messages - 对话消息数组 * @param {Object} [options={}] - 配置选项 * @param {string} [options.model='astron-code-latest'] - 模型名称 * @param {'openai'|'anthropic'} [options.provider='openai'] - API 提供商类型 * @returns {Promise<{content: Array<{type: string, text: string}>}>} AI 响应结果 * @throws {Error} 当 API 请求失败或返回非 JSON 格式时抛出错误 */asyncfunctioncallAI(messages,options={}){constmaxTokens=131072;constOPENAI_URL='https://maas-coding-api.cn-huabei-1.xf-yun.com/v2/chat/completions';constANTHROPIC_URL='https://maas-coding-api.cn-huabei-1.xf-yun.com/anthropic/v1/messages';constMODEL_ID='astron-code-latest';constAPI_KEY='xxxxxxxxxx';const{model=MODEL_ID,provider='openai'}=options;constapiUrl=provider==='anthropic'?ANTHROPIC_URL:OPENAI_URL;constisAnthropic=provider==='anthropic';constbody=isAnthropic?{model,max_tokens:maxTokens,messages:messages.map(m=>({role:m.role,content:m.content}))}:{model,messages:messages.map(m=>({role:m.role,content:m.content})),max_tokens:maxTokens};constres=awaitfetch(apiUrl,{method:'POST',headers:{'Content-Type':'application/json','Authorization':`Bearer${API_KEY}`,'X-Api-Key':API_KEY,'X-Language':'zh-CN',...(isAnthropic?{'anthropic-version':'2023-06-01'}:{})},body:JSON.stringify(body)});if(!res.ok){consterrText=awaitres.text();thrownewError(`API${res.status}:${errText.slice(0,500)}`);}constcontentType=res.headers.get('content-type')||'';if(!contentType.includes('application/json')){consterrText=awaitres.text();thrownewError(`API返回非JSON格式(${contentType}):${errText.slice(0,200)}`);}constdata=awaitres.json();if(isAnthropic)return{content:[{type:'text',text:data.content?.[0]?.text||''}]};return{content:[{type:'text',text:data.choices?.[0]?.message?.content||data.choices?.[0]?.message?.reasoning_content||JSON.stringify(data)}]};}/** * 创建 MCP 服务器实例 * @description 定义服务名称和版本号,用于与客户端建立通信 */constserver=newMcpServer({name:'agentmcp',version:'1.0.0'});/** * 注册 'chat' 工具 * @description 提供调用云端 AI 模型进行对话或代码生成的能力 * 支持 OpenAI 和 Anthropic 兼容接口 * @param {messages} 对话消息数组,支持 user/assistant 角色 * @param {model} [可选] 指定使用的模型名称(默认 astron-code-latest) * @param {provider} [可选] API 提供商类型(openai 或 anthropic) */server.tool('chat','调用云端 AI 模型进行对话或代码生成,支持 OpenAI 和 Anthropic 兼容接口',{messages:z.array(z.object({role:z.enum(['user','assistant']),content:z.string()})),model:z.string().optional().describe('模型名称,默认 astron-code-latest'),provider:z.enum(['openai','anthropic']).optional().describe('API 提供商,默认 openai')},async({messages,model,provider})=>{try{returnawaitcallAI(messages,{model,provider});}catch(err){return{content:[{type:'text',text:`[ERROR]${err.message}`}],isError:true};}});/** * 启动 MCP 服务器并监听 stdio 传输 * 通过标准输入输出与客户端进行通信 * @returns {Promise<void>} */asyncfunctionmain(){consttransport=newStdioServerTransport();awaitserver.connect(transport);}/** * 启动 MCP 服务器 * @description 调用 main 函数启动服务,捕获并输出异常信息到控制台 */main().catch(console.error);

2.2 配置本地服务端

安装依赖,不需要运行,不需要运行,不需要运行

npminstall

3. 编辑器调用MCP

JSON 数据
{"mcpServers":{"localmcp":{"command":"node","args":["/Users/mr.w/object/localmcp/stdio.js"]}}}

注意:若是配置【node】后运行失败,则使用本地node查询,使用全链接

whichnode
效果

4. 测试功能

发送一条对话消息,测试 MCP 服务功能。

恭喜搭建完毕!现在你可以在公司或家中调用该服务了。

5. 调用建议

在编辑器定义【个人规则】或 【项目规则】,约定自动触发时机 和 内容,避免每次还要在对话框内说明调用,比较麻烦

优先级权重:对话框 > 项目规则 > 个人规则


宝塔面板基于云端AI模型使用SSE封装自定义MCP服务: https://blog.csdn.net/weixin_44461275/article/details/161430697

http://www.jsqmd.com/news/900453/

相关文章:

  • 基于断言与故障分析的RTL级近似计算自动化探索方法
  • 为什么你的ChatGPT健身计划总失败?运动生理学博士揭穿5大AI认知盲区,附可立即复用的Prompt黄金模板
  • Linux内核开发者视角:深入SMMUv3驱动,手把手拆解dma_map_sg()的IOVA连续映射魔法
  • 如何快速轻松地删除 iPhone/iPad 上的提醒事项
  • 国产第一!Qwen3.7-Max全端上线,好易智算同步首发,企业级Agent底座再添新选择
  • 收藏 | RAG技术揭秘:让AI回答更靠谱,小白也能轻松上手学大模型!
  • 5G毫米波信道模型对比:3GPP与NYUSIM如何影响系统设计与性能评估
  • 别再乱选电容了!手把手教你搞定阻容降压电路,从0.47uF到安规X2电容的保姆级选型指南
  • 避坑指南:你的PLS-DA结果可靠吗?聊聊mixOmics包里的scale、logratio与near.zero.var参数设置
  • 面壁开源1B端侧模型,AI Yang的“端云协同”路线得到验证
  • 基于 HarmonyOS 6.0 的日程备忘应用:时间线组件与任务状态管理详解
  • 基于OpenCL的FPGA信号处理:低延迟流水线设计与工程实践
  • 别再只盯着准确率了!手把手教你用Python计算语义分割的MIoU(附完整代码)
  • 抖音无水印下载:从手动保存到自动化批量采集的终极方案
  • 无广告免费壁纸工具,手机电脑壁纸随心更换
  • 大模型下半场:从“模型能力”到“系统能力”,RAG、Agent如何重塑产业竞争格局?
  • C语言中求余运算符的使用解读
  • AI应用可观测性工程2026:LLM调用追踪评估与监控全栈实践
  • 保姆级教程:用CAT_pack和IMG/VR4数据库搞定宏基因组contig物种分类(附蛋白ID与TaxID映射避坑指南)
  • 跨越十个数量级的能效革命:从GPU到忆阻器,神经计算硬件的能耗全景与路径选择
  • 睡眠呼吸暂停监测:轻量化CNN与ECG信号分析
  • jQuery Mobile 页面
  • 项目介绍 MATLAB实现基于BMA-XGB 贝叶斯模型平均(BMA)结合极端梯度提升(XGB)进行股票价格预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励
  • LeetCode 22. 括号生成(JS里的回溯算法)
  • CPT Markets:多维度评测平台透明度与稳定性
  • 终极指南:3分钟掌握FSearch极速文件搜索神器,告别Linux找文件烦恼!
  • 基于 HarmonyOS 6.0 的日程备忘应用:待办事项板与提醒卡片详解
  • 2026最新!3款抖音视频提取免费神器,亲测无水印直存,真香体验好用到哭!
  • 【限时首发】ChatGPT生日派对创意黄金公式:基于217场真实活动AB测试提炼的5大变量模型
  • 仿生优化算法NOAH:从藤壶幼虫到水下机器人集群的智能协同