Study Tools 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., "@Study Tools MCPCreate flashcards for chapter 3 of biology"
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.
Study Tools MCP š
An AI-powered study assistant built with Model Context Protocol (MCP) that generates quizzes, flashcards, summaries, and concept explanations from your study materials.
šÆ Features
Smart Summarization ā Generate concise summaries from study materials
Quiz Generation ā Create customizable quizzes with difficulty levels
Concept Explanation ā Get beginner/intermediate/advanced explanations
Flashcards ā Auto-generate flashcard decks from documents
Comparison Tool ā Compare and contrast multiple concepts
MCP Integration ā Works directly with Claude Desktop
Web UI ā Standalone chat interface with FastAPI backend
Related MCP server: Interleaved Learning MCP Server
š ļø Tech Stack
Backend: FastAPI + Python 3.10
AI Framework: Model Context Protocol (MCP)
AI: OpenAI API
Document Parsing: PyPDF2, pdfplumber, python-docx
Frontend: Vanilla JavaScript, HTML, CSS
Cloud: AWS EC2 + S3 + Secrets Manager
CI/CD: GitHub Actions
š Quick Start
Prerequisites
Python 3.10+
OpenAI API key
Installation
Clone the repository:
git clone https://github.com/francis-rf/study-Tools-mcp-server.git
cd study-Tools-mcp-serverInstall dependencies:
pip install -r requirements.txtCreate
.envfile:
cp .env.example .env
# Edit .env and add your OPENAI_API_KEYAdd study materials:
Place PDF or Markdown files in data/notes/:
data/notes/
āāā Machine Learning.pdf
āāā Your Notes.mdRun the application:
python app.pyOpen browser:
http://localhost:8080
š³ Docker Deployment
Build and Run
docker build -t study-tools-mcp .
docker run -p 8080:8080 --env-file .env study-tools-mcpāļø AWS Deployment
Services Used
Service | Purpose |
EC2 (t2.micro) | Hosts the Docker container |
S3 ( | Stores PDF study materials |
Secrets Manager ( | Stores OpenAI API key |
IAM Role | Grants EC2 access to S3 and Secrets Manager |
Setup
Store OpenAI API key in AWS Secrets Manager under secret name
study-tools-mcpUpload PDFs to S3 bucket
study-tools-mcp-materialsLaunch EC2 instance with IAM role attached (
study-tools-mcp-ec2-role)SSH in, install Docker, clone repo and run container
āļø GitHub Actions CI/CD
Automated deployment is configured via .github/workflows/deploy.yml.
Workflow: Deploy to AWS EC2
On every push to main, the pipeline:
Checks out the code
SSHs into the EC2 instance
Pulls latest code from GitHub
Rebuilds the Docker image
Restarts the container with zero downtime
Required GitHub Secrets
Secret | Description |
| EC2 instance public IP |
|
|
| Contents of the |
Workflow Status
š Project Structure
study-Tools-mcp-server/
āāā app.py # FastAPI web application
āāā src/study_tools_mcp/
ā āāā server.py # MCP server entry point
ā āāā config.py # Configuration (Secrets Manager + .env fallback)
ā āāā tools/ # Quiz, flashcards, summarizer, explainer
ā āāā parsers/ # PDF and Markdown parsers
ā āāā utils/ # Logger
āāā static/ # Frontend assets
āāā templates/ # HTML templates
āāā data/notes/ # Study materials (local only ā S3 on AWS)
āāā logs/ # Application logs
āāā .github/workflows/ # CI/CD
ā āāā deploy.yml
āāā Dockerfile
āāā requirements.txt
āāā pyproject.tomlš” API Endpoints
Method | Endpoint | Description |
GET |
| Web UI |
GET |
| Health check |
GET |
| List available study materials |
POST |
| Chat with streaming |
POST |
| Clear conversation history |
š Claude Desktop Integration
Add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"study-tools-mcp": {
"command": "uv",
"args": ["--directory", "C:\\path\\to\\study-tools-mcp", "run", "study-tools-mcp"]
}
}
}Restart Claude Desktop ā the tools will be available automatically.
šø Screenshots
Study Tool AI Interface with quiz generation
Study Tool AI Integration with Claude Desktop
š License
MIT License
Available Tools
6 toolscompare_two_conceptsC
Compare and contrast two related concepts
| Name | Required | Description | Default |
|---|---|---|---|
| concept1 | Yes | ||
| concept2 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits beyond the obvious. Does not mention output format, scope, or side effects.
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?
One sentence with no waste, but under-specifies important details. Appropriate length for a simple tool but could be more informative.
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 availability of an output schema, the description still lacks completeness. No mention of output structure or any contextual information beyond the minimal 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?
Schema description coverage is 0% and the description adds no meaning beyond parameter names. No clarification of what constitutes 'concept1' or 'concept2'.
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 uses the specific verb 'Compare and contrast' with the resource 'two related concepts', clearly distinguishing it from siblings like explain_topic or summarize_topic.
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 on when to use this tool versus alternatives like explain_topic or summarize_full_chapter. Missing when-not-to-use or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_flashcardsC
Generate flashcards for a topic
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| num_cards | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only says 'Generate flashcards for a topic'. It does not disclose whether this creates new data, requires any permissions, or has side effects. The default number of cards (10) is not mentioned.
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 sentence, concise and front-loaded. However, it could include more useful information without significantly increasing length, such as mentioning the default number of cards or that output is structured.
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 low complexity and presence of an output schema, the description is too sparse. It omits behavioral traits, parameter details, and usage guidance, making it insufficient for reliable agent invocation despite the schema covering output structure.
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%, and the description does not elaborate on the parameters ('topic', 'num_cards') beyond their names. No details on format, constraints, or the meaning of 'num_cards' default are provided, leaving the agent to infer from parameter names alone.
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 'Generate flashcards for a topic' clearly states the verb (generate) and resource (flashcards) with a topic context, distinguishing it from sibling tools like create_quiz or summarize_topic. However, it lacks specificity on whether it generates from scratch or from existing content.
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 vs alternatives like create_quiz or compare_two_concepts. There is no mention of prerequisites, exclusions, or contexts where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_quizC
Generate a multiple-choice quiz on a specific topic
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| difficulty | No | intermediate | |
| num_questions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It does not mention output format, limitations, permissions, or side effects beyond 'generate a multiple-choice quiz'.
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?
Single sentence, no wasted words, but could include more detail without being verbose. Front-loaded with action and resource.
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 simplicity of the tool and presence of output schema, the description is still insufficient. It does not explain parameter usage or provide enough context for an agent to invoke correctly.
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%, and the description adds no meaning to parameters. No mention of topic, difficulty, or num_questions, so it fails to compensate for missing schema descriptions.
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 'Generate a multiple-choice quiz on a specific topic' uses a specific verb ('generate') and resource ('multiple-choice quiz'), and clearly distinguishes from siblings like 'create_flashcards' and 'summarize_topic'.
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 on when to use this tool versus alternatives (e.g., compare_two_concepts, create_flashcards). The description only states what it does, not context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_topicB
Get an explanation of a concept at a specific difficulty level
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | ||
| level | No | beginner |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral traits. It only states the basic action without disclosing any side effects, dependencies, or how explanations are generated. There is no mention of authoritative sources or any limitations.
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 sentence of 10 words, fully front-loaded with essential information. No extraneous content.
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?
The tool is simple, and an output schema exists to document return values. The description covers the core purpose but omits any hints about prerequisites, typical use cases, or limitations. Given the low complexity, it is marginally adequate.
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, the description partially compensates by mapping 'concept' to the 'term' parameter and 'specific difficulty level' to 'level'. However, it does not elaborate on the meaning of the levels or any constraints on the term. The baseline for 0% coverage is low, but the description adds marginal value beyond the schema.
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 (get an explanation), the resource (a concept), and the context (at a specific difficulty level). It distinguishes itself from sibling tools like 'compare_two_concepts' and 'summarize_topic' by focusing on explanation rather than comparison or summary.
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 does not provide guidance on when to use this tool versus alternatives. It lacks explicit when-to-use, when-not-to-use, or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_full_chapterC
Create a comprehensive summary of an entire chapter
| Name | Required | Description | Default |
|---|---|---|---|
| chapter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It only says 'create a comprehensive summary' but does not reveal whether it modifies data, requires authentication, or has any side effects. The behavior beyond output is opaque.
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 short sentence without unnecessary words. However, it is too concise to be fully informative, sacrificing completeness for brevity.
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 simplicity (1 param, no annotations) and presence of an output schema, the description could be more complete. It fails to clarify output nature or constraints, relying on the name alone.
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 single required parameter 'chapter_name' has zero description in the schema, and the tool description adds no extra meaning. The agent cannot infer what format or valid values are expected.
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 ('create a comprehensive summary') and the resource ('an entire chapter'). It is specific enough to distinguish from sibling tools like 'summarize_topic' which implies a narrower scope, though not explicitly differentiated.
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 'summarize_topic' or 'explain_topic'. No context about prerequisites or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_topicC
Create a summary of a specific topic from study materials
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| length | No | brief |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic action without disclosing whether it is read-only, destructive, or requires authentication. No mention of side effects or limitations.
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?
Single sentence, no redundant information. Efficient but may be too brief for a full understanding.
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 presence of an output schema, return values are not required. However, the description lacks guidance on choosing between siblings and fails to elaborate on parameter usage, leaving the agent underinformed.
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%, and the tool description provides no details about the parameters. The enum values for 'length' are not explained.
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?
Description clearly states verb (create summary) and resource (specific topic from study materials). However, it does not differentiate from sibling tools like explain_topic or summarize_full_chapter.
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 on when to use this tool versus alternatives such as explain_topic or summarize_full_chapter. Missing context on prerequisites or typical use cases.
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. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
compare_two_concepts - First observed
create_flashcards - First observed
create_quiz - First observed
explain_topic - First observed
summarize_full_chapter - First observed
summarize_topic
TDQS
Each tool has a clearly distinct purpose: compare concepts, generate flashcards, create quizzes, explain topics, summarize chapters, and summarize topics. Even the two summarization tools are differentiated by scope (chapter vs. topic). Agents can easily select the appropriate tool.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., compare_two_concepts, create_flashcards). The naming convention is uniform and predictable across all tools.
Six tools is an appropriate number for a study aid server, covering core actions like explanation, comparison, summary generation, flashcard creation, and quiz creation. The count is neither too thin nor too heavy.
The tool set covers essential study material generation tasks: explaining, comparing, summarizing, creating flashcards, and creating quizzes. A minor gap is the lack of tools to manage or edit generated items, but this is acceptable for a generation-focused server.
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
AP study content, practice, FRQ feedback, progress, plans, and student tools for AI apps.
371Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
Lucky AI study buddy over your own LlamaNotes courses: chat, progress, and AI course generation.
AI-powered YouTube to flashcards with spaced repetition and Anki export
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows Claude to create flashcards for Rember, helping users study and remember information through spaced repetition reviews.3663MIT- FlicenseNot gradedqualityDmaintenanceImplements cognitive science-backed interleaved learning techniques to create study plans, generate mixed-topic quizzes, manage flashcard decks, and track learning progress for optimal knowledge retention.1-
- AlicenseNot gradedqualityDmaintenanceTurns any source material into a guided learning experience with learning maps, notes, four-phase study loop, spaced repetition flashcards, and grounded Q\&A.2MIT
- AlicenseNot gradedqualityCmaintenanceGenerates educational content like quizzes, lesson plans, flashcards, and grading rubrics from any topic via the Model Context Protocol.171MIT
Appeared in Searches
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/francis-rf/study-Tools-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server