文件管理与AI文本生成工具

一个结合了文件系统管理和AI文本生成功能的工具,支持角色基于访问控制和安全认证。

  • by emirhannavdar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 emirhannavdar/mcp-server-with-geminiai-infrastructure-

使用说明

配备GeminiAI基础设施的MCP服务器-

该项目是一个简单的文件管理和人工智能(AI)文本生成工具,将基于Flask的RPC服务器与Streamlit用户界面相结合。它允许用户探索文件系统,阅读文件内容,进行关键字搜索并生成支持人工智能的文本。基于角色的访问控制(RBAC)提供了安全性。

内容

产品特点

  • 基于角色的访问控制(RBAC): admin, ai_user have的常用口语形式 viewer 不同层次的授权。
  • 安全身份验证: 使用bcrypt进行密码哈希和会话令牌。
  • 文件系统操作:
    • 不要列出目录的内容。
    • 不要读取文件内容。
    • 在档案中搜寻关键字。
  • 人工智能文本生成: 使用Google Gemini 1.5 Flash模型集成文本生成。
  • 简单的RPC通信: 使用JSON-RPC 2.0标准与瓶尾进行通信。
  • 友好的用户界面: 与Streamlit的交互式和易于使用的Web界面。
  • 访问日志 : 详细记录到服务器的所有请求。

安装

要求

  • Python 3.8+
  • pip(Python软件包管理器)

API密钥和环境变量

  1. Google Gemini API 密钥: 创建 Google Cloud 帐户并获取 Gemini API 的 API 密钥。
  2. 在您工程的根目录中 server 创建一个名为文件夹(如果没有)。
  3. server 在文件夹中 .env 创建一个名为的文件。
  4. .env 在文件中添加以下行:
    GOOGLE_API_KEY="SİZİN_GOOGLE_GEMINI_API_ANAHTARINIZ"
    
    (不要忘记指甲。

创建用户密码

出于安全原因,用户密码不会直接存储在代码中。 handlers.py 文件 中 USERS 您需要哈希您的密码才能将其添加到字典中。

  1. 一个单独的Python文件(generate_hashes.py 创建如:

    import bcrypt
    
    def hash_password(password):
        return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
    
    if __name__ == "__main__":
        admin_password = input("Admin şifresini girin: ")
        ai_user_password = input("AI Kullanıcı şifresini girin: ")
    
        admin_hash = hash_password(admin_password)
        ai_user_hash = hash_password(ai_user_password)
    
        print(f"\nAdmin Password Hash: {admin_hash}")
        print(f"AI User Password Hash: {ai_user_hash}")
        print("\nBu hash değerlerini handlers.py dosyasındaki USERS sözlüğüne yapıştırın.")
    
  2. 运行此脚本并复制输出 。

  3. handlers.py 打开文件并 USERS 字典 password_hash 将其值更新为您从脚本中获得的哈希值。例如:

    USERS = {
        "admin": {
            "password_hash": b'$2b$12$SizinAdminHashinizBurayaGelecek...',
            "roles": ["viewer", "ai_user", "admin"]
        },
        "ai_user": {
            "password_hash": b'$2b$12$SizinAIUserHashinizBurayaGelecek...',
            "roles": ["ai_user"]
        }
    }
    

上传依赖关系

从项目目录的根目录(在 deneme_server.py, deneme_client.py, handlers.py, ui_app.py have的常用口语形式 server/.env 找到的目录:

pip install -r requirements.txt

Eğer requirements.txt dosyanız yoksa, aşağıdaki bağımlılıkları yükleyin:

pip install Flask python-dotenv google-generativeai bcrypt requests streamlit

Daha sonra, bu bağımlılıkları bir requirements.txt dosyasına kaydedebilirsiniz:

pip freeze > requirements.txt

Kullanım
Projeyi çalıştırmak için önce sunucuyu, sonra Streamlit uygulamasını başlatmanız gerekir.

Sunucuyu Başlatma

Terminalde proje dizininizin köküne gidin ve aşağıdaki komutu çalıştırın:

python deneme_server.py

Sunucu http://127.0.0.1:5000/ adresinde çalışmaya başlayacaktır.

Streamlit Uygulamasını Başlatma

Yeni bir terminal penceresi açın, proje dizininizin köküne gidin ve aşağıdaki komutu çalıştırın:

streamlit run ui_app.py

Bu komut, Streamlit uygulamasını varsayılan web tarayıcınızda açacaktır.

Giriş Bilgileri

Uygulamaya giriş yapmak için aşağıdaki varsayılan kullanıcıları kullanabilirsiniz (şifrelerini hash'ledikten sonra):

Yönetici (Admin):

Kullanıcı Adı: admin

Şifre: adminşifre (veya sizin belirlediğiniz şifre)

Roller: viewer, ai_user, admin

AI Kullanıcısı:

Kullanıcı Adı: ai_user

Şifre: aişifre (veya sizin belirlediğiniz şifre)

Roller: ai_user

Görüntüleyici (Doğrudan Erişim):

Özel bir token (token_sadece_goruntuleyici) ile direkt erişim sağlar.

Proje Yapısı
.
├── deneme_client.py       # Örnek RPC istemcisi (test amaçlı kullanılabilir)
├── deneme_server.py       # Flask tabanlı RPC sunucusu
├── handlers.py            # RPC metodlarının iş mantığı ve yardımcı fonksiyonlar (kullanıcı, dosya, AI)
├── ui_app.py              # Streamlit kullanıcı arayüzü uygulaması
├── server/                # Sunucuya özel dosyalar
│   └── .env               # Ortam değişkenleri (API anahtarı vb.)
└── logs/                  # Erişim günlüklerinin tutulduğu dizin
│   └── access.log
└── README.md              # Bu dosya
└── requirements.txt       # Proje bağımlılıkları

Katkıda Bulunma
Katkılarınızdan memnuniyet duyarız! Lütfen bir issue açarak veya bir pull request göndererek projeye katkıda bulunabilirsiniz.

## Lisans

Bu proje MIT Lisansı altında lisanslanmıştır. Daha fazla bilgi için [LICENSE] dosyasına bakın.