咖啡数据MCP服务

一个基于TypeScript的MCP服务器,用于提供咖啡数据服务,支持HTTP和stdio传输模式。

  • by EmperorRAG
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 EmperorRAG/first-mcp

使用说明

Coffee Mate MCP服务器

一个提供咖啡数据的TypeScript MCP(模型上下文协议)服务器。最初基于Medium文章 用TypeScript编写MCP服务器的快速分步指南 Perry George。支持流式HTTP和stdio传输。

先决条件

  • Node.js 24+
  • npm
  • Docker(可选,用于容器化部署)

设置

npm install
npm run build

码头工人

多阶段构建: builder stage编译TypeScript, runner stage仅复制生产依赖关系和编译后的输出。非根 app 用户。 HEALTHCHECK 通过 wget 反对 /health.

docker build -t coffee-mate-mcp .
docker run -p 3001:3001 coffee-mate-mcp

在运行时重写环境变量:

docker run -p 8080:8080 -e PORT=8080 -e ACTIVE_TOOLS="get-coffees" coffee-mate-mcp

跑步

HTTP模式(默认) --启动一个原始的Node.js流式HTTP服务器:

node build/app/main.js
# MCP Server running on http://0.0.0.0:3001

设置 PORT 更改端口的环境变量(默认值 3001).

stdio模式 --对于本地VS代码集成:

node build/app/main.js --stdio
# MCP Server running on stdio

环境变量

变量 类型 默认值 描述
PORT 编号 3001 HTTP服务器端口
TRANSPORT_MODE 字符串 "http" "http" 或 "stdio"
SERVER_NAME 字符串 "coffee-mate" MCP服务器标识
SERVER_VERSION 字符串 "1.0.0" 学期版本
ACTIVE_TOOLS 字符串 "" 要注册的逗号分隔的工具名称(空=全部)

API终点

端点 方法 描述
/health GET 健康检查--返回 { "status": "ok" }
/mcp POST MCP JSON-RPC消息处理程序(初始化创建会话)
/mcp GET SSE向后兼容流
/mcp DELETE 显式会话终止

MCP工具

工具 说明 参数
get-coffees 返回所有咖啡的列表 无
get-a-coffee 按名称检索特定咖啡的数据 name (字符串)

连接到VS代码

该项目包括 .vscode/mcp.json 使用stdio模式的配置。在VS Code中打开工作区,从配置文件启动MCP服务器,并在代理模式下通过GitHub Copilot使用工具。

Docker网络(n8n集成)

在里面跑步时 first-n8n Docker Compose堆栈,此服务器可用于其他容器 http://coffee-mate-mcp:3001/mcp 在 demo 网络。请参阅 first-n8n 全栈设置的项目。

CI/CD

GitHub操作工作流(.github/workflows/deploy.yml):

  • ci 工作:跑步 build → lint:ts → test 在所有分支上进行拉取请求定位 main
  • deploy 工作:构建Docker镜像,推送到Azure容器注册表,部署到Azure容器应用程序。已关闭 main 仅推

API文档

TypeScript API文档在中生成为Markdown docs/api/ 使用 TypeDoc 随着 typedoc插件标记 和 typedoc插件备注。生成的文件在CI中提交和执行。

命令

npm run docs          # Generate + remark-format docs (commit the result)
npm run docs:lint     # Lint committed docs/api with remark

工作流程

  1. 进行源代码更改
  2. 跑 npm run docs 重新生成API文档
  3. 提交更新 docs/api/ 随着代码的更改

CI运行 npm run docs 然后 git diff --exit-code docs/api --如果提交的文档与源文件不同步,则构建失败。