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

MCP 基于 TypeScript 的完整示例,包含stdio、sse多种用法和调试,对于构建自己的API工具链很有用

typescript-mcp-demo

这是一个基于 Model Context Protocol (MCP) 的 TypeScript 示例项目,展示了如何创建一个简单的 MCP 服务器,包含基本的工具(tools)和资源(resources)功能。

官网:https://github.com/tuonioooo/typescript-mcp-demo

功能特性

  • 提供一个简单的加法工具(add tool)
  • 提供一个动态问候资源(greeting resource)
  • 使用 TypeScript 开发
  • 支持标准输入/输出通信

相关文档

  • MCP TypeScript SDK - 官方 TypeScript SDK 文档
  • MCP Inspector - MCP 服务测试工具文档
  • Model Context Protocol - MCP 协议规范文档

环境要求

  • Node.js >= 20.10.0
  • pnpm >= 8.0.0

安装步骤

  1. 安装依赖:
pnpm i
  1. 编译项目
pnpm run build

编译后的文件将输出到 dist 目录。

示例

  • 有关标准输入输出 (stdio) 传输方式的详细信息,请参考 stdio 传输说明。
  • 对于远程服务器,使用服务器发送事件(SSE)端点和单独的端点启动web服务器,请参考HTTP with SSE
  • OpenAI 绑定函数 与 自定义的MCP工具集成指南
  • OpenAI 自定义指令 与 自定义的MCP工具集成示例

开发新功能

要添加新的工具或资源,请在 src/index.ts 中:

  1. 使用 server.tool() 添加新工具
  2. 使用 server.resource() 添加新资源
  3. 使用 Zod 定义输入参数的类型
  4. 实现相应的处理逻辑
  5. 创建对应的测试用例文件

故障排除

如果遇到问题:

  1. 确保所有依赖都已正确安装
  2. 检查编译输出是否有错误
  3. 验证测试用例 JSON 格式是否正确
  4. 检查进程输入输出是否正确配置

注意事项

  • 确保测试时使用编译后的 JavaScript 文件(在 dist 目录中)
  • 使用 @modelcontextprotocol/inspector 工具进行测试
  • 遵循 JSON-RPC 2.0 规范编写请求
  • 正确处理异步操作和错误情况

相关文章:

MCP 基于 TypeScript 的完整示例,包含stdio、sse多种用法和调试,对于构建自己的API工具链很有用

typescript-mcp-demo 这是一个基于 Model Context Protocol (MCP) 的 TypeScript 示例项目,展示了如何创建一个简单的 MCP 服务器,包含基本的工具(tools)和资源(resources)功能。 官网:https:…...

【计算机视觉】CV项目实战- SORT 多目标跟踪算法

SORT 多目标跟踪算法:从原理到实战的完整指南 一、SORT算法核心解析1.1 算法架构1.2 关键技术组件 二、实战环境搭建2.1 基础环境配置2.2 数据准备 三、核心功能实战3.1 基础跟踪演示3.2 自定义检测器集成3.3 性能评估 四、高级应用与优化4.1 针对遮挡场景的改进4.2…...

常用第三方库精讲:cached_network_image图片加载优化

常用第三方库精讲:cached_network_image图片加载优化 在Flutter应用开发中,图片加载是一个非常重要的环节。合理的图片加载策略不仅能提升用户体验,还能优化应用性能。本文将深入讲解cached_network_image库的使用,以及如何通过它…...

xcode 16 遇到contains bitcode

问题 "id" : "xxx-xxx-xxx","status" : "409","code" : "STATE_ERROR.VALIDATION_ERROR","title" : "Validation failed","detail" : "Invalid Executable. The executable …...

MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)

专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、简介 1.1. 为什么要使用联合查询 1.2. 多表联合查询时的计算 1.3. 示例 二、内连接 2.1. 语法 2.2. 示例 三、外连接 4.1. 语法 4.2. 示例 一、简介 1.1. 为什么要使用联合查询 一次查询需…...

