开发一个查询IP信息的MCP服务, 并通过Docker部署
自从MCP的出现, 全球各个大厂争先恐后的出了很多自家的MCP服务,让开发者可以进行调用,并且MCP的SDK也越来越完善,也支持大部分的开发语言。
我就来研究一下使用 TypeScript 来写一个 MCP 服务,并且使用 Docker 来部署。(顺便了解一下docker的自动部署)
MCP脚手架
有一天在搜 MCP 服务的时候,看到了一个 mcp-framework 的项目,这个项目是一个 MCP 服务的脚手架,它提供了一个 MCP 服务的基本框架,支持MCP项目的创建以及类文件的生成。这是一个基于 TypeScript 的项目,所以我就来研究一下它怎么使用。
安装
首先这是一个脚手架 cli 命令, 我们需要将它安装在全局,通过 npm 安装
1 | |
1 | |
编码
通过命令行可以新建一个新的 MCP Tool, 顺便说一下,MCP 主要功能分为三个部分,Tools、 Prompts、 Resources。Tools 是提供可供AI调用的方法, Prompts 是给予 AI 对于自己系统的提示, Resources 是可以提供给AI的系统内部的一些资源。如果想要更深入的了解,可以到 MCP 的 Github仓库进行了解
我们就先开发一个最能直观体现MCP作用的Tools来进行举例吧。
创建Tool文件
1 | |
我们来实现一个通过
AI结合MCP查询IP信息的功能
通过上面的命令,可以看到/src/tools文件下新新生成了一个名为GetIpTool.ts的文件,我们具体的功能要在该文件内进行编写。
1 | |
这是基于生成的模板进行修改后的,
schema里的属性是需要调用ai时传递的参数,execute方法是执行该tool时执行的操作, 返回的结果AI会自己解析,所以直接返回就好。
需要注意的是,description的内容一定要准确和完善,这样子AI才能更好的理解tool的用法和字段的含义
设置服务
1 | |
简单配置一下MCP服务的启动方式, 分为stdio、sse、http-stream,其中sse将要过期了。stdio主要是针对本地的服务,而http-stream sse 针对的是部署在云服务器上的服务
运行
1 | |
执行build命令,会在dist目录下生成对应的js文件, 然后执行:
1 | |
这样,我们的MCP服务就运行在本机的http://localhostr:1337/mcp地址上
测试
需要用到
mcp-debug, 这个是MCP团队开发的本地web应用,专用来测试MCP服务的
1 | |
如果没安装过会提示先安装该插件, 执行成功后打开http://127.0.0.1:5173, 调试工具的默认地址

将自己本地的MCP服务地址输入到URL中,点击Connect,即可看到MCP服务中拥有的Tools,也就是可以进行调试了。
部署
创建Dockerfile
1 | |
MCP基于nodejs 18+, 所以先检查自己的node版本是否符合
创建docker-compose.yml
1 | |
创建完Docker配置文件之后将代码上传至自己的服务器存放项目的文件夹下
注意
distnode_module文件不要上传,docker部署的时候会重新安装构建的
运行
到服务器的项目根目录下执行:
1 | |
验证
这里我们使用cherry-studio进行连接我们的mcp服务查看是否可用

新建MCP连接,并连接到我们自己的服务,这里我是做了nginx域名转发了,所以是通过域名访问的,如果没有配置nginx,则需要通过你的服务器地址加端口号进行访问了
配置好之后,即可在cherry-studio对话框内选定我们刚配置的MCP服务, 输入ip地址,就会发现AI调用了我们的MCP服务,并返回了相应的结果
