baby-benzing/school-research-mcp-server
If you are the rightful owner of school-research-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The School Research MCP Server provides a suite of tools for accessing educational institution data with enterprise-grade quality.
School Research MCP Server
Production-quality MCP tools for retrieving university and college data from multiple sources.
Overview
This repository provides a comprehensive suite of Model Context Protocol (MCP) tools for accessing educational institution data. Each tool is built with enterprise-grade quality, featuring:
- Type Safety: Full Pydantic models for all inputs and outputs
- Comprehensive Documentation: Detailed docstrings with real-world examples
- Robust Error Handling: Graceful degradation with typed error responses
- Rate Limiting: Built-in rate limiting with exponential backoff
- Testing: >80% test coverage with unit and integration tests
Installation
pip install school-research-mcp-server
Development Installation
git clone https://github.com/baby-benzing/school-research-mcp-server.git
cd school-research-mcp-server
pip install -e ".[dev,test,docs]"
Tools Available
1. Common Data Set (fetch_common_data_set)
Retrieves standardized institutional data including admission rates, test scores, and financial aid information.
2. IPEDS Database (query_ipeds)
Queries the Integrated Postsecondary Education Data System for enrollment, graduation rates, and financial data.
3. College Scorecard API (fetch_college_scorecard)
Accesses Department of Education metrics including earnings data, debt levels, and completion rates.
4. NSF Award Search (search_nsf_awards)
Searches National Science Foundation grants by institution, department, or investigator.
5. Faculty Research Profiles (fetch_faculty_profiles)
Retrieves faculty information from department pages including research areas and publications.
6. Course Catalog (fetch_course_catalog)
Fetches course offerings, descriptions, prerequisites, and enrollment data.
7. Reddit College Communities (search_reddit_colleges)
Searches college-specific subreddits for posts, comments, and sentiment analysis.
8. Student Newspaper Archives (search_student_newspapers)
Retrieves articles from student publications with full-text search capabilities.
9. LinkedIn Alumni Data (fetch_linkedin_alumni)
Fetches career outcomes and employment data for graduates.
10. RateMyProfessors (fetch_professor_ratings)
Retrieves professor ratings, difficulty scores, and student comments.
11. Campus Safety Statistics (fetch_campus_safety)
Fetches Clery Act crime data and campus safety statistics.
12. University Rankings (fetch_university_rankings)
Retrieves rankings from various sources including overall and subject-specific rankings.
13. NIH Research Grants (search_nih_grants)
Searches NIH RePORTER database for research grants and funding information.
14. Form 990 Tax Filings (fetch_form_990)
Retrieves nonprofit financial data including revenue, expenses, and executive compensation.
15. State Appropriations (fetch_state_appropriations)
Fetches public funding data for state schools including trends and allocations.
Quick Start
from school_research_mcp.tools import fetch_common_data_set
from school_research_mcp.models import CommonDataSetRequest
# Fetch Harvard's Common Data Set
request = CommonDataSetRequest(
institution_name="Harvard University",
academic_year="2023-2024"
)
response = fetch_common_data_set(request)
print(f"Acceptance Rate: {response.admission_data['acceptance_rate']:.2%}")
print(f"Total Enrollment: {response.enrollment_data['total_enrollment']:,}")
Architecture
school-research-mcp-server/
├── src/
│ ├── __init__.py
│ ├── tools/ # MCP tool implementations
│ │ ├── __init__.py
│ │ ├── common_data_set.py
│ │ ├── ipeds.py
│ │ └── ...
│ ├── models/ # Pydantic models
│ │ ├── __init__.py
│ │ ├── requests.py
│ │ └── responses.py
│ └── utils/ # Utility functions
│ ├── __init__.py
│ ├── rate_limiter.py
│ ├── validators.py
│ └── parsers.py
├── tests/
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
└── docs/ # Documentation
Testing
Run the test suite:
# All tests
pytest
# Unit tests only
pytest tests/unit
# Integration tests only
pytest tests/integration
# With coverage report
pytest --cov=src --cov-report=html
Contributing
We welcome contributions! Please see our for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Quality Standards
All code must meet these standards:
- ✅ Type hints for all functions
- ✅ Pydantic models for inputs/outputs
- ✅ Comprehensive docstrings with examples
- ✅ >80% test coverage
- ✅ Error handling with typed responses
- ✅ Rate limiting implementation
- ✅ Black formatting
- ✅ Ruff linting
- ✅ MyPy type checking
License
MIT License - see file for details.
Support
For issues, questions, or suggestions, please open an issue on GitHub.
Acknowledgments
This project implements tools for accessing publicly available educational data from various sources. We respect all data source terms of service and implement appropriate rate limiting.