Files

108 lines
2.7 KiB
Python
Raw Permalink Normal View History

2025-12-15 22:05:56 +08:00
#!/usr/bin/env python
"""
滴答清单 MCP 服务入口点
允许AI模型通过MCP协议访问和操作滴答清单待办事项
"""
import os
import sys
import argparse
import json
from pathlib import Path
import dotenv
from mcp_server import create_server
from tools.official_api import init_api
# 加载环境变量(支持 .env
dotenv.load_dotenv()
def parse_args():
"""解析命令行参数"""
parser = argparse.ArgumentParser(
description="滴答清单 MCP 服务"
)
parser.add_argument(
"--install",
action="store_true",
help="安装到Claude Desktop或其他MCP客户端"
)
parser.add_argument(
"--token",
help="滴答清单访问令牌"
)
parser.add_argument(
"--email",
help="滴答清单账户邮箱"
)
parser.add_argument(
"--phone",
help="滴答清单账户手机号"
)
parser.add_argument(
"--password",
help="滴答清单账户密码"
)
# 统一 .env-only不再支持 config 文件路径
parser.add_argument(
"--port",
type=int,
default=3000,
help="服务器端口号用于SSE传输方式"
)
parser.add_argument(
"--host",
default="127.0.0.1",
help="服务器主机用于SSE传输方式"
)
parser.add_argument(
"--sse",
action="store_true",
help="使用SSE传输方式而不是stdio"
)
return parser.parse_args()
def ensure_oauth_ready() -> bool:
"""
检查OAuth是否就绪仅用于独立运行模式
在集成模式下token由外部传入所以这个检查是可选的
"""
try:
if os.environ.get("DIDA_ACCESS_TOKEN"):
init_api()
# ✅ 检测到环境变量中的 OAuth token
return True
else:
# 未检测到 DIDA_ACCESS_TOKEN 环境变量
# 在集成模式下这是正常的token将由调用方传递
return False
except Exception as e:
# OAuth初始化警告在集成模式下正常
return False
def main():
"""主函数"""
args = parse_args()
# OAuth检查不再是强制性的
ensure_oauth_ready()
# 创建MCP服务器
server = create_server({})
# 启动服务器
if args.install:
# 安装到Claude Desktop
# 正在安装到MCP客户端...
os.system("fastmcp install")
else:
# 直接运行
# 启动滴答清单MCP服务器
if args.sse:
# 使用SSE传输方式
server.run(transport="sse", host=args.host, port=args.port)
else:
# 使用默认stdio传输方式
server.run()
if __name__ == "__main__":
main()