代码AI服务

一个基于Mistral AI的Codestral和通用语言模型的MCP服务器,提供代码补全、错误修复、测试生成和通用推理功能。

  • by NicolasWs
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 NicolasWs/mcp-mistral-codestral

使用说明

Mistral编码MCP系列

模型上下文协议(MCP)服务器,可与Mistral AI的Codestral和通用语言模型无缝集成,通过标准化接口实现AI驱动的代码完成、错误修复、测试生成和通用推理功能。

这是什么MCP服务器?

这是一个 MCP(模型上下文协议)服务器 它充当MCP客户端(如Claude Desktop、IDE或其他AI助手)和Mistral AI强大的语言模型之间的桥梁。它将Mistral的功能作为标准化工具公开,任何兼容MCP的客户端都可以调用。

它做什么

此服务器提供两个主要功能:

  1. 特定代码的AI工具 -使用针对代码优化的Mistral Codestral模型:

    • 代码补全:智能地完成部分代码片段
    • 错误修复:分析代码中的错误,并提供带解释的更正版本
    • 测试生成:自动为代码生成全面的单元测试
    • 中间填充(FIM):完成现有开始和结束部分之间的代码
  2. 通用聊天 -使用Mistral的推理模型:

    • 复杂的推理和分析
    • 规划和战略思维
    • 自然语言理解与生成
    • 技术说明和文件

架构概述

服务器由两个主要组件组成:

  • src/index.ts:MCP服务器实现:

    • 通过模型上下文协议公开工具
    • 处理来自MCP客户端的工具调用
    • 使用Zod模式验证输入
    • 格式化并返回响应
    • 管理文件I/O操作以保存生成的代码
  • src/mistral.ts:Mistral API客户:

    • 管理与Codestral和标准Mistral端点的连接
    • 处理身份验证和API密钥验证
    • 实现速率限制(请求之间最小100ms)
    • 提供错误处理和重试逻辑
    • 支持多种型号(Codestral、Mistral Large、Small、Ministral)

特性

  • 双重API支持:自动将请求路由到相应的Mistral端点(用于代码任务的Codestral,用于常规任务的标准API)
  • 多种型号:支持针对不同用例优化的6种不同Mistral型号
  • 代码完成 具有上下文意识的建议
  • Bug检测和修复 附有详细解释
  • 自动生成测试 使用适当的测试框架
  • 中间填充(FIM) 在现有上下文中插入代码的完成
  • 通用推理 用于分析、规划和理解
  • 全面的输入验证 使用Zod模式
  • 速率限制 防止API节流
  • 错误处理 使用用户友好的消息
  • 文件输出支持 用于保存生成的代码
  • 资源访问 用于工作区中的代码文件

安装

  1. 克隆此存储库

  2. 安装依赖项:

    npm install
    
  3. 复制 .env.example 到 .env 并添加您的Mistral API密钥:

    cp .env.example .env
    
  4. 构建项目:

    npm run build
    

用法

启动服务器:

npm start

配置

将您的Mistral API密钥添加到 .env 文件:

MISTRAL_API_KEY=your_api_key_here

可用工具

服务器公开了两个MCP工具,任何MCP客户端都可以调用它们:

1.代码完成

一种基于人工智能的代码辅助工具,使用Mistral的Codestral模型处理代码。

它在内部做什么:

  1. 使用Zod模式验证输入参数
  2. 对于FIM任务:致电专业人员 /fim/completions 端点
  3. 对于其他任务:构建适当的系统和用户提示,然后调用 /chat/completions
  4. 从响应中的markdown代码块中提取代码
  5. (可选)将结果保存到文件中
  6. 向客户端返回格式化代码

参数:

  • code (string,必填):要处理的代码
  • language (字符串,可选):编程语言(有助于提供特定语法的建议)
  • task (字符串,必填):操作类型:
    • "complete":继续或完成部分代码
    • "fix":分析错误并提供更正版本
    • "test":生成全面的单元测试
    • "fim":中间填充完成(需要 suffix)
  • model (字符串,可选):选择 codestral-latest (默认)或 codestral-mamba-latest
  • suffix (字符串,可选):完成后应出现的代码(FIM任务所需)
  • temperature (数字,可选):采样温度0-1(默认值:0.7)-越低越确定
  • top_p (数字,可选):Nucleus采样0-1(默认值:1)
  • max_tokens (数字,可选):要生成的最大令牌数(默认值:1000)
  • stop (数组,可选):停止序列以结束生成
  • outputPath (string,可选):保存生成代码的文件路径
  • streamToFile (boolean,可选):如果为true,则只返回成功消息,而不是完整输出

