Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Swih/mistral-mcp

NPM · MISTRAL-MCP

Mistral MCP server: extract invoices and documents from text, Markdown or OCR into typed JSON.

Available components

+1 this week 81 Trust /100

Last scanned (6 hours ago)

Scores higher than 68% of npm servers

Category AI and Machine Learning

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 7 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 37 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2498 tokens (~312/item across 8 items; 6 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
  • Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 −5
    • Stability: pass → 0.63 functional
  • 1 Nov 26 +5
    • Stability: fail → pass ▲ security
  • 17 Oct 26 +2

    No change was recorded against any check on this day. Stability & Change Management went from 49 to 63.

  • 15 Oct 26 +38
    • Stability: unverified → fail ▼ security
    • Injection markers: unverified → pass ▲ security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 100 ▲ functional
  • 11 Oct 26 −39
    • Tool safety: pass → unverified ▼ security
    • Stability: fail → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
  • 3 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 49 to 53.

  • 29 Sept 26 0
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 1.00 ▲ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/mistral-mcp@1.0.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 7 packages
Packages resolved 7
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 6 exposed · ~2,383 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
codestral_fim ~299

Fill-in-the-middle code completion with Codestral. Given `prompt` (code preceding the cursor) and `suffix` (code after the cursor), Codestral writes the middle. Use for editor autocomplete scenarios, code-patching agents, or structured refactors where you know the target boundaries. Default stop tokens: [] — let the model decide. Override with `stop` if needed.

NameTypeReqDescription
max_tokensinteger–Maximum number of tokens to generate. Input tokens plus this limit must fit within the model's context length.
modelstring–FIM (fill-in-the-middle) model identifier. Any identifier your endpoint serves is accepted — read mistral://models for the live catalog. Known Mistral aliases: codestral-latest.
promptstringyesCode preceding the cursor.
seedinteger–Random seed for deterministic sampling. Maps to Mistral's `random_seed`.
stoparray–Stop generation when any of these text sequences is encountered.
suffixstringyesCode after the cursor. Can be empty string.
temperaturenumber–Sampling temperature: higher values make output more random; lower values make it more focused. Prefer adjusting this or top_p, not both.
top_pnumber–Nucleus sampling probability mass: 0.1 considers tokens in the top 10% of probability mass. Prefer adjusting this or temperature, not both.
NameTypeReqDescription
finish_reasonstring––
modelstringyes–
textstringyes–
usageobject––

No examples provided.

mistral_chat ~307

Generate a chat completion using a Mistral model. When to use: - Drafting French (or any European-language) content where Mistral shines. - Codestral for code-specific generation/review. - Ministral for cheap / low-latency classification. Returns structured content with the assistant text and token usage. Does NOT stream — use mistral_chat_stream for long outputs with progress updates.

NameTypeReqDescription
max_tokensinteger–Maximum number of tokens to generate. Input tokens plus this limit must fit within the model's context length.
messagesarrayyesChat messages in role/content form.
modelstring–Chat model. Default: mistral-medium-latest (override with MISTRAL_DEFAULT_MODEL).
reasoning_effortstring–Reasoning effort; supported values depend on the selected model.
response_format––Force a structured output: `{type:"json_object"}` for JSON mode, `{type:"json_schema", json_schema:{...}}` for strict schema mode.
seedinteger–Random seed for deterministic sampling. Maps to Mistral's `random_seed`.
temperaturenumber–Sampling temperature: higher values make output more random; lower values make it more focused. Prefer adjusting this or top_p, not both.
top_pnumber–Nucleus sampling probability mass: 0.1 considers tokens in the top 10% of probability mass. Prefer adjusting this or temperature, not both.
NameTypeReqDescription
finish_reasonstring––
modelstringyes–
reasoning_contentstring–Reasoning trace returned by Magistral models. Absent for non-reasoning models.
textstringyes–
usageobject––

No examples provided.

mistral_ocr ~711

Run Mistral OCR on a PDF or image, returning structured markdown per page. Input `document` is one of: - { type: "document_url", documentUrl: "https://...pdf" } - { type: "image_url", imageUrl: "https://..." | "data:image/..." } - { type: "file", fileId: "<id-from-files-api>" } Options: - `pages`: array of 0-indexed page numbers or string like "0-5,7". - `tableFormat`: 'markdown' (default) or 'html'. - `extractHeader` / `extractFooter`: include page header/footer when present. - `includeImageBase64`: embed extracted image bytes as base64 in the response. - `document_annotation_format`: JSON schema for whole-document structured extraction. - `bbox_annotation_format`: JSON schema for extracted image / bbox annotations. - `confidence_scores_granularity`: 'page', 'word', or 'block'. 'block' adds per-block content/type confidence under `pages[].blocks[].confidence_scores` and requires OCR 4.1 or newer. - `includeBlocks`: return paragraph-level blocks (bounding box + type) in reading order — titles, lists, tables, images, equations, captions, code, references, aside text, header, footer, signature. Requires OCR 4 (mistral-ocr-4-0) or newer; older models accept the flag but return an empty `blocks` array. Returns `pages[].markdown` plus optional `pages[].hyperlinks`, `header`, `footer`, `images` bounding boxes, `blocks`, annotations, confidence scores, and `dimensions`.

NameTypeReqDescription
bbox_annotation_formatobject–JSON Schema for structured annotations of each extracted bounding box or image.
confidence_scores_granularitystring–Confidence granularity. 'block' also fills pages[].blocks[].confidence_scores and requires OCR 4.1 (mistral-ocr-4-1) or newer.
document–yesDocument to process, supplied as a document URL, an image URL or data URI, or an uploaded file ID.
document_annotation_formatobject–JSON Schema for a structured annotation extracted from the entire document.
document_annotation_promptstring–Instructions for whole-document structured extraction. Requires document_annotation_format.
extractFooterboolean–Extract each page footer into its footer field and remove it from the page markdown.
extractHeaderboolean–Extract each page header into its header field and remove it from the page markdown.
imageLimitinteger–Maximum number of images to extract from the document.
imageMinSizeinteger–Minimum height and width of an image to extract.
includeBlocksboolean–Return paragraph-level blocks (bounding box + type) per page. Requires OCR 4 (mistral-ocr-4-0) or newer.
includeImageBase64boolean–Include base64-encoded data for extracted images in the response.
modelstring–OCR model. Default: mistral-ocr-latest.
pages––Zero-based page numbers to process, as an array or comma-separated numbers and ranges such as "0-5,7".
tableFormatstring–Format for extracted tables: Markdown or HTML.
NameTypeReqDescription
annotationsobject––
document_annotationstring––
modelstringyes–
pagesarrayyes–
pages_countintegeryes–
usageobject––

No examples provided.

mistral_vision ~327

Chat completion with multimodal input: text + image_url parts. Requires a vision-capable model. Accepted: - pixtral-large-latest - pixtral-12b-latest - mistral-large-latest - mistral-medium-latest - mistral-small-latest Each message's `content` is either a plain string (pure text) or an array of parts `{ type: 'text', text }` / `{ type: 'image_url', imageUrl }`. The image URL can be an https URL or a data: URI base64 payload. Returns the assistant text + token usage. For non-visual requests, prefer `mistral_chat`.

NameTypeReqDescription
max_tokensinteger–Maximum number of tokens to generate. Input tokens plus this limit must fit within the model's context length.
messagesarrayyesChat messages. Pure-text requests are accepted, but this tool is intended primarily for multimodal prompts containing image parts.
modelstring–Vision-capable Mistral model. Default: pixtral-large-latest.
seedinteger–Random seed for deterministic sampling. Maps to Mistral's `random_seed`.
temperaturenumber–Sampling temperature: higher values make output more random; lower values make it more focused. Prefer adjusting this or top_p, not both.
top_pnumber–Nucleus sampling probability mass: 0.1 considers tokens in the top 10% of probability mass. Prefer adjusting this or temperature, not both.
NameTypeReqDescription
finish_reasonstring––
modelstringyes–
textstringyes–
usageobject––

No examples provided.

process_document ~419

Single-call pipeline: provided text/Markdown or Mistral OCR → classify (if kind=auto) → typed extraction → validation. source.type=text skips OCR and Files uploads. Text with kind=generic makes no API calls; classification and typed extraction use Mistral chat. Results expose extraction_source. Provided text has null ocr_confidence and page_count; ocr_text contains the supplied text unchanged. Replaces the manual chain of mistral_ocr + mistral_chat + JSON parsing. Kinds: contract | invoice | id_document | generic. Use kind=auto to let the server classify. Returns a discriminated union — switch on `kind` to access typed fields. Validation checks schema and, for OCR sources, OCR confidence; not factual or accounting accuracy. Typed extraction rejects text longer than 60000 characters rather than truncating it. Cache keys include source, kind, page limit, endpoint, models and pipeline version. Override location with MISTRAL_MCP_CACHE_DIR. Override mode with options.cache. Default cache mode is 'read_write' EXCEPT for kind=id_document (auto-bypass to avoid persisting PII). Set options.cache='read_write' explicitly to opt in for id documents. options.maxPages and options.minOcrConfidence apply only to OCR sources. The confidence floor defaults to 0.3. Below the floor the tool returns isError. Missing or partial confidence scores also return isError; use mistral_ocr directly if you need raw OCR without a confidence guarantee. 0.3 is a conservative starting point, not a measured one: calibrate it for your corpus with `npm run eval:docs`.

NameTypeReqDescription
kindstring–Extraction task. auto classifies the document; generic returns text without typed extraction. Text source with generic makes no API calls.
optionsobject–Page selection, OCR confidence floor and local cache policy.
source–yesAlready extracted text/Markdown, or an OCR source: remote URL, uploaded file ID, or inline image.
NameTypeReqDescription
anomaliesarray––
cache_hitbooleanyes–
clausesarray––
country–––
currency–––
dobstring|null––
document_typestring––
due_datestring|null––
expirystring|null––
extraction_sourcestringyesHow the input text was obtained. provided_text is supplied by the caller, not verified by OCR.
key_datesarray––
kindstringyes–
line_itemsarray––
namestring––
ocr_confidence–yesMean Mistral OCR page confidence. Null for provided text; never an extraction accuracy score.
ocr_textstringyesText used for extraction: provided text unchanged, or Markdown returned by Mistral OCR.
page_count–yesPages processed by Mistral OCR. Null for provided text, whose pagination is unknown.
partiesarray––
pipeline_versionstringyes–
risk_score–––
source_idstringyes–
structured_textstring––
summarystring|null––
totalnumber|null––
total_duration_msintegeryes–
vendorobject––

No examples provided.

voxtral_transcribe ~320

Transcribe an audio file to text using Mistral Voxtral. Accepted models: - voxtral-mini-latest - voxtral-small-latest Audio source is one of: - { type: "file_url", fileUrl: "https://..." } (public URL) - { type: "file", fileId: "<id-from-files-api>" } Options: - `language`: ISO-639-1 hint (e.g. 'fr', 'en'). Boosts accuracy when known. - `temperature`: sampling temperature. - `diarize`: return per-speaker segments (default false). - `timestampGranularities`: ['segment'] to return per-segment timestamps. - `contextBias`: list of phrases/terms that should bias the decoder. Returns plain `text`, detected `language`, optional `segments[]`, and token usage.

NameTypeReqDescription
audio–yesAudio to transcribe, supplied as a public URL or an uploaded file ID.
contextBiasarray–Words or phrases to favor when decoding the audio.
diarizeboolean–Identify speakers in the returned transcription segments. Defaults to false.
languagestring–ISO-639-1 language hint (e.g. 'fr', 'en').
modelstring–STT model. Default: voxtral-mini-latest.
temperaturenumber–Sampling temperature for transcription.
timestampGranularitiesarray–Only 'segment' is currently supported.
NameTypeReqDescription
languagestring|nullyes–
modelstringyes–
segmentsarray––
textstringyes–
usageobject––

No examples provided.

Install

How do I install the io.github.Swih/mistral-mcp server?

io.github.Swih/mistral-mcp runs locally as an npm package, launched with npx -y mistral-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mistral-mcp

# add to Claude Code
claude mcp add swih-mistral-mcp -- npx -y mistral-mcp
Common questions

What is the io.github.Swih/mistral-mcp server?

io.github.Swih/mistral-mcp is listed in the public MCP registry as io.github.Swih/mistral-mcp. Mistral MCP server: extract invoices and documents from text, Markdown or OCR into typed JSON. This page covers its npm package (mistral-mcp).

Is the io.github.Swih/mistral-mcp server safe to use?

io.github.Swih/mistral-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Swih/mistral-mcp server expose?

io.github.Swih/mistral-mcp exposes 6 tools: mistral_chat, codestral_fim, mistral_vision, mistral_ocr, voxtral_transcribe, process_document. Their descriptions and schemas cost roughly 2,383 tokens of context every time the server is loaded.

Is the io.github.Swih/mistral-mcp server still maintained?

io.github.Swih/mistral-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.Swih/mistral-mcp server under?

io.github.Swih/mistral-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.