模型上下文协议服务器

集成OAuth2.0认证、OPA授权和Streamlit前端界面的模型上下文协议服务器,用于基于用户角色和数据所有权的安全数据访问。

  • by jaideepbir
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jaideepbir/mcp-server-oauth2.0

使用说明

配备OAuth2.0、OPA和Streamlit前端的MCP服务器

该项目提供了一个与OAuth2.0集成的模型上下文协议(MCP)服务器,用于身份验证,开放策略代理(OPA)用于授权,以及一个用于用户交互的Streamlit前端。该系统旨在演示基于用户角色和数据所有权对数据和工具的安全访问。

项目结构

  • compose/:Docker编写用于编排所有服务的文件。
  • data/:包含示例数据(sample.csv),受保护的数据(protected.csv),以及用户上传的目录(uploads/).
  • docs/:文档文件,包括架构图和数据流。
  • services/:单个Docker化服务:
    • auth-server/:OAuth2授权服务器负责发布JWT。
    • mcp-server/:实现MCP协议,并公开Excel/CSV阅读器和OPA策略评估器等工具。
    • opa/:用于细粒度授权策略的开放策略代理服务。
    • streamlit/:提供用户界面的Streamlit web应用程序。

入门指南

要在本地设置和运行项目,请执行以下步骤:

先决条件

  • Docker和Docker Compose已安装在您的系统上。

设置

  1. 导航到项目的撰写目录:

    cd projects/mcp-server-oauth2.0/compose/
    
  2. 构建并启动Docker容器:

    docker compose up --build -d
    

    此命令将构建必要的Docker镜像,并在分离模式下启动所有服务。

  3. 访问Streamlit前端: 所有服务启动并运行后,您可以在web浏览器中访问Streamlit应用程序,通常在 http://localhost:8501.

用法

认证

Streamlit前端将指导您完成OAuth2登录过程。

  • 演示用户: 使用 demo-key 作为持票人代币。此用户可以访问公共文件和他们自己上传的文件。
  • 管理员用户: 使用 admin-key 作为持票人代币。此用户可以完全访问所有文件和工具。

工具页面

在“工具”页面上,您可以:

  • 选择并查看 sample.csv (公众可访问)。
  • 尝试查看 protected.csv (仅限管理员访问)。
  • 上传您自己的CSV文件。上传的文件归上传文件的用户所有,只能由该用户读取。

聊天页面

“聊天”页面提供了LLM与MCP工具调用功能的集成。

故障排除

  • 如果服务无法启动,请检查 docker compose logs 对于特定的错误消息。
  • 如果您遇到“服务器没有响应读取”或文件上传/读取问题,请确保所有服务都在运行,并检查 mcp-server OPA评估详细信息的日志。
    docker compose -f projects/mcp-server-oauth2.0/compose/docker-compose.yml logs mcp-server
    

发展

请参阅 prd.md 和 docs/ 有关架构、功能需求和开发指南的更详细信息的目录。

全部

  • []基于TF的计划和部署模板
  • []GHA构建和部署工作流程

架构图