示例用例:

  • 完成部分编写的函数
  • 修复现有代码中的TypeScript类型错误
  • 为React组件生成Jest测试
  • 填写函数签名和返回语句之间的实现

2.聊天

使用Mistral强大的语言模型(大型、小型或Ministral变体)的通用AI推理工具。

它在内部做什么:

  1. 验证对话消息数组
  2. 通往标准Mistral API终点(非Codestral)的路线
  3. 将对话发送到所选模型
  4. 直接返回响应内容,无需提取代码

参数:

  • messages (数组,必填):包含以下对象的对话历史记录:
    • role (string):“系统”、“用户”或“助手”之一
    • content (string):消息内容
  • model (字符串,可选):从以下选项中选择:
    • mistral-large-latest (默认)-能力最强,最适合复杂推理
    • mistral-small-latest -更快,适合更简单的任务
    • ministral-8b-latest -高效、平衡的性能
    • ministral-3b-latest -最快、最轻量级的任务
  • temperature (数字,可选):采样温度0-1(默认值:0.7)
  • top_p (数字,可选):Nucleus采样0-1(默认值:1)
  • max_tokens (数字,可选):要生成的最大令牌数(默认值:1000)
  • stop (数组,可选):停止序列以结束生成

示例用例:

  • 解释复杂的架构决策
  • 计划实施策略
  • 分析代码的安全问题
  • 生成技术文档
  • 回答有关最佳实践的问题

工作原理:API体系结构

服务器智能管理到两个不同的Mistral API端点的连接:

代码端点 (https://codestral.mistral.ai/v1)

  • 用于: codestral-latest 和 codestral-mamba-latest 模型
  • 专门用于代码相关任务
  • 支持聊天完成和FIM(中间填充)完成

标准Mistral端点 (https://api.mistral.com/v1)

  • 用于: mistral-large-latest, mistral-small-latest, ministral-8b-latest, ministral-3b-latest
  • 针对通用推理和分析进行了优化
  • 仅支持聊天完成

自动路由: 这 mistral.ts 模块根据所选模型自动确定使用哪个端点,为每个端点创建具有适当身份验证和超时的单独axios客户端。

内置安全功能:

  • 速率限制:强制请求之间的最小间隔为100ms,以防止API节流
  • 超时:所有API调用超时30秒
  • 错误处理:通过用户友好的消息进行全面的错误捕获,用于:
    • 401:身份验证失败(API密钥无效)
    • 429:超出速率限制
    • 500:服务器错误
    • 其他具有详细上下文的错误
  • 输入验证:在API调用之前使用Zod架构验证的所有参数
  • 响应验证:根据预期架构验证API响应
  • 代码提取:自动从响应中的markdown代码块中提取代码
  • 调试日志记录:用于故障排除的详细错误记录

发展

在开发模式下运行并自动重新加载:

npm run dev

运行测试:

npm test

与MCP客户端一起使用

此服务器实现了模型上下文协议,这意味着它可以与任何兼容MCP的客户端一起使用:

Claude桌面集成

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "mistral-codestral": {
      "command": "node",
      "args": ["/path/to/mcp-mistral-codestral/build/index.js"],
      "env": {
        "MISTRAL_API_KEY": "your_api_key_here"
      }
    }
  }
}

重新启动Claude Desktop后,您将可以访问 code_completion 和 chat 工具。

使用工具

连接后,您可以通过自然语言调用这些工具:

代码完成:

"Please complete this Python function: def fibonacci(n):"

Bug修复:

"Find and fix bugs in this TypeScript code: [paste code]"

测试生成:

"Generate Jest tests for this React component: [paste code]"

一般推理:

"Explain the trade-offs between REST and GraphQL APIs"

错误处理

服务器在多个级别实现了全面的错误处理:

API层 (mistral.ts):

  • 捕获并分类HTTP错误(401、429、500等)
  • 提供特定于上下文的错误消息
  • 记录调试的详细错误信息

服务器层 (index.ts):

  • 在使用Zod模式处理之前验证所有输入
  • 捕获工具执行错误
  • 向客户端返回结构化错误响应
  • 优雅地处理文件I/O错误

错误响应格式:

{
  content: [{
    type: "text",
    text: "Error: [user-friendly message]"
  }],
  isError: true
}

资源访问

服务器通过以下方式提供对代码文件的访问 file://code 资源URI,使MCP客户端能够:

  • 列出工作区中的可用代码文件
  • 读取代码文件内容
  • 将代码上下文集成到AI交互中

许可证

麻省理工学院