使用说明
Mistral编码MCP系列
模型上下文协议(MCP)服务器,可与Mistral AI的Codestral和通用语言模型无缝集成,通过标准化接口实现AI驱动的代码完成、错误修复、测试生成和通用推理功能。
这是什么MCP服务器?
这是一个 MCP(模型上下文协议)服务器 它充当MCP客户端(如Claude Desktop、IDE或其他AI助手)和Mistral AI强大的语言模型之间的桥梁。它将Mistral的功能作为标准化工具公开,任何兼容MCP的客户端都可以调用。
它做什么
此服务器提供两个主要功能:
-
特定代码的AI工具 -使用针对代码优化的Mistral Codestral模型:
- 代码补全:智能地完成部分代码片段
- 错误修复:分析代码中的错误,并提供带解释的更正版本
- 测试生成:自动为代码生成全面的单元测试
- 中间填充(FIM):完成现有开始和结束部分之间的代码
-
通用聊天 -使用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节流
- 错误处理 使用用户友好的消息
- 文件输出支持 用于保存生成的代码
- 资源访问 用于工作区中的代码文件
安装
-
克隆此存储库
-
安装依赖项:
npm install -
复制
.env.example到.env并添加您的Mistral API密钥:cp .env.example .env -
构建项目:
npm run build
用法
启动服务器:
npm start
配置
将您的Mistral API密钥添加到 .env 文件:
MISTRAL_API_KEY=your_api_key_here
可用工具
服务器公开了两个MCP工具,任何MCP客户端都可以调用它们:
1.代码完成
一种基于人工智能的代码辅助工具,使用Mistral的Codestral模型处理代码。
它在内部做什么:
- 使用Zod模式验证输入参数
- 对于FIM任务:致电专业人员
/fim/completions端点 - 对于其他任务:构建适当的系统和用户提示,然后调用
/chat/completions - 从响应中的markdown代码块中提取代码
- (可选)将结果保存到文件中
- 向客户端返回格式化代码
参数:
code(string,必填):要处理的代码language(字符串,可选):编程语言(有助于提供特定语法的建议)task(字符串,必填):操作类型:"complete":继续或完成部分代码"fix":分析错误并提供更正版本"test":生成全面的单元测试"fim":中间填充完成(需要suffix)
model(字符串,可选):选择codestral-latest(默认)或codestral-mamba-latestsuffix(字符串,可选):完成后应出现的代码(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推理工具。
它在内部做什么:
- 验证对话消息数组
- 通往标准Mistral API终点(非Codestral)的路线
- 将对话发送到所选模型
- 直接返回响应内容,无需提取代码
参数:
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交互中
许可证
麻省理工学院
