abeckett86/fca-mcp
If you are the rightful owner of fca-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The FCA MCP Server is an open-source AI-powered regulatory intelligence tool designed to streamline access to financial regulatory information.
FCA MCP Server
Open-source AI-powered regulatory intelligence for financial services
🎯 What This Solves
Financial services firms waste hours every day manually searching through fragmented FCA databases for regulatory information. Our open-source FCA MCP Server transforms this experience by providing real-time, conversational access to live FCA Register data through AI interfaces.
Instead of this: Manual searches across multiple FCA portals, copying firm reference numbers, cross-referencing databases You get this: "Which firms can provide mortgage advice in Scotland?" → Instant, accurate answers with source citations
🚀 Key Benefits
- 70% reduction in regulatory research time
- Real-time data from live FCA APIs (not static databases)
- Open source - inspect, modify, and extend freely
- Conversational interface - ask questions in plain English
- Zero licensing costs - available to all financial services firms
🎬 Demo
See the FCA MCP Server in action:
https://github.com/user-attachments/assets/7f7c4354-4d1f-4ed5-99f2-d3bc2ce7ddbe
Watch a 2-minute demo showing how regulatory questions that normally take hours are answered in seconds
Demo Scenarios:
- 🏛️ Digital Asset Startup: "Do I need FCA authorization for my custody solution?"
- 💼 Investment Advisory: "What are current suitability rules for high-net-worth clients?"
- 📊 Market Intelligence: "Find all authorized wealth management firms in London"
How It Works
Our MCP (Model Context Protocol) server acts as a bridge between AI assistants like Claude Desktop and the FCA's regulatory data. It:
- Continuously ingests data from all FCA Register endpoints
- Processes and normalises the information for AI consumption
- Exposes conversational tools for natural language queries
- Returns real-time results with proper citations and context
Architecture: FastMCP server → Elasticsearch with semantic search → OpenAI embeddings → Live FCA APIs
🛠️ Available Tools
The MCP Server provides these AI-accessible tools:
search_fca_handbook- Search FCA Handbook rules and guidancesearch_policy_statements- Find FCA Policy Statements by contentsearch_consultation_papers- Search regulatory proposals and consultationssearch_authorised_firms- Query the FCA register of authorised firmssearch_enforcement_notices- Search enforcement actions and finesget_firm_details- Get comprehensive firm informationsearch_guidance_documents- Find FCA guidance and technical standardsget_regulatory_updates- Get latest regulatory announcements
🎯 Use Cases
For Compliance Teams:
- "Find all firms with mortgage advice permissions in my region"
- "What enforcement actions were taken for conduct breaches this year?"
- "Show me recent policy changes affecting investment firms"
For Legal & Risk:
- "Search FCA Handbook for rules about operational resilience"
- "Find consultation papers on crypto asset regulations"
- "What are the current requirements for ESG reporting?"
For Business Development:
- "Which competitors have similar FCA permissions to us?"
- "Find recently authorised fintech firms"
- "Show me regulatory barriers for new product launches"
🚀 Quick Start (5 Minutes)
Prerequisites: Docker, Node.js, Claude Desktop, OpenAI API key
-
Clone and configure:
git clone https://github.com/trailblazelabs/fca-mcp.git cd fca-mcp cp .env.example .env # Edit .env with your OpenAI API key -
One-command setup:
make dev_setup_from_scratch -
Connect to Claude Desktop:
{ "mcpServers": { "fca-mcp": { "command": "npx", "args": ["mcp-remote", "http://localhost:8080/mcp/", "--allow-http"] } } } -
Start asking questions!
- "Search for wealth management firms in London"
- "Find recent enforcement notices about market manipulation"
- "Show me policy changes affecting crypto firms"
🔧 Technical Deep Dive
Prerequisites for Local Development
- Python >= 3.12
- uv (Python package manager)
- Docker and Docker Compose
- Node.js (for mcp-remote)
Local Development Setup
-
Install uv (if not already installed):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Clone and set up the project:
git clone <repository> cd fca-mcp # Install dependencies with uv uv sync --extra dev -
Available Make commands:
make install # Install all dependencies make test # Run tests make test_integration # Run integration tests (slow on first run) make lint # Check code formatting make format # Format and fix code make safe # Run security checks # Pre-commit hooks make pre-commit-install # Install pre-commit hooks make pre-commit # Run pre-commit on all files # Docker operations make run # Start services with Docker Compose make stop # Stop Docker services make logs # View MCP server logs # Development helpers make mcp_test # Test MCP server connection make es_health # Check Elasticsearch health -
Run the MCP server locally:
make run_mcp_server # Or directly with uv: uv run fca-mcp serve
Project Structure
fca-mcp/
├── fca_mcp/ # Main Python package
│ ├── cli.py # CLI interface
│ ├── models.py # Data models
│ ├── mcp_server/ # MCP server implementation
│ │ ├── api.py # API endpoints and tool definitions
│ │ ├── handlers.py # Elasticsearch query handlers
│ │ ├── main.py # FastAPI application setup
│ │ └── utils.py # Utility functions
│ └── ... # Other modules
├── tests/ # Test suite
│ ├── mcp_server/ # MCP server tests
│ └── ... # Other tests
├── Dockerfile.mcp-server # MCP server container configuration
├── docker-compose.yaml # Service orchestration
└── README.md # This file
CLI Commands
The project includes a unified CLI for data management and server operations:
# Initialize Elasticsearch indices and inference endpoints
fca-mcp init-elasticsearch
# Run the MCP server
fca-mcp serve
# Load different types of FCA data
fca-mcp load-data handbook
fca-mcp load-data policy-documents
fca-mcp load-data consultation-papers
fca-mcp load-data firms-register
fca-mcp load-data enforcement-notices
# Delete all data
fca-mcp delete-elasticsearch
Data Structure
The system works with several types of FCA regulatory documents:
FCA Handbook (Index: fca_mcp_handbook):
- Rules and guidance sections with semantic search
- Cross-references between sections
- Section hierarchy and numbering
Policy Statements (Index: fca_mcp_policy_statements):
- Final policy decisions and statements
- Semantic search on policy content
- PS number references and dates
Consultation Papers (Index: fca_mcp_consultation_papers):
- Regulatory proposals and consultations
- Comment periods and responses
- CP number references
Authorised Firms (Index: fca_mcp_authorised_firms):
- Firms and individuals register
- Permissions and restrictions
- Contact and status information
Enforcement Notices (Index: fca_mcp_enforcement_notices):
- Disciplinary actions and fines
- Decision notices and final notices
- Firm and individual sanctions
Data Loading Process:
- Fetch from FCA APIs and web sources
- Transform into structured models with computed fields
- Embed using OpenAI for semantic search
- Index into Elasticsearch with proper mappings
Daily Data Ingestion
To keep the FCA data up-to-date, a daily ingestion mechanism is provided:
make ingest_daily
This runs the equivalent of:
fca-mcp load-data handbook --incremental
fca-mcp load-data policy-documents --recent
fca-mcp load-data enforcement-notices --recent
Usage Examples
Once connected to Claude, you can use natural language queries like:
FCA Handbook:
- "Search the FCA Handbook for rules about mortgage lending"
- "Find guidance on consumer credit regulations"
- "Show me the latest updates to conduct of business rules"
Policy and Consultation:
- "Find policy statements about ESG and sustainability"
- "Search consultation papers on crypto asset regulations"
- "Show me recent policy changes affecting investment firms"
Firm Information:
- "Search for authorised wealth management firms in London"
- "Find details about a specific firm's permissions"
- "Show me recent authorisation decisions"
Enforcement:
- "Search enforcement notices about market manipulation"
- "Find recent fines for conduct breaches"
- "Show me disciplinary actions against individuals"
Regulatory Research:
- "Find all FCA guidance on operational resilience"
- "Search for rules affecting fintech companies"
- "Show me consumer protection requirements for investments"
Logs and Debugging
View server logs:
docker-compose logs mcp-server
Enable debug mode in Claude config by adding --debug flag.
Check Elasticsearch status:
curl http://localhost:9200/_cat/health?v
# Or use the make command:
make es_health
Troubleshooting
Common Issues
MCP Connection Issues
- Ensure MCP server is running on port 8080
- The MCP server runs on
/{MCP_ROOT_PATH}/mcp, not/MCP_ROOT_PATH - Verify Claude Desktop configuration is correct
Data Loading Failures
- Check OpenAI API key in
.envfile - Ensure Elasticsearch is running and accessible
- Verify network connectivity to FCA APIs and websites
- Use
--ll DEBUGflag for detailed logging
Elasticsearch issues
- Verify inference endpoints are created:
fca-mcp init-elasticsearch - Use https://elasticvue.com/ to inspect the Elasticsearch instance
Contributing
Contributions are welcome! Please see our for details on how to get started.
License
MIT License - see LICENSE file for details