使用说明
MCP服务器启动模板
使用TypeScript和FastMCP构建模型上下文协议(MCP)服务器的最小启动模板。
特性
- 项目基本结构
src/lib,src/services,src/tools. - TypeScript设置(编译为
dist/). - 用于起毛和格式化的生物特征。
fastmcp用于MCP服务器实现。- 天气服务示例演示:
- 正确的文件夹结构(库、服务、工具)
- API与错误处理的集成
- 使用Zod进行参数验证
- 关注点分离
- CI和Release的GitHub操作工作流(默认情况下为手动触发)。
入门指南
-
使用此模板创建新存储库: 点击 这里 根据此模板生成新的存储库。
-
导航到新项目:
cd /path/to/your-new-mcp-server -
初始化Git仓库(如果尚未初始化):
git init git branch -M main # Or your preferred default branch name -
定制
package.json:- 更新
name,version,description,author,repository等等。 - 更新
bin如果更改命令名,请输入。
- 更新
-
安装依赖项:
pnpm install -
配置环境变量: 对于天气服务示例,您需要一个OpenWeather API密钥:
# Create a .env file (add to .gitignore) echo "OPENWEATHER_API_KEY=your_api_key_here" > .env从获取API密钥 开放天气.
-
初始提交: 在设置Husky和Changesets之前,最好在这个阶段做出初步承诺。
git add . git commit -m "feat: initial project setup from template" -
开发您的服务器:
- 在中添加您的自定义工具
src/tools/目录。 - 实现逻辑
src/lib/和src/services/. - 在中注册工具
src/index.ts.
- 在中添加您的自定义工具
天气工具示例
此模板包括一个天气服务示例,演示:
-
HTTP实用程序 (
src/lib/http.ts):- 使用Zod验证的类型安全HTTP请求
- 错误处理
-
配置 (
src/lib/config.ts):- 环境变量管理
- 服务配置
-
气象局 (
src/services/weatherService.ts):- API集成
- 数据转换
- 正确的错误传播
-
天气工具 (
src/tools/weather.ts):- 使用Zod进行参数验证
- 用户友好的输出格式
- 错误处理和用户指导
要使用天气工具:
# Set your OpenWeather API key
export OPENWEATHER_API_KEY=your_api_key_here
# Run the server
pnpm run start
# Connect with an MCP client and use the GET_WEATHER tool
# with parameter: { "city": "London" }
提交前林庭(哈士奇和林庭上演)
此模板包括 husky 和 lint-staged 在其 devDependencies 用于在提交前对暂存文件运行Biome。要设置它,请执行以下操作:
-
确保你的package.json有用于husky的准备脚本:
{ "scripts": { "prepare": "husky" } } -
安装依赖项并初始化husky:
pnpm install pnpm dlx husky init这创建了一个
.husky目录,并进行必要的设置。 -
为lint-stage创建预提交钩子:
# Create or edit the pre-commit file echo '#!/usr/bin/env sh' > .husky/pre-commit echo '. "$(dirname -- "$0")/_/husky.sh" pnpm lint-staged' >> .husky/pre-commit # Make it executable chmod +x .husky/pre-commit -
配置
lint-staged在……里面package.json:// In package.json "lint-staged": { "*.{js,ts,cjs,mjs,jsx,tsx,json,jsonc}": [ "biome check --write --organize-imports-enabled=false --no-errors-on-unmatched" ] }根据需要调整Biome命令。上面这个是一个常见的例子。
-
测试一下: 对a进行一些更改
.ts文件并尝试提交。Biome应在暂存文件上运行。
发布管理(变更集)
此模板已准备好使用发布管理 变更集.
-
安装变更集CLI(如果尚未在devDependencies中): 模板
package.json应包括@changesets/cli如果没有:pnpm add -D @changesets/cli -
初始化变更集: 此命令将创建
.changeset包含一些配置文件的目录。pnpm changeset init # or npx changeset init提交生成的
.changeset目录及其内容。 -
在开发过程中添加变更集: 当您进行的更改会导致版本冲突(修复、功能、破坏性更改):
pnpm changeset add # or npx changeset add按照提示操作。这将在
.changeset描述更改的目录。 将此变更集文件与代码更改一起提交。 -
发布发布: GitHub操作工作流
release.yml(inmcp-server-starter/.github/workflows/)是为此而设立的。当您准备发布时:- 确保将所有功能PR及其变更集文件合并到
main. - 重要提示: 在发布之前,请确保
package.json已完成。添加或更新以下字段keywords,author,repository(例如。,"repository": {"type": "git", "url": "https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git"}),bugs(例如。,"bugs": {"url": "https://github.com/YOUR_USERNAME/YOUR_REPO_NAME/issues"}),以及homepage(例如。,"homepage": "https://github.com/YOUR_USERNAME/YOUR_REPO_NAME#readme")以获得更好的可发现性和关于npm的信息。 - 这
release.yml工作流(默认情况下在模板中手动触发)将:- 跑
changeset version要使用变更集文件,请更新package.json版本和更新CHANGELOG.md。这将把这些推到一个changeset-release/main分支并打开“版本包”PR。 - 合并“版本包”PR。
- 合并后,工作流将在上再次运行
main。这一次,它将运行pnpm run publish-packages(应包括changeset publish)发布到npm并创建GitHub发布/标签。
- 跑
- 要启用自动释放流: 改变
on: workflow_dispatch在……里面release.yml向on: push: branches: [main](或您的发布分支)。
- 确保将所有功能PR及其变更集文件合并到
可用脚本
pnpm run build:将TypeScript编译为JavaScriptdist/并使输出可执行。pnpm run dev:使用以下命令在开发模式下运行服务器tsx(TypeScript的热重载)。pnpm run start:运行构建的服务器(从dist/)使用Node。pnpm run lint:使用Biome抓取代码库。pnpm run format:使用Biome格式化代码库。
使用服务器
建成后(pnpm run build),您可以运行服务器:
- 直接连接或全局安装:
mcp-hello-server(或您自定义的垃圾箱名称)。 - 通过节点:
node dist/index.js - 经由
pnpm dlx(一经发布):pnpm dlx your-published-package-name
