使用说明
示例mcp项目名称mcp服务器
这是一个 模型上下文协议(MCP) 服务器。..
特性
- 示例_工具:此处为工具说明。
1.建筑层次
您必须尊重项目结构中定义的关注点分离。这些界限是 通过ESLint严格执行:
-
入口点(
index.ts):初始化服务器,连接传输,并处理主进程循环。 -
MCP层(
src/mcp/):处理工具定义、输入验证(Zod)和响应格式。src/mcp/tools.ts:将工具输入映射到域函数的注册表。- 边界:无法直接从导入
src/api、域客户端或域实用程序。它必须访问功能 仅 通过域服务。 src/mcp/utils/:有助于标准化响应(toolSuccessResponse,toolErrorResponse)以及包装功能。
-
域层(
src/domain/):包含业务逻辑和API编排。- 边界:该层受到保护;它 不能 从进口
src/mcp层。 src/domain/**/services/:逻辑所在的主要服务类。- 边界:服务不能直接从导入
src/api。他们必须通过域客户端访问外部数据。 src/domain/dtos/:TypeScript接口定义了流入和流出服务的数据的形状。
- 边界:该层受到保护;它 不能 从进口
-
基础设施层(
src/api/):src/api/client.ts:一个围绕axios的包装器,用于向外部API发出HTTP请求。
-
配置(
src/env.ts):- 集中式环境变量管理。 永远不要硬编码机密或URL;在这里添加它们。
-
工具说明(
src/tools.metadata.ts):- 集中式工具文本描述。
2.安装和初始化
先决条件
- Node.js (v18或更高版本)
- npm
- (身份验证要求、运行所需的工具等)
设置步骤
-
安装依赖项:
npm install -
初始化项目: 运行启动脚本重命名项目,配置域,并设置初始工具结构。此脚本有效地“解析”了特定用例的代码。
npm run scaffold:startup按照交互式提示设置项目名称、域名、服务方法和工具名称。
-
构建项目:
npm run build -
运行项目:
npm run start
3.开发工作流程
CLI生成器(推荐)
此模板包括交互式CLI脚本,用于自动化日常任务并确保架构一致性。在终端中运行这些命令并按照提示操作:
npm run scaffold:domain- 创建新的域模块结构(客户端、服务、DTO的文件夹)。
- 在添加不同功能区域时使用此功能(例如。,
weather,user-management).
npm run scaffold:service- 将新的业务逻辑服务类添加到现有域中。
npm run scaffold:client- 在域内生成HTTP或数据库客户端包装器。
- 确保一致的错误处理和连接注入。
npm run scaffold:tool- 自动化整个“添加新工具”过程。
- 它提示使用域/服务,生成DTO,将方法注入service类,更新
tools.metadata.ts,并在中注册该工具src/mcp/tools.ts.
如何添加新工具
要向此服务器添加新功能,请遵循以下5个步骤以保持一致性:
-
定义元数据: 将工具的名称和描述添加到
src/tools.metadata.ts。使用常量键作为工具名称。 -
创建DTO: 在中定义请求参数和预期响应形状
src/domain/dtos/. -
实施业务逻辑:
- 向中添加新方法
DomainService类在src/domain/service.ts. - 使用
HttpClient提出请求。 - 确保该方法返回
Promise结果DTO或null失败。
- 向中添加新方法
-
注册工具和架构: 更新
src/mcp/tools.ts:- 导入元数据和服务。
- 定义
inputSchema使用zod. - 使用包装服务回调
buildTool(DomainService.yourMethod)。此包装器自动处理JSON格式的成功/错误。
-
启用工具: 将工具定义添加到
TOOLS_ENABLED数组insrc/env.ts这允许通过环境变量切换工具(例如。,process.env.EXAMPLE_TOOL === "false").
如何修改API客户端
如果身份验证或基本URL需要更改:
- 更新
src/env.ts解析新的环境变量。 - 更新
src/domain/utils/api.ts如果需要动态注入自定义头(如API键)。
4.编码标准和惯例
- 错误处理:
- 领域层:捕获错误,记录并返回
null或者抛出可管理的错误。 - MCP层:依靠
newTool包装。它捕获异常并将其转换为标准toolErrorResponse格式。
- 领域层:捕获错误,记录并返回
- 类型安全:
- 对于所有API交互,严格使用TypeScript接口/类型(
src/domain/dtos/). - 不要使用
any除非绝对必要(例如在通用HTTP客户端包装器内)。
- 对于所有API交互,严格使用TypeScript接口/类型(
- 格式:
- 工具输出始终是文本块内的JSON字符串:
content: [{ type: "text", text: JSON.stringify(...) }]。这由以下人员处理toolSuccessResponse.ts.
- 工具输出始终是文本块内的JSON字符串:
5.测试
- 同一地点:测试文件(
*.test.ts)必须立即驻留在它们正在测试的源文件旁边(例如。,src/domain/service.ts->src/domain/service.test.ts).这使测试可见且易于维护。 - 助手目录:The
tests/该目录严格保留用于辅助方法、模拟和全局测试配置。应该 不 包含实际的测试套件或规范文件。
用法
认证步骤
解释如何获取身份验证并将其配置为运行mcp工具。
配置VS代码
- 打开MCP配置文件:
- 全局(用户级):
- 在Windows上,按
Win+R,粘贴%APPDATA%\Code\User\mcp.json,然后按Enter键。 - 或者,在VS Code Copilot Chat中,单击工具/附件图标(在提示输入的底部菜单中),将鼠标悬停在任何MCP服务器上,然后单击齿轮图标。
- 在Windows上,按
- 工作空间级别:
- 创建
.vscode如果项目根目录中不存在该文件夹。 - 在其中,创建一个名为
mcp.json. - 添加以下json结构以添加配置:
- 创建
- 全局(用户级):
{
"settings": {
// paste the example-mcp-proj-name config here
}
}
- 在服务器下,添加:
"example-mcp-proj-name": {
"command": "node",
"args": [
"{yourFullLocalPathToProject}\\{example-mcp-proj-name}\\dist\\index.js"
],
"env": {
"API_URL": "PLACEHOLDER",
"EXAMPLE_TOOL": "true",
}
}
备注:具体说明
