This commit is contained in:
2025-08-24 21:15:38 +08:00
parent 2325eb2fc8
commit dbcd40f604
13 changed files with 6534 additions and 363 deletions

105
MCP/rimworld_query.py Normal file
View File

@@ -0,0 +1,105 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
RimWorld知识库命令行工具
快速查询工具无需Qoder IDE
"""
import os
import sys
import argparse
import json
# 添加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)
def quick_query(question: str, format_output: bool = True) -> str:
"""快速查询函数"""
try:
# 动态导入避免启动时的依赖检查
from mcpserver_stdio import get_context
result = get_context(question)
if format_output:
# 格式化输出
lines = result.split('\n')
formatted_lines = []
current_section = ""
for line in lines:
if line.startswith('--- 结果'):
current_section = f"\n🔍 {line}"
formatted_lines.append(current_section)
elif line.startswith('文件路径:'):
formatted_lines.append(f"📄 {line}")
elif line.strip() and not line.startswith('---'):
formatted_lines.append(line)
return '\n'.join(formatted_lines)
else:
return result
except Exception as e:
return f"❌ 查询失败: {e}"
def main():
parser = argparse.ArgumentParser(
description='RimWorld知识库命令行查询工具',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
使用示例:
%(prog)s "ThingDef是什么"
%(prog)s "如何创建新的Pawn" --raw
%(prog)s "建筑物定义" --output result.txt
%(prog)s --list-examples
"""
)
parser.add_argument('question', nargs='?', help='要查询的问题')
parser.add_argument('--raw', action='store_true', help='输出原始结果,不格式化')
parser.add_argument('--output', '-o', help='将结果保存到文件')
parser.add_argument('--list-examples', action='store_true', help='显示查询示例')
args = parser.parse_args()
if args.list_examples:
print("📚 RimWorld知识库查询示例:")
examples = [
"ThingDef的定义和用法",
"如何创建新的Building",
"Pawn类的主要方法",
"CompPower的使用方法",
"XML中的defName规则",
"GenConstruct.CanPlaceBlueprintAt",
"Building_Door的开关逻辑"
]
for i, example in enumerate(examples, 1):
print(f" {i}. {example}")
return
if not args.question:
parser.print_help()
return
print(f"🔍 正在查询: {args.question}")
result = quick_query(args.question, not args.raw)
if args.output:
try:
with open(args.output, 'w', encoding='utf-8') as f:
f.write(result)
print(f"✅ 结果已保存到: {args.output}")
except Exception as e:
print(f"❌ 保存文件失败: {e}")
else:
print("\n" + "="*60)
print("📖 查询结果:")
print("="*60)
print(result)
print("="*60)
if __name__ == "__main__":
main()