MCP server for Constitute Project constitution scraping and analysis
Project description
Constitute MCP Server
A Model Context Protocol (MCP) server that provides tools for analyzing and scraping constitutional documents from the Constitute Project.
Features
This MCP server provides comprehensive tools for constitutional analysis:
Core Functionality
- Constitution Listing: Get lists of all available constitutions with filtering options
- Country Search: Find constitutions by country name with fuzzy matching
- Full Text Scraping: Extract complete constitutional documents with structured parsing
- Article Retrieval: Access specific articles by number or ranges
- Keyword Search: Find articles containing specific terms
- Topic Analysis: Search constitutions by legal topics (e.g., economic planning, environment, judiciary)
- Data Export: Save constitutions as JSON or plain text files
- Batch Operations: Scrape multiple constitutions efficiently
Available Tools
- get_constitutions_list - List all available constitutions
- find_constitution_by_country - Search constitutions by country name
- scrape_constitution - Download and parse a complete constitution
- get_article_by_number - Retrieve a specific article
- get_articles_range - Get multiple articles in a range
- search_articles_by_keyword - Find articles containing keywords
- topic_constitutions - Find constitutions by topic
- topic_sections - Get topic-related sections from constitutions
- export_constitution_json - Export constitution as JSON
- export_constitution_text - Export constitution as plain text
- scrape_all_constitutions - Batch scrape operation
Installation
Using uvx (Recommended)
# Install directly from PyPI (once published)
uvx constitute-mcp
# Or install from local development
uvx --from . constitute-mcp
Using pip
pip install constitute-mcp
Development Installation
Linux/macOS
# Clone the repository
git clone https://github.com/yourusername/constitute-mcp.git
cd constitute-mcp
# Initialize development environment
make init
Windows
# Clone the repository
git clone https://github.com/yourusername/constitute-mcp.git
cd constitute-mcp
# Initialize development environment
scripts\setup.bat
For detailed Windows instructions, see README_Windows.md.
Usage
As an MCP Server
Add to your MCP client configuration:
{
"mcpServers": {
"constitute": {
"command": "constitute-mcp"
}
}
}
Example Usage
# Example tool calls through MCP client
# List all constitutions
get_constitutions_list()
# Find constitutions for a specific country
find_constitution_by_country(country_name="Taiwan")
# Scrape a specific constitution
scrape_constitution(constitution_id="taiwan")
# Get a specific article
get_article_by_number(constitution_id="taiwan", article_number="1")
# Search for articles about "freedom"
search_articles_by_keyword(constitution_id="taiwan", keyword="freedom")
# Find constitutions dealing with economic planning
topic_constitutions(topic_key="econplan")
Configuration
The server automatically handles:
- Rate limiting (1 second delay between requests)
- Request logging with unique IDs
- Error handling and retry logic
- File naming sanitization for Windows compatibility
Data Sources
This server uses the Constitute Project API (https://constituteproject.org), which provides:
- 200+ constitutions from around the world
- Current and historical constitutional texts
- Structured data about constitutional topics
- Professional legal annotations
Development
Project Structure
constitute-mcp/
├── constitute_mcp/
│ ├── __init__.py
│ ├── server.py # Main MCP server implementation
│ └── scraper.py # Constitution scraping logic
├── pyproject.toml # Project configuration
├── README.md
└── scripts/
├── publish_to_pypi.py # Automated PyPI publishing
└── version_manager.py # Automatic version management
Running Tests
pytest
Code Quality
# Format code
black constitute_mcp/
# Check imports
isort constitute_mcp/
# Type checking
mypy constitute_mcp/
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and quality checks
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Constitute Project for providing the constitutional database
- Model Context Protocol for the integration framework
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file constitute_mcp-0.1.26.tar.gz.
File metadata
- Download URL: constitute_mcp-0.1.26.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0245bc2bcead2566c36d8f679d87915e231f05ea216b1aab11db0eb8f047db5
|
|
| MD5 |
cb2eed414544952911021f744d2395fd
|
|
| BLAKE2b-256 |
01046d3d4b27db6a96cc96a5d980bd2d6241a8273716e6b4d5c6565b88bbdb92
|
File details
Details for the file constitute_mcp-0.1.26-py3-none-any.whl.
File metadata
- Download URL: constitute_mcp-0.1.26-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cf1edc164f1b9ceb6db5ace2e2cba63e4ec855d49c936be0cddc3914e069a13
|
|
| MD5 |
f26634912f48d08f1ed1e74ce8eded40
|
|
| BLAKE2b-256 |
df06945e87c6ee03a572e154fe44bbe0866ba969f6bdcd1e25f335f70818f0e8
|