MCP inspector提交一个完成合入的PR

记录我给inspector项目提交一个完成合入PR的过程

PR#772记录

  • 这个PR的核心是如下对于schemaUtils.ts文件的generateDefaultValue方法的如下修改,这个方法的注释里写的是基于JSON Schema类型生成一个默认值,在main分支以前的代码里对于string、number、boolean等primitive类型是区分是否required进行不同的处理的,但是对于object和array类型没有判断是否required进行不同的处理

    Generates a default value based on a JSON schema type

1
2
3
4
5
-      return [];
+ return isRequired ? [] : undefined;
case "object": {
- if (!schema.properties) return {};
+ if (!schema.properties) return isRequired ? {} : undefined;

vscode上安装Github PR/Issue 插件

  • 安装上了这个插件就能在vscode上同步inspector仓库的PR与issue了

PR#786记录

  • 这个PR里放了一个作者自己进行自测的视频
  • 这个视频里展示了一个启动一个mcp server的命令
1
2
cd typescript-sdk(mcp的ts sdk)
npx tsx --watch src/examples/server/simpleStreamableHttp.ts --oauth

client这个workspace是使用react写的

server这个workspace是使用express.js开发的

UT

  • 开源远程工作者Anthony Fu博客中写到,参考TDD(测试驱动开发)的思路,作为一个用户在向一个仓库报bug的时候,可以先为仓库添加相应的用例,这样既能保证bug被修复,也能作为一个用例持续保持项目在这一个用例上的正确性
  • 因为前面准备了cva仓库的练习,所以是先看了client这个workspace下的component库,ls -lh命令找到了最小文件大小的samplingTab.test.tsx文件,在cd到client文件夹下后,使用npm test -- samplingTab能执行这个文件下的用例;这个文件下有两个用例,当pendingRequests为空数组时和pendingRequests为包含5个元素的数组时的场景;在跟着这个测试用例走的时候,找到了第一个错误点,并提出了第一个PR

处理别人的issue

  • 我偏向于按照自己的节奏探索inspector项目的架构,我会觉得处理别人的issue是浪费时间;但是换一个角度想问题,是不是我掌握inspector项目,建立和inspector项目的了解关系是不是就是为了帮助别人,好像不是为了帮助别人,而是为了自己能在简历里写自己曾深度的参与一个开源项目,贡献了多少个PR
  • 处理了别人的issue是否需要在后面留言,可以follow一下自己的github账号
  • 参与项目过程肯定是一个要有收获的过程,学到项目的开发框架,开源项目的组织形式

finished

  • 我提的第一个PR今天(2025年10月11日)合并啦,并且这个PR,发布了,也可以说inspector这个项目有我贡献的代码了,😄