ResearchMind MCP
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., "@ResearchMind MCPWhat do my uploaded papers say about retrieval-augmented generation?"
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.
ResearchMind MCP
An AI research assistant for working with a personal corpus of academic papers, exposed both as a REST API and as a Model Context Protocol (MCP) server.
Development status: pre-alpha. The system does not yet run. This repository is an architectural foundation with an approved delivery plan. Most capabilities described below are not implemented. The Development Status section is exact about what exists. Nothing here is production-ready or safe to expose to a network.
What It Does
The goal is a research assistant for an individual academic or a small research group. A researcher uploads papers, and the system makes their own corpus answerable:
Semantic search across everything they have uploaded.
Grounded answers to research questions, drawn only from their documents and returned with citations that resolve to a real page and section.
Document-scoped analysis — summarise a paper, compare several.
MCP is the integration seam. The same capabilities are reachable from the project's own web client and from an external MCP host such as Claude Desktop, because both are thin adapters over one service core.
What it is not. Not a literature search engine — it works on documents you supply. Not multi-tenant SaaS. Not a chatbot with general knowledge: if the answer is not in your corpus, the correct response is "no relevant sources", and the system is built to say so rather than to improvise.
Related MCP server: Athena
Architecture
A modular monolith. REST and MCP are sibling adapters over a shared Service Core; neither calls the other.
┌──────────────────┐ ┌────────────────────────┐
│ Next.js client │ │ MCP host │
│ (browser) │ │ (e.g. Claude Desktop) │
└────────┬─────────┘ └───────────┬────────────┘
│ HTTPS + Bearer JWT │ stdio subprocess
┌────────▼─────────────────┐ ┌────────────▼─────────────┐
│ REST ADAPTER │ │ MCP ADAPTER │
│ backend/api/ │ │ mcp_server/ │
│ routers · schemas │ │ tool registry+dispatch │
│ └────────────────┼───┼──► one identity resolver │
└────────┬─────────────────┘ └────────────┬─────────────┘
└───────────────┬──────────────────┘
┌────────────────────────▼───────────────────────────────┐
│ SERVICE CORE — backend/services/ │
│ Auth · Document · Ingestion · Search · Research │
│ every method takes an authenticated Principal │
└──┬──────────┬───────────┬───────────┬──────────────┬───┘
▼ ▼ ▼ ▼ ▼
┌──────┐ ┌─────────┐ ┌────────┐ ┌──────────┐ ┌────────────┐
│Repos │ │ Object │ │Embed │ │ Vector │ │ LLM │
│ │ │ storage │ │Provider│ │ Index │ │ Provider │
└──┬───┘ └────┬────┘ └───┬────┘ └────┬─────┘ └─────┬──────┘
▼ ▼ ▼ ▼ ▼
PostgreSQL volume FastEmbed Qdrant Anthropic
(SOURCE OF (content- (local, (INDEX (Claude)
TRUTH) addressed) 384-d) ONLY)
▲
┌────┴─────┐
│ Redis │ ARQ job queue + rate limits
└──────────┘Storage responsibilities
Store | Owns | Never |
PostgreSQL | Sole authority for what exists and who owns it | Vectors |
Qdrant | An index: vectors + | A source of truth |
Redis | ARQ job queue, job status, rate-limit counters | Anything whose loss is unrecoverable |
Object storage | Original uploaded bytes, content-addressed | Anything derivable |
Isolation invariant. Retrieval filters on
user_idin Qdrant (fast path) and re-validates every chunk against PostgreSQL ownership before any content reaches a prompt (correct path). If the two ever disagree, the system returns fewer results — never another user's document.
Rationale for every structural choice is in docs/adr/.
Technology Stack
Layer | Technology |
Language / runtime | Python 3.12 · Poetry |
API | FastAPI · Uvicorn · Pydantic v2 · pydantic-settings |
System of record | PostgreSQL 16 · SQLAlchemy 2 (async) · asyncpg · Alembic |
Vector index | Qdrant (cosine) |
Jobs & cache | Redis 7 · ARQ |
LLM | Anthropic Claude ( |
Embeddings | FastEmbed · |
Document parsing | PyMuPDF (block mode, thread-offloaded) |
MCP |
|
Auth | JWT ( |
Frontend | Next.js 14 (App Router) · React 18 · TypeScript · Tailwind · TanStack Query · Zustand · axios |
Testing | pytest · pytest-asyncio · testcontainers · httpx · gitleaks |
Quality | ruff · black · mypy (strict) |
Infrastructure | Docker · Docker Compose · GitHub Actions · Dependabot |
Embeddings run locally, so a full stack needs exactly one secret:
ANTHROPIC_API_KEY. See ADR-0004.
Repository Structure
Path | Contents |
| REST adapter ( |
| MCP adapter — server, tools, resources, prompts (renamed to |
| Agent layer (collapsed to a single |
| Domain models, interfaces (ABCs), utilities — the layer everything depends on |
| RAG ingestion: parse → chunk → embed |
| Qdrant adapter |
| Redis adapter |
| Next.js web client |
|
|
| Dockerfiles and infrastructure configuration |
| Developer and CI helper scripts |
|
Development Status
Verified by execution, not by assumption. The full evidence base is in docs/architecture/AUDIT-2026-09.md.
What genuinely works
Component | State |
Domain models ( | ✅ Complete — 12 Pydantic v2 models |
Interfaces ( | ✅ Complete — 4 ABCs |
API schemas ( | ✅ Complete — 9 DTOs |
Settings ( | ✅ Complete |
FastAPI app construction | ✅ Builds and mounts routers |
Repository foundation | ✅ Docs, ADRs, CI hygiene, workflow |
What does not work
Area | State |
All 12 REST endpoints | ❌ Signatures only — every body is |
Authentication | ❌ Fails open. Any non-empty bearer token is accepted |
MCP layer | ❌ Cannot be imported — local |
RAG pipeline | ❌ 1 of 17 stages implemented |
Persistence | ❌ No relational database exists |
Agents | ❌ Return |
Container builds | ❌ All three fail |
Test suite | ❌ 1 failing, 1 uncollectable |
Roughly 10% complete — concentrated in declarations rather than behaviour.
Prerequisites
Python 3.12 · Poetry 1.8+
Node.js 20+ · npm
Docker + Docker Compose v2
An Anthropic API key
Git
Local Development
No runnable workflow exists yet. docker compose up fails: poetry check
rejects pyproject.toml, and the frontend has no next.config.js. Making
these commands work is Milestone M0, the next unit of work.
What works today
git clone <repository-url>
cd researchmind-mcp
cp .env.example .env # then set ANTHROPIC_API_KEY
cd frontend && cp .env.example .env.local && cd ..
./scripts/check-hygiene.sh # repository hygiene checksAfter Milestone M0 (not yet available)
docker compose up --build # full stack
poetry install && poetry run python main.py # backend onlyThis section is updated as each milestone makes a workflow genuinely functional. Commands are not documented here before they work.
Testing
poetry run pytest # ⚠️ does not yet collect cleanly
./scripts/check-hygiene.sh # ✅ works todayStrategy, test levels and the blocking release-gate suites are in docs/development/testing.md.
Git Workflow
main (protected, validated states only) ← milestone/* ← sprint/*.
Conventional Commits. Tags mark validated milestones, never aspirational ones.
Full detail: docs/development/workflow.md.
Roadmap
Milestone | Outcome |
M0 | Build integrity — images build, imports resolve, CI green |
M1 | System of record — Postgres, repositories, migrations |
M2 | Fail-closed authentication |
M3 | Document ingestion — PDF to owned, section-aware chunks |
M4 | Tenant-isolated retrieval |
M5 | Grounded answering — first working end-to-end flow |
M6 | MCP adapter |
M7 | RAG evaluation harness |
M8 | Web client |
M9 | Hardening and observability |
M10 | Release validation |
docs/roadmap/MILESTONES.md · docs/roadmap/COMPLETION_PLAN.md
Security
Authentication currently fails open and the system must not be exposed to a network. Principles and invariants: docs/security/principles.md. To report a vulnerability, see SECURITY.md — please report privately.
Contributing
See CONTRIBUTING.md.
License
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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.
Related MCP Connectors
- docs2mcpOAuthcom.docs2mcp
Query your own PDFs and documents from any MCP client. Every answer cites the page it came from.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Academic literature search, retrieval, and private library management on top of OpenAlex.
Academic research MCP server for paper search, citation checks, graphs, and deep research.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables semantic search and conversational querying across a personal research library of PDFs, DOCX, and other documents using a vector database. It provides tools for document summarization, finding related papers, and high-accuracy retrieval for AI clients like Claude Desktop.-
- FlicenseNot gradedqualityDmaintenanceA local academic research assistant that indexes PDFs into a searchable vector library and exposes MCP tools for semantic search, claim extraction, contradiction detection, and multi-step research synthesis.-
- AlicenseAqualityBmaintenanceEnables searching arXiv and top AI conferences, finding related papers, generating research insights, and managing a personal library via MCP tools.551MIT
- FlicenseAqualityBmaintenanceEnables semantic search across personal PDF paper collections with page-level citations, allowing users to query their library from any MCP-capable client.9-
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/02Mahmoudhamam/researchmind-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server