Sentinel源码—9.限流算法的实现对比二

大纲 1.漏桶算法的实现对比 (1)普通思路的漏桶算法实现 (2)节省线程的漏桶算法实现 (3)Sentinel中的漏桶算法实现 (4)Sentinel中的漏桶算法与普通漏桶算法的区别 (5)Sentinel中的漏桶算法存在的问题 2.令牌桶算法的实现对比 (1)普通思路的令牌桶算法实现 (2)节省线程的…...

单片机外设模块汇总与介绍

一、基础外设 GPIO(通用输入输出) 功能:数字信号输入/输出,支持推挽、开漏模式。 应用:控制LED、按键检测、数字传感器接口。 配置要点: 输入模式:上拉/下拉电阻配置 输出模式:…...

git lfs下载大文件限额

起因是用 model.load_state_dict(torch.load())加载pt权重文件时,出现错误:_pickle.UnpicklingError: invalid load key, ‘v’. GPT告诉我:你的 pt 文件不是权重文件,而是模型整体保存(或根本不是 PyTorch 文件&#…...

第4天:Linux开发环境搭建

🧰 第4天:Linux开发环境搭建 一、GCC 编译器 📌 1. 什么是 GCC? GCC(GNU Compiler Collection)是 GNU 工程开发的编译器集合,主要支持 C、C、Fortran 等语言的编译,是 Linux 系统中…...

“在中国,为中国” 英飞凌汽车业务正式发布中国本土化战略

3月28日,以“夯实电动化,推进智能化,实现高质量发展”为主题的2025中国电动汽车百人会论坛在北京举办。众多中外机构与行业上下游嘉宾就全球及中国汽车电动化的发展现状、面临的挑战与机遇,以及在技术创新、市场布局、供应链协同等…...

【AI应用】免费代码仓构建定制版本的ComfyUI应用镜像

免费代码仓构建定制版本的ComfyUI应用镜像 1 创建代码仓1.1 注册登陆1.2 创建代码仓1.5 安装中文语言包1.4 拉取ComfyUI官方代码2 配置参数和预装插件2.1 保留插件和模型的版本控制2.2 克隆插件到代码仓2.2.1 下载插件2.2.2 把插件设置本仓库的子模块管理3 定制Docker镜像3.1 创…...

新市场环境下新能源汽车电流传感技术发展前瞻

新能源革命重构产业格局 在全球碳中和战略驱动下,新能源汽车产业正经历结构性变革。国际清洁交通委员会(ICCT)最新报告显示,2023年全球新能源汽车渗透率突破18%,中国市场以42%的市占率持续领跑。这种产业变革正沿着&q…...

ctfhub-RCE

关于管道操作符 windows: 1. “|”:直接执行后面的语句。 2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。 3. “&”:两条命令都执行,如果前面的语句为假则直…...

SSE(Server-Sent Events)技术详解:轻量级实时通信的全能方案

一、实时通信技术演进与SSE定位 1.1 主流实时通信技术对比 #mermaid-svg-1VQcZqAOmMoxosiW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1VQcZqAOmMoxosiW .error-icon{fill:#552222;}#mermaid-svg-1VQcZqAOmMox…...

QT项目----电子相册(4)

文章目录 前言一、右侧区域PicShow1.创建PicShow2.创建PicButton3.效果图qss 4.设置动画QGraphicsOpacityEffectQPropertyAnimation 5.双击左侧图片目录 右侧显示图片解决缩放时卡顿的问题 二、删除相册实现思路代码实现 总结 前言 提示:这里可以添加本文要记录的大…...

Sentinel源码—9.限流算法的实现对比一

大纲 1.漏桶算法的实现对比 (1)普通思路的漏桶算法实现 (2)节省线程的漏桶算法实现 (3)Sentinel中的漏桶算法实现 (4)Sentinel中的漏桶算法与普通漏桶算法的区别 (5)Sentinel中的漏桶算法存在的问题 2.令牌桶算法的实现对比 (1)普通思路的令牌桶算法实现 (2)节省线程的…...

46. 全排列

题目 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#xff1a…...

UML 顺序图:电子图书馆管理系统的交互之道

目录 一、初识 UML 顺序图 二、电子图书馆管理系统顺序图解析 (一)借阅流程 (二)归还流程 三、顺序图绘画 四、顺序图的优势与价值 五、总结 UML 顺序图是描绘系统组件交互的有力工具。顺序图直观展示消息传递顺序与对象协…...

前端渲染pdf文件解决方案-pdf.js

目录 一、前言 二、简介 1、pdf.js介绍 2、插件版本参数 三、通过viewer.html实现预览(推荐) 1、介绍 2、部署 【1】下载插件包 【2】客户端方式 【3】服务端方式(待验证) 3、使用方法 【1】预览PDF文件 【2】外部搜索…...

接口测试和功能测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者…...

LeetCode热题100--283.移动零--简单

1.题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0]…...

