配备GeminiAI基础设施的MCP服务器-
该项目是一个简单的文件管理和人工智能(AI)文本生成工具,将基于Flask的RPC服务器与Streamlit用户界面相结合。它允许用户探索文件系统,阅读文件内容,进行关键字搜索并生成支持人工智能的文本。基于角色的访问控制(RBAC)提供了安全性。
内容
- 要求 - API密钥和环境变量 - 创建用户密码 - 上传依赖关系
- 启动服务器 - 启动 Streamlit 应用程序 - 登录信息
产品特点
- 基于角色的访问控制(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.
