代码审查服务器

一个生产级的MCP服务器,集成了DeepSeek的API,具有高级代码审查功能、高效的文件管理和API账户管理。

  • by chew-z
  • Go
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 chew-z/DeepseekMCP

使用说明

DeepSeek MCP服务器

一款与DeepSeek的API集成的生产级MCP服务器,具有先进的代码审查功能、高效的文件管理和API帐户管理。

特性

  • 多模型支持:从各种DeepSeek模型中选择,包括DeepSeek聊天和DeepSeek编码器
  • 代码审查重点:内置系统提示,用于详细的代码分析,并带有markdown输出
  • 自动文件处理:具有直接路径集成的内置文件管理
  • API账户管理:检查余额并估计代币使用情况
  • JSON模式支持:请求结构化JSON响应以便于解析
  • 高级错误处理:通过结构化错误日志记录进行优雅降级
  • 改进的重试逻辑:API调用的可配置指数退避的自动重试
  • 安全:可配置的文件类型限制和大小限制
  • 性能监控:请求延迟和吞吐量的内置指标收集

先决条件

  • 转到1.21+
  • DeepSeek API密钥
  • 对MCP协议的基本理解

安装和快速启动

# Clone and build
git clone https://github.com/your-username/DeepseekMCP
cd DeepseekMCP
go build -o bin/mcp-deepseek

# Start server with environment variables
export DEEPSEEK_API_KEY=your_api_key
export DEEPSEEK_MODEL=deepseek-chat
./bin/mcp-deepseek

配置

克劳德桌面

{
  "mcpServers": {
    "deepseek": {
      "command": "/Your/project/path/bin/mcp-deepseek",
      "env": {
        "DEEPSEEK_API_KEY": "YOUR_API_KEY",
        "DEEPSEEK_MODEL": "deepseek-chat"
      }
    }
  }
}

环境变量

变量 描述 默认值
DEEPSEEK_API_KEY DeepSeek API密钥 必需
DEEPSEEK_MODEL 可用型号的型号ID deepseek-chat
DEEPSEEK_SYSTEM_PROMPT 代码审查系统提示 默认代码审查提示
DEEPSEEK_SYSTEM_PROMPT_FILE 包含系统提示的文件路径 空
DEEPSEEK_MAX_FILE_SIZE 最大上传大小(字节) 10485760 (10 MB)
DEEPSEEK_ALLOWED_FILE_TYPES 逗号分隔的MIME类型 [常见文本/代码类型]
DEEPSEEK_TIMEOUT API超时(秒) 90
DEEPSEEK_MAX_RETRIES API最大重试次数 2
DEEPSEEK_INITIAL_BACKOFF 初始退避时间(秒) 1
DEEPSEEK_MAX_BACKOFF 最大退避时间(秒) 10
DEEPSEEK_TEMPERATURE 模型温度(0.0-1.0) 0.4

示例 .env:

DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_SYSTEM_PROMPT="Your custom code review prompt here"
# Alternative: load system prompt from file
# DEEPSEEK_SYSTEM_PROMPT_FILE=/path/to/prompt.txt
DEEPSEEK_MAX_FILE_SIZE=5242880  # 5MB
DEEPSEEK_ALLOWED_FILE_TYPES=text/x-go,text/markdown
DEEPSEEK_TEMPERATURE=0.7

核心API工具

目前,服务器提供以下工具:

deepseek_ask

用于代码分析、审查和具有可选文件路径包含的常规查询。

{
  "name": "deepseek_ask",
  "arguments": {
    "query": "Review this Go code for concurrency issues...",
    "model": "deepseek-chat",
    "systemPrompt": "Optional custom review instructions",
    "file_paths": ["main.go", "config.go"],
    "json_mode": false
  }
}

deepseek模型

列出所有可用的DeepSeek模型及其功能。

{
  "name": "deepseek_models",
  "arguments": {}
}

deepseek_balance

检查您的DeepSeek API帐户余额和可用性状态。

{
  "name": "deepseek_balance",
  "arguments": {}
}

deepseek_token_estimate

估计文本或文件的令牌计数,以帮助进行配额管理。

{
  "name": "deepseek_token_estimate",
  "arguments": {
    "text": "Your text to estimate...",
    "file_path": "path/to/your/file.go"
  }
}

支持的型号

默认情况下支持以下DeepSeek模型:

型号ID 描述
deepseek-chat 平衡性能和效率的通用聊天模型
deepseek-coder 编码和技术任务的专用模型
deepseek-reasoner 针对推理和解决问题任务进行优化的模型

注意:实际可用的模型可能会因您的API访问级别而异。服务器将自动发现并提供您可以通过DeepSeek API访问的所有模型。

支持的文件类型

扩展名 MIME类型
.go text/x-go
.py 文本/x-python
.js 文本/javascript
.md text/makdown
.java 文本/x-java
.c/.h text/x-c
.cpp/.hpp 文本/x-c++
25+更多 (参见 getMimeTypeFromPath 在deepseek.go)

操作说明

  • 降级模式:初始化错误时自动进入安全模式
  • 审计日志:所有操作都记录了时间戳和元数据
  • 安全:处理前通过MIME类型和大小验证文件内容

文件处理

服务器直接通过 deepseek_ask 工具:

  1. 在中指定本地文件路径 file_paths 数组参数
  2. 服务器自动执行以下操作:
    • 从提供的路径读取文件
    • 根据文件扩展名确定正确的MIME类型
    • 将文件内容上传到DeepSeek API
    • 将文件用作查询的上下文

这种直接的文件处理方法消除了对单独的文件上传/管理端点的需要。

JSON模式支持

对于需要结构化数据输出的集成,服务器支持JSON模式:

  • 结构化响应:从DeepSeek模型请求格式正确的JSON响应
  • 解析程序友好:是CI/CD管道和自动化系统的理想选择
  • 易于集成:简单设置 json_mode: true 在您的请求中

JSON模式示例:

{
  "name": "deepseek_ask",
  "arguments": {
    "query": "Analyze this code and return a JSON object with: issues_found (array of strings), complexity_score (number 1-10), and recommendations (array of strings)",
    "model": "deepseek-chat",
    "json_mode": true,
    "file_paths": ["main.go", "config.go"]
  }
}

这将返回一个格式良好的JSON响应,您的应用程序可以直接解析该响应。

发展

命令行选项

服务器支持以下命令行选项来覆盖环境变量:

# Override the DeepSeek model to use
./bin/mcp-deepseek -deepseek-model=deepseek-coder

# Override the system prompt
./bin/mcp-deepseek -deepseek-system-prompt="Your custom prompt here"

# Override the temperature setting (0.0-1.0)
./bin/mcp-deepseek -deepseek-temperature=0.8

运行测试

要运行测试,请执行以下操作:

go test -v ./...

跑步林特尔

golangci-lint run

格式化代码

gofmt -w .

许可证

MIT许可证

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉项目
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求