CoT 数据集如何让大模型学会「一步一步思考」?

目前,大模型的回答路径基本遵循input-output的方式,在面对复杂任务时表现不佳。反之,人类会遵循一套有条理的思维流程,逐步推理得出正确答案。这种差异促使人们深入思考:如何才能让大模型“智能涌现”,学会…...

量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体)

总章数字免疫系统的解剖学革命 在2024年某国家级数字政务平台的安全审计中,传统前端架构暴露出的信任链断裂问题,导致公民隐私数据以每秒23TB的速度在暗网流通。当我们用PET扫描技术观察现代Web应用的微观结构,发现94.7%的安全威胁源自组件间…...

配置 Nginx 的 HTTPS

证书文件 文件名 作用 来源 example.com.key 服务器的私钥,用于加密和解密数据。 本地生成 -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAqp5c... -----END RSA PRIVATE KEY----- example.com.csr 证书签名请求文件,包含公钥和申请者信息&…...

FPGA开发流程初识

FPGA 的开发流程可知,在 FPGA 开发的过程中会产生很多不同功能的文件,为了方便随时查找到对应文件,所以在开始开发设计之前,我们第一个需要考虑的问题是工程内部各种文件的管理。如 果不进行文件分类,而是将所有文件…...

c++中的enum变量 和 constexpr说明符

author: hjjdebug date: 2025年 04月 23日 星期三 13:40:21 CST description: c中的enum变量 和 constexpr说明符 文章目录 1.Q:enum 类型变量可以有,--操作吗?1.1补充: c/c中enum的另一个细微差别. 2.Q: constexpr 修饰的函数,要求传入的参数必需是常量吗&#xff…...

JVM学习笔记

1、jvm概述 1.1、即时编译 为什么java没有c和c快 多了一层解释,而即时编译就是将热点数放入内存,下次执行的时候不用解释,提高了效率 1.2、常见的jvm jvm不止一个,意不意外?惊不惊喜? 1.3、hotspot的发展…...

AtCoder Beginner Contest 402题解

A - CBC 思路&#xff1a;仔细看这题其实就发现&#xff0c;我们只需要遍历一遍字符串把大写字母输出即可&#xff0c;很标准的签到题 #include<bits/stdc.h> using namespace std; #define int long longsigned main() {string s;cin>>s;for(char c:s){if(c>A…...

Rust 语言使用场景分析

1. 引言&#xff1a;Rust 语言概述 Rust 是一门专注于性能、内存安全和并发性的现代系统编程语言。自 2010 年由 Mozilla Research 的 Graydon Hoare 发起&#xff0c;并于 2015 年正式发布以来&#xff0c;Rust 凭借其独特的设计理念和强大的功能集&#xff0c;在技术领域迅速…...

HTTP 请求头的 key 不区分大小写。

详细说明 HTTP 协议规范 根据 RFC 7230&#xff0c;HTTP 头字段的名称&#xff08;即 key&#xff09;在传输时不区分大小写。例如&#xff0c;Content-Type 和 content-type 被视为相同的字段。 实际行为 客户端行为&#xff1a;大多数 HTTP 客户端&#xff08;如浏览器、cur…...

4.RabbitMQ - 延迟消息

RabbitMQ延迟消息 文章目录 RabbitMQ延迟消息一、延迟消息介绍二、实现2.1 死信交换机2.2 延迟消息插件2.3 取消超时订单 一、延迟消息介绍 延迟消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间后才收到消息 用户…...

C++学习:六个月从基础到就业——STL算法(一) 基础与查找算法

C学习&#xff1a;六个月从基础到就业——STL算法&#xff08;一&#xff09; 基础与查找算法 本文是我C学习之旅系列的第二十五篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第三篇&#xff0c;主要介绍C STL算法库的基础知识与查找类算法。查看完整系列目录了解…...

springboot+vue 支付宝支付(沙箱方式,测试环境使用)

准备工作&#xff1a; 1 支付宝沙箱环境的公钥&#xff0c;私钥配置&#xff0c;查询等使用&#xff0c;如果是用自定义的方式&#xff0c;需要下生成公钥&#xff0c;私钥的工具&#xff0c;否则不需要 登录 - 支付宝 小程序文档 - 支付宝文档中心 2 本地测试时&…...

安装win11自带linux是报错:WslRegisterDistribution failed with error: 0x800701bcErr

确保系统设置中的“打开win11的子系统”已打钩 管理员身份运行cmd&#xff0c;并输入如下 然后再重启ubantu...

面试经历(一)雪花算法

uid生成方面 1&#xff1a;为什么用雪花算法 分布式ID的唯一性需要保证&#xff0c;同时需要做到 1&#xff1a;单调递增 2&#xff1a;确保安全&#xff0c;一个是要能体现出递增的单号&#xff0c;二一个不能轻易的被恶意爬出订单数量 3&#xff1a;含有时间戳 4&#…...

docker底层原理简述

前言 平时用docker很多&#xff0c;今天深入了解下docker原理层面的实现&#xff0c;包括docker核心概念&#xff0c;文件系统&#xff0c;资源隔离&#xff0c;网络通信等 参考文章&#xff1a; Docker底层原理&#xff08;图解秒懂史上最全&#xff09; - 疯狂创客圈 - 博…...

【6D位姿估计】Foundation Pose复现

主要参考 项目仓库README站内其他博文 注意事项 容器化部署不难&#xff0c;主要是部署docker本身会存在一些环境问题&#xff0c;重点关注访问外网的端口需要手动调整至与魔法相同&#xff0c;可以参考&#xff1a; docker部署在启动容器镜像后&#xff0c;需要注意镜像当前…...

TDengine 数据订阅设计

简介 数据订阅作为 TDengine 的一个核心功能&#xff0c;为用户提供了灵活获取所需数据的能力。通过深入了解其内部原理&#xff0c;用户可以更加有效地利用这一功能&#xff0c;满足各种实时数据处理和监控需求。 基本概念 主题 与 Kafka 一样&#xff0c;使用 TDengine 数…...

VMware Fusion Pro 13 Mac版虚拟机 安装Win11系统教程

Mac分享吧 文章目录 Win11安装完成&#xff0c;软件打开效果一、VMware安装Windows11虚拟机1️⃣&#xff1a;准备镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;安装虚拟机5️⃣&#xff1a;解决连不上网问题 安装完成&#xff01;&#xff0…...

高并发下单库存扣减异常?飞算 JavaAI 自动化生成分布式事务解决方案

在电商、旅游等行业业务量激增&#xff0c;高并发下单场景中&#xff0c;传统库存扣减方式弊端尽显。超卖问题因缺乏有效并发控制机制频发&#xff0c;多个订单同时访问库存数据&#xff0c;导致同一商品多次售出&#xff0c;订单无法履约引发客户投诉&#xff1b;同时&#xf…...

