Metadata-Version: 2.4
Name: mcp-cryptokit
Version: 0.1.2
Summary: A MCP server project to handle cryptographic operations.
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: asyncio>=3.0.0
Requires-Dist: cffi>=1.16.0
Requires-Dist: cryptography>=41.0.2
Requires-Dist: gmalg>=1.0.6
Requires-Dist: gmssl>=2.5.4
Requires-Dist: httpx>=0.28.1
Requires-Dist: mcp[cli]>=1.6.0
Requires-Dist: pydantic>=2.0.0
Description-Content-Type: text/markdown

# MCP协议密码套件 (mcp-cryptokit)

[![GitHub](https://img.shields.io/github/license/sansec-ai/mcp-cryptokit)](https://github.com/sansec-ai/mcp-cryptokit)

## 简介

mcp-cryptokit 是一个基于MCP协议的密码套件，旨在为AI应用提供高效的密码学支持。它支持国密标准算法和通用密码算法，并提供密钥管理功能。

**mcp-cryptokit**：提供以下功能：
  - 对称加解密
  - 非对称加解密
  - 签名验签
  - Hash计算
  - 密钥管理

## 功能特点

- **标准MCP协议**：方便AI应用集成
- **支持国密标准算法**：包括SM2/SM3/SM4等
- **支持通用密码算法**：如AES、RSA、SHA等
- **支持密钥管理**：提供安全的密钥生成、存储和管理功能

## 安装与使用

### 安装

```bash
# 下载项目到本地目录, 如：/work/mcp-cryptokit
git clone https://github.com/sansec-ai/mcp-cryptokit.git  /work/mcp-cryptokit
cd mcp-cryptokit
uv venv
source .venv/bin/activate
# 安装依赖
uv pip install .
```
### 使用示例
可以在任何支持mcp协议的客户端使用本密码套件。
#### mcp 配置
以roo code编程为例，其配置步骤如下：
- 在vscode中安装roo code插件(>=v3.11)，并配置大模型提供商，可参考[Roo-Code](https://github.com/RooVetGit/Roo-Code/blob/main/locales/zh-CN/README.md):。
- 在roo code的MCP服务器配置文件中增加配置如下：

```json
{
  "mcpServers": {
    "mcp-cryptokit": {
      "command": "uv",
      "args": [
        "--directory",
        "/work/mcp-cryptokit",
        "run",
        "server.py"
      ],
      "timeout": 30,
      "alwaysAllow": [],
      "disabled": false,
      "env": {
        "CRYPTOKIT_KEY_STORE_PATH": "/data/keystore.json"
      }
    }
  }
}

```
配置成功，可在Roo Code的`MCP 服务器`查看到`mcp-cryptokit`服务。

![mcp-cryptokit服务](doc/roocode.png)

#### 使用
在`Roo Code`中配置`mcp-cryptokit`服务成功，可在对话框输入以下请求：
```bash
使用sm4密钥加密数据：我是明文
```
`Roo Code`会自动调用`mcp-cryptokit`服务，创建sm4密钥，并使用sm4密钥加密明文。示例如下：
##### 1.第一步，尝试查询sm4类型密钥
![](doc/chat1.png)
##### 2.第二步，如果密钥不存在，则创建sm4密钥，并返回密钥ID。
![](doc/chat2.png)
##### 3.第三步，使用密钥ID和明文，调用sm4加密服务，并返回密文。
![](doc/chat3.png)

也可以直接使用指定密钥加密数据，请求如下：
```bash
使用1号sm4密钥加密数据：我是明文
```

## 贡献指南
欢迎贡献代码或提出改进建议！请参考贡献指南了解如何参与项目。
## 许可证
mcp-cryptokit 遵循 Apache License 2.0 协议，允许自由使用、修改和分发。
## 联系我们
如需进一步了解或技术支持，请访问 GitHub项目页面 或联系项目维护者。