Skip to content

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:

  1. The user_interfaces/chat_bedrock_st.py file, which handles the Streamlit/User Interface for the chatbot
  2. 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

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

  1. Clone the repository.
git clone https://github.com/awslabs/mcp.git
  1. 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
  1. Open two different terminals and install the dependencies in each.
uv sync

then activate the virtual environment

source .venv/bin/activate
4. In one of the terminals, run the FastAPI server

uvicorn clients.client_server:app --reload
  1. In the other terminal, run the Streamlit app
streamlit run user_interfaces/chat_bedrock_st.py
  1. 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