模型上下文协议服务器

一个演示如何构建具有Google ADK集成的模型上下文协议服务器的学习项目,涵盖最佳实践和工具定义。

  • by aakankshagupta18
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 aakankshagupta18/custom-mcp-server

使用说明

MCP服务器演示-学习项目

一个全面的学习项目,展示如何构建 模型上下文协议(MCP)服务器 随着 谷歌ADK集成 使用最佳实践。

🎯 学习目标

这个项目教你:

  1. MCP服务器架构

    • 如何构建MCP服务器
    • 工具定义和处理程序
    • 资源管理
    • 错误处理模式
  2. 最佳实践

    • TypeScript用于类型安全
    • 关注点分离
    • 输入验证和安全
    • 错误处理
    • 可扩展架构
  3. 谷歌ADK集成

    • Google Actions的集成点
    • 分析和记录
    • 履行处理程序(占位符)

📁 项目结构

mcp-server-demo/
├── src/
│   ├── index.ts              # Main server entry point
│   ├── tools/
│   │   ├── base-tool.ts      # Base tool interface
│   │   ├── calculator.ts     # Calculator tool example
│   │   ├── file-operations.ts # File operations tool
│   │   └── system-info.ts    # System information tool
│   └── integrations/
│       └── google-adk.ts     # Google ADK integration
├── package.json
├── tsconfig.json
└── README.md

🚀 入门指南

先决条件

  • Node.js 18+
  • npm或纱线

安装

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode (with auto-reload)
npm run dev

# Run the built server
npm start

🛠️ 可用工具

1.计算器工具

执行基本的数学运算。

例子:

{
  "name": "calculator",
  "arguments": {
    "operation": "add",
    "a": 10,
    "b": 5
  }
}

2.文件操作工具

读取、写入、列出和获取有关文件的信息。

例子:

{
  "name": "file_operations",
  "arguments": {
    "operation": "read",
    "path": "README.md"
  }
}

3.系统信息工具

获取系统信息(平台、内存、CPU等)。

例子:

{
  "name": "system_info",
  "arguments": {
    "detail": "full"
  }
}

🔌 谷歌ADK集成

该项目包括一个谷歌ADK集成模块,该模块演示了:

  • 分析日志:跟踪工具使用情况
  • 履行处理人员:处理Google Assistant请求(占位符)
  • 使用统计:深入了解工具使用情况

启用Google ADK

设置环境变量:

export GOOGLE_ADK_ENABLED=true

全面整合的下一步

  1. 设置谷歌行动项目

    • 在Google Cloud Console中创建项目
    • 启用操作API
    • 设置OAuth凭据
  2. 实现Webhook服务器

    • 使用Express.js或类似工具
    • 处理履行请求
    • 连接到MCP服务器工具
  3. 部署

    • 部署到谷歌云功能或云运行
    • 在操作控制台中配置webhook URL

📚 最佳实践演示

1. 类型安全

  • 完整的TypeScript实现
  • 已启用严格类型检查
  • 所有工具的接口定义

2. 安全

  • 路径验证(防止目录遍历)
  • 输入净化
  • 错误消息清理

3. 错误处理

  • 全面的试抓块
  • 有意义的错误消息
  • 优雅降级

4. 代码组织

  • 关注点分离
  • 模块化工具架构
  • 清晰的抽象层

5. 可扩展性

  • 易于添加新工具(扩展 BaseTool)
  • 插件式架构
  • 配置驱动行为

🧪 测试您的MCP服务器

使用克劳德桌面

  1. 添加到Claude桌面配置:
{
  "mcpServers": {
    "demo": {
      "command": "node",
      "args": ["/path/to/mcp-server-demo/dist/index.js"]
    }
  }
}
  1. 重新启动克劳德桌面
  2. 这些工具应该在Claude中可用

使用MCP客户端

您还可以使用MCP客户端库进行测试或创建简单的测试脚本。

🎓 学习路径

初级任务

  1. ✅ 了解项目结构
  2. ✅ 运行服务器和测试工具
  3. ✅ 通读代码注释
  4. ✅ 修改计算器工具以添加新操作

中级任务

  1. 添加新工具(例如。, weather 使用API的工具)
  2. 实现资源缓存
  3. 添加工具使用率限制
  4. 为工具创建单元测试

高级任务

  1. 实施完整的Google ADK webhook服务器
  2. 添加身份验证/授权
  3. 实施工具链
  4. 添加流媒体响应
  5. 创建远程MCP服务器(HTTP传输)

📖 资源

🤝 贡献

这是一个学习项目!请随意:

  • 添加更多示例工具
  • 改进错误处理
  • 添加测试
  • 加强文件编制

📝 许可证

麻省理工学院


快乐学习! 🚀