Skip to content

feat: Add MCP registration and API key configuration to init#13

Closed
baeyc0510 wants to merge 3 commits intomainfrom
feat/mcp-registration
Closed

feat: Add MCP registration and API key configuration to init#13
baeyc0510 wants to merge 3 commits intomainfrom
feat/mcp-registration

Conversation

@baeyc0510
Copy link
Copy Markdown
Contributor

Summary

  • Add interactive MCP server registration during sym init
  • Add OpenAI API key configuration with .sym/.env support
  • Enhance convert, validate, and mcp commands to use centralized API key retrieval

Features

1. MCP Server Registration

  • Interactive prompt to register Symphony as MCP server during sym init
  • Support for multiple platforms:
    • Claude Desktop (global configuration)
    • Claude Code (project-specific)
    • Cursor (project-specific)
    • VS Code/Cline (project-specific)
  • Arrow key navigation using promptui
  • Automatic backup creation before modifying existing configs
  • Platform-specific JSON formats
  • Options:
    • --skip-mcp: Skip MCP registration prompt
    • --register-mcp: Register MCP server only (skip roles/policy init)

2. OpenAI API Key Configuration

  • Smart API key detection with priority:
    1. System environment variable
    2. .sym/.env file
  • Interactive masked input for API key entry
  • Basic validation (prefix, length check)
  • Automatic .gitignore update
  • Secure file permissions (0600 for .env)
  • Only prompts if API key not found
  • Options:
    • --skip-api-key: Skip API key configuration prompt
    • --setup-api-key: Setup API key only (skip roles/policy init)

Changes

New Files

  • internal/cmd/mcp_register.go - MCP server registration logic
  • internal/cmd/api_key.go - API key configuration management

Modified Files

  • internal/cmd/init.go - Integrate MCP registration and API key prompts
  • internal/cmd/convert.go - Use centralized getAPIKey() function
  • internal/cmd/validate.go - Use centralized getAPIKey() function
  • internal/cmd/mcp.go - Use centralized getAPIKey() function with helpful error messages
  • go.mod, go.sum - Add promptui dependency

Usage Examples

Standard init (with prompts)

sym init

Skip both prompts

sym init --skip-mcp --skip-api-key

Register MCP server later

sym init --register-mcp

Setup API key later

sym init --setup-api-key

baeyc0510 and others added 3 commits November 12, 2025 15:47
Add interactive MCP server registration during project initialization
with support for multiple platforms and configuration types.

Features:
- Interactive prompt with arrow key navigation (promptui)
- Support for 4 platforms:
  * Claude Desktop (global config)
  * Claude Code (project .mcp.json)
  * Cursor (project .cursor/mcp.json)
  * VS Code/Cline (project .vscode/mcp.json)
- Platform-specific JSON formats (VS Code uses different structure)
- New flags: --register-mcp (registration only), --skip-mcp (skip prompt)
- Automatic backup creation before modification
- Project-specific configs enable team collaboration via version control

Changes:
- Add promptui dependency for interactive selection
- Create internal/cmd/mcp_register.go with registration logic
- Update internal/cmd/init.go with MCP registration flow
- Support both global and project-specific MCP configurations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add interactive API key configuration during project initialization
with support for both environment variables and .sym/.env file.

Features:
- Interactive prompt only when API key not found
- Priority: system env var > .sym/.env file
- Masked input for API key entry
- Basic validation (sk- prefix, length check)
- Automatic .gitignore update for .sym/.env
- File permissions set to 0600 for security

New flags:
- --setup-api-key: Setup API key only (skip roles/policy init)
- --skip-api-key: Skip API key configuration prompt

Changes:
- Create internal/cmd/api_key.go with key management logic
- Add promptAPIKeyIfNeeded() to init.go workflow
- Update convert, validate, mcp commands to use getAPIKey()
- Support loading API key from .sym/.env file

Benefits:
- No need to set environment variables manually
- Project-specific API keys (team collaboration)
- Secure file storage with restrictive permissions
- Backward compatible with existing env var setup
- Can be configured later with 'sym init --setup-api-key'
Remove '\n' from fmt.Println calls to fix go vet errors.
fmt.Println automatically adds a newline, so explicit '\n' is redundant.
@baeyc0510 baeyc0510 closed this Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant