Files
WulaFallenEmpireRW/MCP/direct_mcp_client.py
2025-08-24 21:15:38 +08:00

103 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
直接调用MCP服务器的Python接口
绕过Qoder IDE直接使用RimWorld知识库
"""
import os
import sys
# 添加MCP路径
MCP_DIR = os.path.dirname(os.path.abspath(__file__))
SDK_PATH = os.path.join(MCP_DIR, 'python-sdk', 'src')
if SDK_PATH not in sys.path:
sys.path.insert(0, SDK_PATH)
# 导入MCP服务器
from mcpserver_stdio import get_context
class DirectMCPClient:
"""直接调用MCP服务器的客户端"""
def __init__(self):
print("🚀 直接MCP客户端已启动")
print("📚 RimWorld知识库已加载")
def query(self, question: str) -> str:
"""查询RimWorld知识库"""
try:
print(f"🔍 正在查询: {question}")
result = get_context(question)
return result
except Exception as e:
return f"查询出错: {e}"
def interactive_mode(self):
"""交互模式"""
print("\n" + "="*60)
print("🎯 RimWorld知识库 - 交互模式")
print("输入问题查询知识库,输入 'quit''exit' 退出")
print("="*60)
while True:
try:
question = input("\n❓ 请输入您的问题: ").strip()
if question.lower() in ['quit', 'exit', '退出', 'q']:
print("👋 再见!")
break
if not question:
print("⚠️ 请输入有效的问题")
continue
print("\n🔄 正在搜索...")
result = self.query(question)
print("\n📖 查询结果:")
print("-" * 50)
print(result)
print("-" * 50)
except KeyboardInterrupt:
print("\n\n👋 用户中断,退出程序")
break
except Exception as e:
print(f"\n❌ 出现错误: {e}")
def main():
"""主函数"""
import argparse
parser = argparse.ArgumentParser(description='直接调用RimWorld MCP知识库')
parser.add_argument('--query', '-q', type=str, help='直接查询问题')
parser.add_argument('--interactive', '-i', action='store_true', help='进入交互模式')
args = parser.parse_args()
client = DirectMCPClient()
if args.query:
# 直接查询模式
result = client.query(args.query)
print("\n📖 查询结果:")
print("="*60)
print(result)
print("="*60)
elif args.interactive:
# 交互模式
client.interactive_mode()
else:
# 默认显示帮助
print("\n🔧 使用方法:")
print("1. 直接查询: python direct_mcp_client.py -q \"ThingDef是什么\"")
print("2. 交互模式: python direct_mcp_client.py -i")
print("3. 查看帮助: python direct_mcp_client.py -h")
# 演示查询
print("\n🎬 演示查询:")
demo_result = client.query("ThingDef")
print(demo_result[:500] + "..." if len(demo_result) > 500 else demo_result)
if __name__ == "__main__":
main()