NiiVue MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NiiVue MCP Serverhow do I load a NIfTI image in Niivue?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@edziocodes/niivue-mcp
MCP server that provides Niivue documentation and API reference to LLMs with fast lexical search and optional semantic hybrid search.
What you get
Full text search over Niivue docs and guides (BM25 + embeddings).
API lookup from JSDoc comments in the Niivue TypeScript source.
Structured tools for overview, search, listing, and page retrieval.
Local cache to keep startup and query latency low.
Related MCP server: knowledge-server
Installation
npm install @edziocodes/niivue-mcpMCP Client Configuration
Add the following to your MCP client configuration (e.g., Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"niivue": {
"command": "npx",
"args": ["-y", "@edziocodes/niivue-mcp"]
}
}
}Development
Clone and build from source:
git clone https://github.com/gaiborjosue/niivue-mcp.git
cd niivue-mcp
npm install
npm run buildRun locally:
npm run devEmbeddings (hybrid search)
Hybrid search with semantic embeddings is enabled by default. The embedding model is downloaded on first use.
To disable embeddings and use BM25 search only:
npx @edziocodes/niivue-mcp --no-embeddingsTools
get_niivue_overviewsearch_niivue_docsget_niivue_doclist_niivue_docssearch_niivue_apiget_niivue_api
Cache
Stored in ~/.niivue-mcp:
docs/raw markdownindex.jsonBM25 indexvectors.jsonvector index (when embeddings enabled)api-index.jsonparsed API entriesmeta.jsoncache metadata
Attribution
Docs and source are fetched from the Niivue repository: https://github.com/niivue/niivue/
Available Tools
6 toolsget_niivue_apiC
Fetch full details for a specific Niivue API method.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool fetches details but doesn't describe what 'full details' includes, potential errors, rate limits, or authentication needs. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, no output schema, and minimal parameter documentation, the description is incomplete. It doesn't provide enough context for an agent to reliably use this tool, especially with sibling tools that might overlap, leaving key operational details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter ('name') with 0% description coverage, and the tool description doesn't add any semantic details about this parameter. It doesn't explain what 'name' refers to (e.g., API method name, identifier format, examples), failing to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('fetch') and resource ('full details for a specific Niivue API method'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'search_niivue_api' or 'get_niivue_overview', which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search_niivue_api' and 'get_niivue_overview', it's unclear if this tool is for detailed lookups, general searches, or other contexts, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_niivue_docC
Fetch full content for a Niivue doc page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool fetches content, implying a read-only operation, but doesn't cover critical aspects like authentication needs, rate limits, error handling, or what 'full content' includes (e.g., text, metadata, images). This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations, no output schema, and low parameter coverage, the description is incomplete. It doesn't explain the return format, error cases, or how it differs from siblings, leaving the agent with insufficient context to use the tool effectively beyond basic purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It mentions 'page' as the parameter but doesn't explain what a 'page' is (e.g., a page name, ID, URL), valid formats, or examples. This adds minimal semantic value beyond the schema's structural definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch full content') and resource ('Niivue doc page'), making the purpose understandable. It distinguishes from siblings like 'list_niivue_docs' (which likely lists pages) and 'search_niivue_docs' (which searches content), but could be more specific about what 'full content' entails compared to other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for fetching content, or differentiate from siblings like 'get_niivue_overview' or 'search_niivue_docs', leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_niivue_overviewB
Return the CLAUDE.md overview for Niivue.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns something, but doesn't describe what 'CLAUDE.md overview' entails (e.g., format, content type, size), whether it's a read-only operation, or any potential errors or limitations, leaving significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero waste. It front-loads the key action and resource efficiently, making it easy to parse and understand at a glance without any redundant or verbose language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is minimal but incomplete. It doesn't explain what 'CLAUDE.md overview' is, how it differs from other documentation tools, or what the return value looks like, leaving the agent with insufficient context for reliable use despite the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any, earning a baseline score of 4 for not introducing unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return') and the specific resource ('CLAUDE.md overview for Niivue'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_niivue_doc' or 'list_niivue_docs', which might also return documentation-related content, leaving some ambiguity about uniqueness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With sibling tools like 'get_niivue_doc' and 'list_niivue_docs' available, the description lacks context on whether this tool is for a specific overview file, general documentation, or other use cases, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_niivue_docsB
List available Niivue docs and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool lists docs and metadata, implying a read-only operation, but doesn't specify whether this returns summaries, full details, pagination behavior, or any constraints like rate limits or authentication needs. For a tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavior, output format, or differentiation from siblings. For a list operation with no structured guidance, it meets basic requirements but leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for zero parameters is 4, as the description appropriately doesn't discuss parameters that don't exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('Niivue docs and metadata'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings like 'search_niivue_docs' or 'get_niivue_doc', which would be needed for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search_niivue_docs' and 'get_niivue_doc' available, there's no indication whether this lists all docs, filtered docs, or serves a different purpose, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_niivue_apiC
Search Niivue API methods by name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states the tool searches API methods, it doesn't describe what the search returns (method signatures, documentation snippets, etc.), whether results are paginated, what happens when no matches are found, or any performance characteristics. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that directly states the tool's core function. There's no wasted language or unnecessary elaboration, making it easy to parse and understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 2 parameters (one required), no annotations, and no output schema, the description is inadequate. It doesn't explain what constitutes a successful search, what format results are returned in, how the limit parameter works, or how this tool differs from its siblings. The agent would struggle to use this tool effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for both parameters, the description provides no information about what the 'query' parameter should contain (keywords, exact names, partial matches) or what the 'limit' parameter controls (number of results, pagination). The description mentions searching 'by name or description' which gives minimal context for the query parameter but nothing about format or the limit parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as searching Niivue API methods by name or description, which is a specific verb+resource combination. However, it doesn't distinguish this from its sibling tools like 'search_niivue_docs' or 'get_niivue_api', which appear to perform similar search/retrieval functions in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its sibling tools. With multiple similar tools available (get_niivue_api, search_niivue_docs, etc.), there's no indication of what makes this tool distinct or when it should be preferred over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_niivue_docsC
Search Niivue documentation with BM25.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions BM25 as the search algorithm, which hints at ranking behavior, but lacks details on permissions, rate limits, output format, or error handling. For a search tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a technical detail (BM25) that adds value without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It doesn't address key aspects like what the search returns, how results are structured, or error conditions. For a tool with two parameters and complex search behavior, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds no parameter details. It doesn't explain what 'query' should contain (e.g., keywords, phrases) or how 'limit' affects results (e.g., max number of docs). This leaves both parameters semantically unclear beyond their types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search') and target resource ('Niivue documentation'), and specifies the search algorithm ('with BM25'), which adds technical specificity. However, it doesn't differentiate from sibling tools like 'search_niivue_api' or 'list_niivue_docs', leaving ambiguity about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_niivue_api' or 'list_niivue_docs'. The description implies it's for searching documentation, but without explicit context or exclusions, the agent must infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
get_niivue_api - First observed
get_niivue_doc - First observed
get_niivue_overview - First observed
list_niivue_docs - First observed
search_niivue_api - First observed
search_niivue_docs
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no ambiguity: get_niivue_api fetches API method details, get_niivue_doc fetches doc page content, get_niivue_overview returns the overview, list_niivue_docs lists docs, search_niivue_api searches API methods, and search_niivue_docs searches documentation. The tools are well-differentiated by their target resource (API vs. docs) and action (get vs. list vs. search).
All tool names follow a consistent verb_noun pattern with 'niivue' as a prefix, using snake_case throughout. The verbs (get, list, search) are applied predictably to the nouns (api, doc, overview, docs), making the naming highly consistent and readable.
With 6 tools, the server is well-scoped for its purpose of accessing Niivue documentation and API information. Each tool earns its place by covering distinct aspects like fetching, listing, and searching, without being too sparse or bloated, which is ideal for a documentation-focused server.
The tool set provides comprehensive coverage for accessing and searching Niivue documentation and API details, with no obvious gaps for the stated purpose. Minor gaps might include lack of update or delete operations, but these are not expected in a read-only documentation context, so the surface is nearly complete.
Maintenance
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Search your knowledge bases from any AI assistant using hybrid RAG.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Search @imqueue docs and scaffold typed services & clients from your AI coding agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.76 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to search and retrieve information from large technical documentation (OpenAPI specs, markdown) via intelligent chunking and semantic search.MIT
- AlicenseNot gradedqualityBmaintenanceProvides local technical documentation with hybrid search (semantic + BM25) for AI agents, ensuring access to up-to-date framework docs.MIT
- AlicenseNot gradedqualityAmaintenanceProvides a hybrid search engine for Obsidian vaults, enabling LLM agents to query notes with BM25 keyword and vector semantic search, metadata filtering, and sibling-document retrieval.5 npmMIT