MCP Integration with Amazon Bedrock Knowledge Bases
This repository outlines a basic implementation of the Model Context Protocol integration with Amazon Bedrock Knowledge Bases
Overview
There are two parts to this implementation:
- The
user_interfaces/chat_bedrock_st.py
file, which handles the Streamlit/User Interface for the chatbot - The
client_server.py
file, which handles the MCP client and server implementation
The exact MCP server code leveraged can be found in the src/bedrock-kb-retrieval-mcp-server folder.
Architecture
Setup
Prerequisites
- The uv package manager
- AWS Account with Bedrock access and proper IAM permissions - Getting Started with Amazon Bedrock
- A Bedrock Knowledge Base
- For a quick reference Knowledge Base setup, check out the e2e RAG solution via CDK repo. This will set you up with everything you need - IAM roles, vector storage (either OpenSearch Serverless or Aurora PostgreSQL), and a fully configured Knowledge Base with sample data. The Knowledge Base is the only component you'll really need for this implementation.
Note: Reranking for Amazon Bedrock is not supported in us-east-1. For more information about supported regions and models for reranking, see Supported Regions and models for reranking in Amazon Bedrock.
Installation
- Clone the repository.
git clone https://github.com/awslabs/mcp.git
- Navigate to the sample directory and copy the .env.example file to .env and add your AWS credentials.
cd mcp/samples/mcp-integration-with-kb
cp .env.example .env
- Open two different terminals and install the dependencies in each.
uv sync
then activate the virtual environment
source .venv/bin/activate
uvicorn clients.client_server:app --reload
- In the other terminal, run the Streamlit app
streamlit run user_interfaces/chat_bedrock_st.py
- The chatbot should now be running on http://localhost:8501/
Usage
Grab your Bedrock Knowledge Base ID from the Bedrock Knowledge Base console and add it to the UI first on the left hand side menu.
Ask away!
Troubleshooting
Logs are available in the terminal where you ran the FastAPI server, outlining various steps and actions taken by the server.
If you see an error about boto3
or streamlit
not being found, it is likely because you did not activate the virtual environment:
uv sync
source .venv/bin/activate