crictl 遇到报错 /run/containerd/containerd.sock: connect: permission denied

报错内容 crictl --runtime-endpoint unix:///run/containerd/containerd.sock logs CONTAINERID FATA[0000] validate service connection: validate CRI v1 runtime API for endpoint "unix:///run/containerd/containerd.sock": rpc error: code Unavailable de…...

CSS外边距合并现象

外边距合并&#xff08;Margin Collapsing&#xff09;是指在文档流中&#xff0c;两个或多个相邻元素的外边距&#xff08;margin&#xff09;会合并为一个外边距&#xff0c;其大小会取其中最大的外边距值 当两个相邻的兄弟元素之间没有其他内容&#xff08;如边框、内边距、…...

《深度神经网络之数据增强、模型保存、模型调用、学习率调整》

文章目录 前言一、数据增强1、什么是数据增强&#xff1f;2、数据增强的实现方法&#xff08;1&#xff09;几何变换翻转:旋转&#xff1a;平移&#xff1a; &#xff08;2&#xff09;颜色变换亮度调整&#xff1a;对比度调整&#xff1a;色彩抖动&#xff1a; &#xff08;3&…...

【Java学习笔记】random的使用

random使用方法 使用说明&#xff1a;返回的是(0<n<1)这个范围中的任意带正号的double值 代码实例 public class helloworld{public static void main(String[] args){System.out.println(Math.random());} }生成0-100中的任意数代码示例 public class Main {public …...

Redis的string类型使用

第一步&#xff1a;添加缓存 以若依岗位代码为例 一&#xff1a;首先从redis中查询岗位信息&#xff0c;如果查询到了则直接返回。 二&#xff1a;如果redis中没有数据&#xff0c;则直接从数据库中查询。查询后放到redis并返回 package com.ruoyi.system.service.impl;imp…...

AIGC架构与原理

AIGC&#xff08;AI Generated Content&#xff0c;人工智能生成内容&#xff09;的架构与原理 AIGC通过整合数据采集、模型训练、推理服务等模块&#xff0c;结合深度学习与生成对抗网络&#xff08;GAN&#xff09;等技术&#xff0c;实现从数据到内容的自动化生成。 一、AIG…...

安全复健|windows常见取证工具

写在前面&#xff1a; 此博客仅用于记录个人学习内容&#xff0c;学识浅薄&#xff0c;若有错误观点欢迎评论区指出。欢迎各位前来交流。&#xff08;部分材料来源网络&#xff0c;若有侵权&#xff0c;立即删除&#xff09; 取证 01系统运行数据 使用工具&#xff1a;Live-F…...

Oracle EBS R12.2 汉化

一、前言 在使用oracle ebs时&#xff0c;使用中文会更好的理解整个ebs流程&#xff0c;以下介绍oracle r12中文补丁的方式 如果你的系统除了支持英语外&#xff0c;还支持其他语言&#xff0c;比如中文&#xff0c;那你在下载补丁的时候除了下载Generic Platform版本外&#…...

【Java面试笔记:基础】12.Java有几种文件拷贝方式?哪一种最高效?

在 Java 中,文件拷贝可以通过多种方式实现,不同方式的性能和适用场景有所差异。 1. Java 文件拷贝方式 传统 IO 方式 使用 FileInputStream 和 FileOutputStream,通过循环读取和写入数据实现文件拷贝。 示例代码: try (InputStream is = new FileInputStream("sou…...

互联网大厂Java面试:RocketMQ、RabbitMQ与Kafka的深度解析

互联网大厂Java面试&#xff1a;RocketMQ、RabbitMQ与Kafka的深度解析 面试场景 面试官&#xff1a;马架构&#xff0c;您好&#xff01;欢迎参加我们的面试。今天我们将围绕消息中间件展开讨论&#xff0c;尤其是RocketMQ、RabbitMQ和Kafka。您有十年的Java研发和架构设计经…...