Hardware Manual RAG MCP Server
Click on "Install 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., "@Hardware Manual RAG MCP ServerWhat is the pinout for the STM32F407 SPI1 interface?"
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.
Hardware Manual RAG MCP Server
A Model Context Protocol (MCP) server that provides Local RAG (Retrieval-Augmented Generation) over hardware manuals (PDF & HTML). It indexes your manuals into ChromaDB using local embeddings and exposes a query_hardware_manual tool so Claude Code can look up pinouts, registers, schematics, and other hardware specifications — all running locally inside a Docker container.
How It Works
Your PDF/HTML Manuals → Docker Container → ChromaDB (vectors) → Claude Code via MCPFiles are parsed and chunked into 800-character overlapping segments
Each chunk is embedded with
all-MiniLM-L6-v2(local, no API key needed)Incremental indexing: only new or changed files are re-indexed on restart
Vectors persist on a Docker named volume so 20+ MB of manuals aren't re-indexed every time
Related MCP server: smart-search
Prerequisites
Docker & Docker Compose installed
Claude Code (or any MCP-compatible client)
At least ~2 GB free disk space (for Docker image + embedding model + vector store)
Option 1: Pull from GitHub Container Registry (GHCR)
The Docker image is published to GHCR. You don't need to clone the repo.
# Pull the latest image
docker pull ghcr.io/YOUR_ORG/hum_mcp:latestThen use the docker-compose override below to use the prebuilt image.
docker-compose.prod.yml
Create a docker-compose.prod.yml file:
services:
hardware-mcp:
image: ghcr.io/YOUR_ORG/hum_mcp:latest
pull_policy: always
container_name: hardware-mcp
restart: unless-stopped
init: true
volumes:
- ./manuals_repo:/app/manuals:ro
- chroma_data:/app/chroma_db
environment:
- PYTHONUNBUFFERED=1
volumes:
chroma_data:Replace
YOUR_ORGwith your GitHub username or organization name.
Start it:
docker compose -f docker-compose.prod.yml up -dOption 2: Build from Source
Clone and build locally:
git clone https://github.com/YOUR_ORG/hum_mcp.git
cd hum_mcp
# Build and start the container
docker compose up -d --buildSetup
1. Place Your Hardware Manuals
Copy your PDF or HTML hardware manuals into the manuals_repo/ directory:
# Linux / macOS
cp ~/Downloads/stm32f4-datasheet.pdf ./manuals_repo/
cp ~/Downloads/esp32-technical-reference.html ./manuals_repo/
# Windows (PowerShell)
Copy-Item ~\Downloads\stm32f4-datasheet.pdf .\manuals_repo\Supported formats: .pdf, .html, .htm
2. Start the Container
docker compose up -dOn first start, the container will:
Download the embedding model (~80 MB,
all-MiniLM-L6-v2) — one time onlyIndex all manuals in
manuals_repo/into ChromaDBLog progress to Docker logs
3. Verify It's Running
# Check container status
docker ps --filter name=hardware-mcp
# View indexing logs
docker logs hardware-mcpLook for a line like:
Indexing complete: 2 file(s) indexed, 0 skipped, 45 total chunks in collection
Server ready — 45 total chunks availableRuntime Usage
Connect Claude Code
Add this to your MCP configuration file:
macOS / Linux: ~/.config/claude/config.json
Windows: %APPDATA%\Claude\config.json
{
"mcpServers": {
"hardware-manual-server": {
"command": "docker",
"args": ["exec", "-i", "hardware-mcp", "python", "-m", "mcp", "run", "src/server.py"]
}
}
}Restart Claude Code after saving. You should see a tools icon appear indicating the MCP server is connected.
Query Your Manuals
Once connected, Claude Code can answer hardware questions by calling query_hardware_manual. Simply ask questions like:
"What is the pinout for the STM32F407 SPI1 interface?"
"What are the electrical characteristics of GPIO pins at 3.3V?"
"Show me the register map for the UART control registers"
"What is the maximum clock frequency for the ESP32-S3?"
The tool returns the top 5 most relevant chunks with source filenames and relevance scores.
Adding or Updating Manuals
Add/update files in
manuals_repo/Restart the container:
docker compose restartOnly new or changed files are re-indexed — existing chunks are preserved.
Removing Manuals
Delete the file from
manuals_repo/Restart the container — orphaned chunks are automatically cleaned up:
docker compose restartUseful Commands
Command | Description |
| Start the container (detached) |
| Stop and remove the container (vector data persists) |
| Restart to pick up new/changed manuals |
| Destroy everything including the vector database |
| View server logs |
| Follow logs in real time |
| List indexed manuals inside the container |
| Rebuild the image from scratch |
Project Structure
hum_mcp/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── manuals_repo/ # ← Put your PDF/HTML manuals here
│ └── README.txt
├── src/
│ ├── __init__.py
│ └── server.py # Main application
└── .github/
└── workflows/
└── docker-build.ymlTroubleshooting
"No hardware manuals have been indexed yet"
Place at least one .pdf or .html file in manuals_repo/ and run docker compose restart.
"Error querying hardware manuals: …"
Check the logs for details: docker logs hardware-mcp
Container keeps restarting
This typically means the embedding model failed to download. Check your internet connection and retry:
docker compose down -v
docker compose up -dScanned PDFs (image-only) don't produce results
pypdf cannot extract text from scanned/image-based PDFs. Use OCR software to create text-searchable PDFs first, or convert them to HTML.
Slow first startup
The embedding model (~80 MB) is downloaded on first run. Subsequent starts are fast.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thenguyenyf/hum_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server