实用工具服务器

一个基于Rust和RMCP SDK构建的综合性实用工具服务器,提供加密、编码、分析和文本处理等多种开发工具。

  • by jyasuu
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 jyasuu/mcp-server-demo

使用说明

MCP实用工具服务器

一个全面的模型上下文协议(MCP)服务器,为开发者提供各种实用工具。该服务器使用Rust语言和RMCP SDK构建。

特点/特性

此服务器实现了以下实用工具:

🏓 基本工具

  • ping用于测试连接性的简单乒乓工具
  • 获取当前时间获取当前时间的各种格式(ISO、Unix时间戳、RFC3339、自定义)

🔐 密码学与安全

  • 哈希文本使用多种算法(MD5、SHA1、SHA256、SHA512)对文本进行哈希处理
  • bcrypt哈希使用 bcrypt 哈希并验证密码
  • 生成RSA密钥对生成RSA私钥/公钥对
  • AES加密使用自动生成或自定义密钥的AES-256-GCM加密文本
  • AES解密解密AES-256-GCM加密的数据
  • **hmac_sign(在中文中可直接音译为“HMAC签名”,但根据上下文,更常见的可能是将其理解为“使用HMAC算法生成的签名”或简化为“HMAC签名”,具体翻译需结合语境)**为消息认证生成HMAC签名
  • **hmac_verify 翻译为中文是“HMAC验证”**使用恒定时间比较验证HMAC签名

🔧 编码与实用工具

  • base64编码将文本编码为Base64
  • base64解码解码Base64文本
  • 生成令牌生成可自定义字符集的随机令牌
  • 生成UUID生成UUID(支持v4)
  • URL解析解析并分析URL组件
  • URL编码对文本进行URL编码以确保安全传输
  • URL解码对百分号编码的文本进行URL解码

🔍 分析与处理工具

  • 分析密码全面的密码强度分析
  • **解析JWT(JSON Web Token)**解析和解码JWT令牌(基本解析)
  • **JWT创建(或JWT生成)**创建并签署带有过期时间和自定义声明的JWT令牌
  • JWT验证验证JWT令牌签名并解码有效载荷
  • **`regex_find` 翻译成中文是“正则表达式查找”**在文本中查找所有正则表达式匹配项,并获取位置信息
  • **`regex_replace` 翻译成中文是“正则替换”**使用正则表达式模式(单个或全局)替换文本
  • **文本工具库(或文本实用工具)**文本处理工具(字数统计、大小写转换、修剪、生成slug等)

安装与运行

  1. 克隆仓库
  2. 构建并运行服务器:
cargo run

服务器将在 http://127.0.0.1:8000 以MCP端点位于 /mcp。

使用示例

Ping 工具

{
  "method": "tools/call",
  "params": {
    "name": "ping",
    "arguments": {
      "message": "Hello MCP!"
    }
  }
}

密码分析

{
  "method": "tools/call",
  "params": {
    "name": "analyze_password",
    "arguments": {
      "password": "MySecurePass123!"
    }
  }
}

生成RSA密钥对

{
  "method": "tools/call",
  "params": {
    "name": "generate_rsa_keypair",
    "arguments": {
      "key_size": 2048
    }
  }
}

AES加密

{
  "method": "tools/call",
  "params": {
    "name": "aes_encrypt",
    "arguments": {
      "text": "Secret message to encrypt"
    }
  }
}

创建JWT令牌

{
  "method": "tools/call",
  "params": {
    "name": "jwt_create",
    "arguments": {
      "payload": {"user_id": 123, "role": "admin"},
      "secret": "your-secret-key",
      "algorithm": "HS256",
      "expires_in": 3600
    }
  }
}

HMAC 签名

{
  "method": "tools/call",
  "params": {
    "name": "hmac_sign",
    "arguments": {
      "message": "Important message",
      "key": "secret-key",
      "algorithm": "sha256"
    }
  }
}

正则表达式查找

{
  "method": "tools/call",
  "params": {
    "name": "regex_find",
    "arguments": {
      "text": "Contact us at support@example.com or admin@test.org",
      "pattern": "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
    }
  }
}

文本工具

{
  "method": "tools/call",
  "params": {
    "name": "text_utils",
    "arguments": {
      "text": "Hello World! This is a Test String.",
      "operation": "slugify"
    }
  }
}

建筑

这个项目遵循MCP的最佳实践:

  • 使用官方的Rust MCP SDK(RMCP)构建
  • 实现带有描述性信息的适当错误处理
  • 使用带有JSON Schema验证的结构化请求/响应类型
  • 支持具有流式连接的HTTP传输
  • 提供全面的工具文档

发展

基于RMCP SDK中的counter_streamhttp.rs示例,此服务器展示了:

  • 使用宏实现的工具路由器
  • 使用 schemars 进行参数验证
  • 符合MCP协议规范
  • 错误处理的最佳实践

依赖项

  • **rmcp(注:RMCP可能是一个特定领域或上下文中的缩写或术语,没有直接的中文翻译,因此保持原样)**官方Rust MCP SDK(v0.8.1,功能全面)
  • **“tokio”翻译成中文可以是“东京”(如果作为地名)或者根据上下文可能指代其他与“tokio”相关的特定名称或概念(如果存在)。但在没有具体上下文的情况下,“tokio”通常直接翻译为“东京”。**异步运行时
  • **阿克苏姆(或阿克苏姆王国)**HTTP框架
  • **serde(注:在中文语境下,"serde"通常作为一个专有名词或技术术语直接保留,不进行翻译,但如果非要给出一个近似的中文解释,可以是“序列化/反序列化库”,但这并非其官方或通用的中文名称)**序列化
  • **时间(chrono)**日期/时间处理
  • 各种加密库用于加密操作

包配置

这个项目使用了已发布的 rmcp 版本(v0.8.1)的包,已启用以下功能:

  • server核心MCP服务器功能
  • macros工具和处理器定义的宏支持
  • client客户端测试功能
  • transport-sse-server服务器发送事件传输
  • transport-io输入/输出(I/O)传输层
  • transport-streamable-http-serverHTTP流传输
  • auth认证支持
  • elicitation动态参数提取
  • schemarsJSON Schema 生成

测试MCP服务器

npx @modelcontextprotocol/inspector

部署

  • https://ap-southeast-1.run.claw.cloud/ 翻译为中文可以是:“https://东南亚亚太1区.run.claw.cloud/” 或者更简洁地表述为“东南亚亚太(AP-Southeast-1)区域的run.claw.cloud网站”。不过,通常网址在中文语境下直接保留原样,或者根据具体上下文进行适当解释,因为网址本身是国际通用的,直接翻译可能失去其特定的含义或指向性。所以,最直接的翻译方式就是保留原网址不变
  • 这个网址(https://alcbyqyyvqly.ap-southeast-1.clawcloudrun.com/mcp)可以翻译为:“https://alcbyqyyvqly.东南亚亚太1区(新加坡).ClawCloudRun.com/mcp”,但需要注意的是,这样的网址翻译在实际应用中并不常见,因为网址通常不直接翻译,而是保持其原始形式以确保链接的有效性。这里的翻译主要是为了帮助理解网址的结构和含义。同时,ClawCloudRun可能是一个特定的云服务或应用平台的名称,具体含义需根据上下文或官方说明来确定