使用说明
配备GeminiAI基础设施的MCP服务器-
该项目是一个简单的文件管理和人工智能(AI)文本生成工具,将基于Flask的RPC服务器与Streamlit用户界面相结合。它允许用户探索文件系统,阅读文件内容,进行关键字搜索并生成支持人工智能的文本。基于角色的访问控制(RBAC)提供了安全性。
内容
产品特点
- 基于角色的访问控制(RBAC):
admin,ai_userhave的常用口语形式viewer不同层次的授权。 - 安全身份验证: 使用bcrypt进行密码哈希和会话令牌。
- 文件系统操作:
- 不要列出目录的内容。
- 不要读取文件内容。
- 在档案中搜寻关键字。
- 人工智能文本生成: 使用Google Gemini 1.5 Flash模型集成文本生成。
- 简单的RPC通信: 使用JSON-RPC 2.0标准与瓶尾进行通信。
- 友好的用户界面: 与Streamlit的交互式和易于使用的Web界面。
- 访问日志 : 详细记录到服务器的所有请求。
安装
要求
- Python 3.8+
- pip(Python软件包管理器)
API密钥和环境变量
- Google Gemini API 密钥: 创建 Google Cloud 帐户并获取 Gemini API 的 API 密钥。
- 在您工程的根目录中
server创建一个名为文件夹(如果没有)。 server在文件夹中.env创建一个名为的文件。.env在文件中添加以下行:(不要忘记指甲。GOOGLE_API_KEY="SİZİN_GOOGLE_GEMINI_API_ANAHTARINIZ"
创建用户密码
出于安全原因,用户密码不会直接存储在代码中。 handlers.py 文件 中 USERS 您需要哈希您的密码才能将其添加到字典中。
-
一个单独的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.") -
运行此脚本并复制输出 。
-
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.