From mistral-pack
Installs Mistral AI SDK for Node.js/TypeScript and Python, configures API key authentication via env vars/dotenv, and verifies connection with model listing scripts.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin mistral-packThis skill is limited to using the following tools:
Set up the official Mistral AI SDK (`@mistralai/mistralai` for TypeScript, `mistralai` for Python) and configure authentication for chat completions, embeddings, function calling, vision, and agents.
Applies production-ready Mistral AI SDK patterns for TypeScript and Python: singleton clients, retries, structured JSON outputs, streaming, function calling, and error handling.
Automates Mistral AI tasks like completions, embeddings, fine-tuning, and model management via Rube MCP (Composio). Use for dynamic tool discovery and execution after Rube MCP setup.
Installs Anthropic Claude SDK and configures API key authentication for Python and TypeScript. Verifies setup with test messages to Claude models.
Share bugs, ideas, or general feedback.
Set up the official Mistral AI SDK (@mistralai/mistralai for TypeScript, mistralai for Python) and configure authentication for chat completions, embeddings, function calling, vision, and agents.
Node.js (TypeScript/JavaScript) — ESM only
set -euo pipefail
# npm
npm install @mistralai/mistralai
# pnpm
pnpm add @mistralai/mistralai
# yarn
yarn add @mistralai/mistralai
Python
set -euo pipefail
pip install mistralai
Environment Variables (Recommended)
# Set in shell
export MISTRAL_API_KEY="your-api-key"
# Or create .env file (add to .gitignore!)
echo 'MISTRAL_API_KEY=your-api-key' >> .env
echo '.env' >> .gitignore
Using dotenv (Node.js)
set -euo pipefail
npm install dotenv
import 'dotenv/config';
TypeScript
import { Mistral } from '@mistralai/mistralai';
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
});
async function testConnection() {
try {
const models = await client.models.list();
console.log('Connection successful! Available models:');
for (const model of models.data ?? []) {
console.log(` - ${model.id}`);
}
} catch (error: any) {
if (error.status === 401) {
console.error('Invalid API key. Check your key at console.mistral.ai');
} else {
console.error('Connection failed:', error.message);
}
}
}
testConnection();
Python
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
def test_connection():
try:
models = client.models.list()
print("Connection successful! Available models:")
for model in models.data:
print(f" - {model.id}")
except Exception as e:
print(f"Connection failed: {e}")
test_connection()
// GCP Secret Manager (recommended for production)
import { SecretManagerServiceClient } from '@google-cloud/secret-manager';
const sm = new SecretManagerServiceClient();
async function getMistralKey(): Promise<string> {
const [version] = await sm.accessSecretVersion({
name: 'projects/my-project/secrets/mistral-api-key/versions/latest',
});
return version.payload?.data?.toString() ?? '';
}
// AWS Secrets Manager alternative
import { SecretsManager } from '@aws-sdk/client-secrets-manager';
const sm = new SecretsManager({ region: 'us-east-1' });
async function getMistralKey(): Promise<string> {
const { SecretString } = await sm.getSecretValue({
SecretId: 'mistral/api-key',
});
return SecretString!;
}
@mistralai/mistralai or mistralai)| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Invalid or missing API key | Verify key at console.mistral.ai |
Module not found | SDK not installed | Run npm install @mistralai/mistralai |
ERR_REQUIRE_ESM | Using CommonJS require | SDK is ESM-only; use import or dynamic await import() |
| Network Error | Firewall blocking HTTPS | Ensure outbound HTTPS to api.mistral.ai is allowed |
import { Mistral } from '@mistralai/mistralai';
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
timeoutMs: 30_000,
maxRetries: 3,
});
export default client;
import os
from mistralai import Mistral
client = Mistral(
api_key=os.environ["MISTRAL_API_KEY"],
timeout_ms=30_000,
max_retries=3,
)
function validateMistralApiKey(key: string): boolean {
// Mistral keys are typically 32-char hex strings
return /^[a-zA-Z0-9]{20,}$/.test(key);
}
After successful auth, proceed to mistral-hello-world for your first chat completion.