Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP server for querying and retrieving Qiskit documentation, guides, and API references
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
QISKIT_DOCS_BASE, QISKIT_HTTP_TIMEOUTYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"qiskit-docs": {
"command": "uvx",
"args": [
"qiskit-docs-mcp-server"
],
"env": {
"QISKIT_DOCS_BASE": "your-value",
"QISKIT_HTTP_TIMEOUT": "your-value"
}
}
}
}Run this in your terminal
claude mcp add qiskit-docs --env QISKIT_DOCS_BASE=your-value --env QISKIT_HTTP_TIMEOUT=your-value -- uvx qiskit-docs-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"qiskit-docs": {
"command": "uvx",
"args": [
"qiskit-docs-mcp-server"
],
"env": {
"QISKIT_DOCS_BASE": "your-value",
"QISKIT_HTTP_TIMEOUT": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"qiskit-docs": {
"type": "stdio",
"command": "uvx",
"args": [
"qiskit-docs-mcp-server"
],
"env": {
"QISKIT_DOCS_BASE": "your-value",
"QISKIT_HTTP_TIMEOUT": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
QISKIT_DOCS_BASE envQISKIT_HTTP_TIMEOUT envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account Qiskit, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.0) reached the registry 4 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Tools MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Web production tools for AI agents: contrast, JP text, WebP, JSON-LD, slugs, dates and 40+ more
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
MCP server for querying and retrieving Qiskit documentation, guides, and API references.
The Qiskit Documentation MCP Server provides AI assistants and agents with seamless access to the complete Qiskit documentation ecosystem. It enables intelligent retrieval of SDK module documentation, implementation guides, and best practices through a standardized Model Context Protocol interface.
The server implements three tools for documentation access:
| Tool | Description | Parameters |
|---|
| search_docs_tool | Search the Qiskit documentation; returns short query-centered snippets by default so the response stays compact for repeated agent use | query: Search query string scope: Search scope filter — all (default), documentation, api, learning, tutorials top_k: Max results to return (default: 5, capped at 10) detail: snippet (default, short excerpt per result) or full (full page body — prefer get_page_tool for a single page) | | get_page_tool | Fetch any Qiskit documentation page and return as markdown | url: Full URL or relative path (e.g., guides/transpile, api/qiskit/circuit) max_length: Max characters to return (default: 20000, 0 for unlimited) offset: Character offset for pagination (default: 0) | | lookup_error_code_tool | Look up a Qiskit/IBM Quantum error code | code: 4-digit error code (e.g., 1002, 7001, 8004) |
The server provides six resources for listing available documentation. Content lists for modules, addons, guides, tutorials, and API packages are dynamically discovered from the documentation sitemap and cached, with hardcoded fallback values used when the sitemap is unreachable.
| Resource URI | Description |
|---|---|
qiskit-docs://modules | List of all Qiskit SDK modules with URL paths |
qiskit-docs://addons | List of Qiskit addon packages with URL paths |
qiskit-docs://guides | List of implementation guides and best practices |
qiskit-docs://tutorials | List of Qiskit tutorials with URL paths |
qiskit-docs://api-packages | List of API packages (runtime, transpiler, REST APIs, etc.) |
qiskit-docs://error-codes | List of Qiskit error code categories |
| Resource URI | Description |
|---|---|
qiskit-docs://modules/{module_name} | Documentation for a specific SDK module |
qiskit-docs://guides/{guide_name} | A specific implementation guide |
qiskit-docs://addons/{addon_name} | Documentation for a specific addon package |
The easiest way to install is via pip:
pip install qiskit-docs-mcp-server
Or using uvx (recommended):
uvx qiskit-docs-mcp-server
This project uses uv for virtual environments and dependencies management. If you don't have uv installed, check out the instructions in https://docs.astral.sh/uv/getting-started/installation/
git clone https://github.com/Qiskit/mcp-servers.git
cd mcp-servers/qiskit-docs-mcp-server
# This will create a virtual environment and install dependencies
uv sync
The server can be configured using environment variables:
| Variable | Description | Default |
|---|---|---|
QISKIT_DOCS_BASE | Base URL for Qiskit documentation | https://quantum.cloud.ibm.com/docs/ |
QISKIT_HTTP_TIMEOUT | HTTP request timeout in seconds | 10.0 |
QISKIT_DOCS_CACHE_TTL | Page cache TTL in seconds | 3600.0 |
QISKIT_SEARCH_CACHE_TTL | Search/JSON cache TTL in seconds | 300.0 |
QISKIT_SEARCH_BASE_URL | Search API base URL | https://quantum.cloud.ibm.com/ |
Create a .env file in the project directory:
# Optional: Customize documentation URLs
QISKIT_DOCS_BASE=https://quantum.cloud.ibm.com/docs/ QISKIT_HTTP_TIMEOUT=15.0 QISKIT_DOCS_CACHE_TTL=3600.0 QISKIT_SEARCH_CACHE_TTL=300.0
uv run qiskit-docs-mcp-server
The server will start and listen for MCP connections.
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": { "qiskit-docs": { "command": "uvx", "args": ["qiskit-docs-mcp-server"] } } }
Add to your Cline MCP settings:
{
"mcpServers": { "qiskit-docs": { "command": "uvx", "args": ["qiskit-docs-mcp-server"] } } }
Note: To run LangChain examples you will need to install the dependencies:
`bash
pip install langchain-mcp-adapters langchain-openai langgraph
`
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent
async def main():
async with MultiServerMCPClient( { "qiskit-docs": { "command": "qiskit-docs-mcp-server", "args": [], "transport": "stdio", } } ) as client:
agent = create_react_agent( ChatOpenAI(model="gpt-4o"), client.get_tools(), )
response = await agent.ainvoke( {"messages": [("user", "How do I create a quantum circuit in Qiskit?")]} ) print(response"messages".content)
asyncio.run(main())
# Search returns short snippets (not full pages) — cheap to call inside an agent
result = await search_docs_tool("transpiler optimization") print(f"Showing {result['returned_results']} of {result['total_results']} matches") for item in result["results"]: print(f"- {item['title']}: {item['url']}") print(f" {item['snippet']}")
page = await get_page_tool(result"results"["url"]) print(page["documentation"])
Note (behavior change):
search_docs_toolnow returns short, query-centered
snippets by default and caps results to
top_k(default 5). In default
(
detail="snippet") mode each result carries asnippetfield — not the full
textbody — and is limited to `id, url, title, pageTitle, module, section,
snippet
. For the original behavior, passdetail="full"`: it restores each
result's full
textbody and all upstream fields and returns every match
by default (no
top_kcap) — an explicittop_kstill limits the count in
full mode but is not clamped to the snippet-mode ceiling. Prefer
get_page_tool
for a single page's full content.
total_resultsis the grand total of matches;
returned_resultsis the count actually returned (equal tototal_resultsin
full mode unless you set an explicit
top_k).
# Fetch circuit module API reference
result = await get_page_tool("api/qiskit/circuit") print(result["documentation"])
result = await get_page_tool("api/qiskit/circuit", max_length=5000) if result["has_more"]: next_page = await get_page_tool("api/qiskit/circuit", offset=result["next_offset"])
# Look up error code 1002
result = await lookup_error_code_tool("1002") print(result["details"])
| Module | Description |
|---|---|
circuit | Quantum circuit construction and manipulation |
quantum_info | Quantum information theory utilities |
transpiler | Circuit transpilation and optimization |
synthesis | Circuit synthesis algorithms |
dagcircuit | DAG representation of quantum circuits |
passmanager | Transpiler pass manager framework |
converters | Circuit format converters |
compiler | High-level compilation routines |
primitives | Sampler and Estimator primitives |
providers | Backend providers and job management |
result | Job result handling and analysis |
visualization | Circuit and result visualization |
qasm2 | OpenQASM 2.0 support |
qasm3 | OpenQASM 3.0 support |
qpy | Qiskit Python serialization format |
utils | General utility functions |
exceptions | Qiskit exception classes |
| Guide | Description |
|---|---|
quick-start | Get started with Qiskit |
construct-circuits | Build and manipulate quantum circuits |
transpile | Transpile circuits for target backends |
transpiler-stages | Understand transpiler pipeline stages |
configure-error-mitigation | Configure error mitigation for primitives |
configure-error-suppression | Configure error suppression techniques |
primitives | Use Sampler and Estimator primitives |
execution-modes | Job, session, and batch execution modes |
dynamic-circuits | Mid-circuit measurements and classical control |
functions | Overview of Qiskit Functions |
See the
qiskit-docs://guidesresource for the complete list of 30+ available guides.
Large documentation pages are automatically paginated. Use max_length and offset to control content retrieval:
# Fetch first 5000 characters
result = await get_page_tool("api/qiskit/circuit", max_length=5000)
result = await get_page_tool("api/qiskit/circuit", max_length=0)
All responses include rich metadata:
{
"status": "success", "url": "https://quantum.cloud.ibm.com/docs/api/qiskit/circuit", "documentation": "
Only the beginning is shown; read the rest in the repo