Files
fit2cloud-chenyw fc378c370f feat: add project-level Codex MCP configuration (#1398)
Add project MCP configuration, launchers, local configuration templates, and offline regression tests for TAPD, Playwright, and DBHub.
2026-10-12 11:17:29 +08:00

35 lines
1.6 KiB
Python

"""Launch Node or Python TAPD MCP using only project-local credentials."""
import os
import sys
from pathlib import Path
sys.dont_write_bytecode = True
base = Path(__file__).resolve().parent
sys.path.insert(0, str(base.parent))
from mcp_runtime import execute, load_config, resolve_command
try:
keys = {'TAPD_WORKSPACE_ID', 'TAPD_CURRENT_USER', 'TAPD_API_TOKEN',
'TAPD_MCP_ENTRY', 'TAPD_API_BASE_URL', 'TAPD_BASE_URL'}
local = load_config(base, keys, {'TAPD_WORKSPACE_ID', 'TAPD_CURRENT_USER',
'TAPD_API_TOKEN', 'TAPD_MCP_ENTRY'})
runtime, command = resolve_command(local, 'TAPD_MCP_ENTRY')
env = os.environ.copy()
for key in ('TAPD_API_USER', 'TAPD_API_PASSWORD', 'TAPD_ACCESS_TOKEN',
'TAPD_API_BASE_URL', 'TAPD_BASE_URL', 'CURRENT_USER_NICK'):
env.pop(key, None)
env.update({key: local[key] for key in ('TAPD_WORKSPACE_ID', 'TAPD_CURRENT_USER', 'TAPD_API_TOKEN')})
if runtime == 'python':
env['TAPD_ACCESS_TOKEN'] = local['TAPD_API_TOKEN']
env['CURRENT_USER_NICK'] = local['TAPD_CURRENT_USER']
env['TAPD_API_BASE_URL'] = local.get('TAPD_API_BASE_URL') or 'https://api.tapd.cn'
env['TAPD_BASE_URL'] = local.get('TAPD_BASE_URL') or 'https://www.tapd.cn'
command.extend(['--mode', 'stdio'])
else:
for key in ('TAPD_API_BASE_URL', 'TAPD_BASE_URL'):
if local.get(key):
env[key] = local[key]
execute(command, env)
except (OSError, ValueError, KeyError, TypeError):
sys.exit('TAPD MCP 启动失败;请检查 .codex/tapd_mcp/.env.local 的字段、入口及解释器')