MCP服务器Dario
个人MCP服务器,公开了一个最小的FastAPI应用程序,专注于Facebook Graph API连接器和Google Drive实用程序。\ 它的灵感来自共享的内部MCP服务器,但只附带了Facebook和Drive集成,以保持个人使用的精简。
特性
- 通过以下方式获取个人资料或页面信息
POST /facebook/profile. - 通过高级过滤器检索订阅源帖子
POST /facebook/feed. - 发布新帖子(即时或预定)
POST /facebook/posts. - 通过以下方式列出、下载和上传Google Drive文件
/google-drive/*端点。 - 通过以下方式提供组合静态+本地操作员指令
/ui/instructions(HTML)和/api/instructions(JSON)。 - 在以下位置浏览本地参考文档
DOCS_ROOT通过/local-docs/*端点。 - Explore 透明管理 sections for 博纳特市 Sotto with
/bonatesotto/transparency/*. - 使用预构建的向量索引从语义上搜索Drive文档
/google-drive/vector-search. - 简单的健康检查端点可在
GET /health.
入门指南
该项目的目标是Python 3.11+。
- 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate- 安装依赖项:
pip install -r requirements.txt- 复制示例环境配置并填写您的值:
cp config.example.env .env- 启动FastAPI服务器:
uvicorn app.main:app --reload- 访问API交互式文档http://127.0.0.1:8000/docs
配置
所有设置都可以通过提供 .env 或环境:
| 变量 | 描述 |
|---|---|
FACEBOOK_ACCESS_TOKEN | 必修的。 长期用户或页面访问令牌。 |
FACEBOOK_GRAPH_API_VERSION | Graph API版本(默认 v19.0). |
FACEBOOK_BASE_URL | 如果需要,请覆盖Graph API基础URL。 |
FACEBOOK_TIMEOUT | 出站Facebook请求的超时时间(秒)(默认值 10). |
FACEBOOK_DEFAULT_FIELDS | 不提供逗号分隔的默认字段。 |
FACEBOOK_DEFAULT_FEED_LIMIT | 默认馈送页面大小(默认 25,最大值 100). |
FACEBOOK_ENABLE_DEBUG | 设置为 true 启用详细日志记录以进行故障排除。 |
DOCS_ROOT | 通过以下方式公开的本地文档目录的绝对路径 /local-docs/*. |
BONATE_BASE_URL | Bonate Sotto机构网站的基本URL(默认 https://www.comune.bonatesotto.bg.it). |
BONATE_TIMEOUT | Bonate Sotto HTTP请求的超时时间(秒)(默认值 15). |
GOOGLE_DRIVE_SERVICE_ACCOUNT_FILE | 具有Drive访问权限的Google服务帐户的JSON密钥路径。 |
GOOGLE_DRIVE_DELEGATED_USER | 使用域范围委派时要模拟的可选用户。 |
GOOGLE_DRIVE_SCOPES | 驱动器作用域的JSON数组(默认值 ["https://www.googleapis.com/auth/drive"]). |
GOOGLE_DRIVE_DOWNLOAD_CHUNK_SIZE | 驱动器下载的块大小(以字节为单位)(默认值 4194304). |
DRIVE_VECTOR_ENABLED | 设置为 true 以启用驱动器矢量搜索端点。 |
DRIVE_VECTOR_EMBEDDINGS_PATH | 通往 .npy 包含Drive文档嵌入的文件。 |
DRIVE_VECTOR_METADATA_PATH | 包含Drive文档元数据的JSON文件的路径。 |
DRIVE_VECTOR_DOCUMENTS_PATH | 包含Drive文档文本提取的JSONL文件的路径。 |
DRIVE_VECTOR_MODEL_NAME | 用于查询编码的可选句子转换模型(例如。 sentence-transformers/all-MiniLM-L6-v2). |
DRIVE_VECTOR_DEFAULT_K | 矢量搜索返回的默认点击数(默认 5). |
请求示例
获取基本配置文件信息:
curl -X POST http://127.0.0.1:8000/facebook/profile \
-H "Content-Type: application/json" \
-d '{"fields": ["id", "name", "email"]}'阅读最新的订阅源帖子:
curl -X POST http://127.0.0.1:8000/facebook/feed \
-H "Content-Type: application/json" \
-d '{"limit": 10}'创建新帖子:
curl -X POST http://127.0.0.1:8000/facebook/posts \
-H "Content-Type: application/json" \
-d '{
"message": "Hello from my MCP server!",
"published": true
}'列出驱动器文件:
curl -X POST http://127.0.0.1:8000/google-drive/files \
-H "Content-Type: application/json" \
-d '{"page_size": 10}'下载驱动器文件(响应中的Base64负载):
curl -X POST http://127.0.0.1:8000/google-drive/files/download \
-H "Content-Type: application/json" \
-d '{"file_id": "your-file-id"}'从本地数据上传驱动器文件:
curl -X POST http://127.0.0.1:8000/google-drive/files/upload \
-H "Content-Type: application/json" \
-d '{
"name": "hello.txt",
"mime_type": "text/plain",
"content_base64": "SGVsbG8gR29vZ2xlIERyaXZlIQ=="
}'列出本地文档文件夹:
curl "http://127.0.0.1:8000/local-docs/tree"从文档中读取markdown文件:
curl "http://127.0.0.1:8000/local-docs/file?path=guides/readme.md"列出透明度部分:
curl "http://127.0.0.1:8000/bonatesotto/transparency/sections?q=provvedimenti"在透明度部分搜索:
curl -X POST http://127.0.0.1:8000/bonatesotto/transparency/search \
-H "Content-Type: application/json" \
-d '{
"section_url": "https://www.comune.bonatesotto.bg.it/EG0/EGSCHTST52.HBL?en=eg745&MESSA=PUBBLICA&SRL=86",
"query": "delibera",
"limit": 3
}'驱动矢量搜索(testo):
curl -X POST http://127.0.0.1:8000/google-drive/vector-search \
-H "Content-Type: application/json" \
-d '{
"query": "piano di gestione del Parco Brolo",
"limit": 5
}'驱动向量搜索(嵌入预计算):
curl -X POST http://127.0.0.1:8000/google-drive/vector-search \
-H "Content-Type: application/json" \
-d '{
"query_embedding": [0.12, -0.04, ...],
"limit": 3
}'开发说明
- 这
.mcp_cache目录会自动创建,以反映原始MCP服务器的结构。 - 要在生产环境中运行应用程序,请考虑调用
uvicorn app.main:app --host 0.0.0.0 --port 8000. - Google Workspace文档类型(文档、表格、幻灯片)会自动导出(纯文本/CSV),响应包括
originalMimeType/exportedMimeType元数据。 - 该项目捆绑了脸书、谷歌云端硬盘、本地文档、Bonate Sotto透明度助手和可选的云端硬盘矢量搜索;可以按照相同的模式添加其他集成。
