Skip to content

MCP Connection Context Documentation Index โ€‹

Quick Answer to Your Question โ€‹

Q: How is the MCP server getting its connection context and how do I fix it to use project-specific connections instead of install path?

A: Currently, the MCP server always uses connection files from the install path (~/.hana-cli/default.json) or user home directory. The solution is to pass project-specific context through MCP tool parameters, which the executor then applies as the working directory and environment variables when spawning the CLI.


Documentation Guide โ€‹

This directory contains comprehensive documentation for implementing project-specific connection context in the MCP server. Choose your starting point based on your role:

๐ŸŽฏ Quick Start (5-10 minutes) โ€‹

visual-summary.md - Problem visualization and architecture flows

  • Before/after diagrams
  • Data flow examples
  • Quick reference diagrams

Best for: Getting a mental model quickly


๐Ÿ‘จโ€๐Ÿ’ป Implementation (2-3 hours) โ€‹

implementation-guide.md - Step-by-step checklist

  • Exact code changes with line numbers
  • Before/after code snippets
  • Testing checklist
  • Validation steps

Best for: Developers ready to implement the solution


๐Ÿ“š Understanding (30-60 minutes) โ€‹

connection-context-solution.md - Detailed walkthrough

  • Current flow explanation with code
  • Key code locations
  • Step-by-step implementation walkthrough
  • Real usage examples
  • Files to modify summary

Best for: Understanding the complete solution approach


๐Ÿ—๏ธ Architecture (1 hour) โ€‹

connection-context-analysis.md - Deep architectural analysis

  • Multiple implementation options
  • Pros/cons of each approach
  • Architecture diagrams
  • Security considerations
  • Future enhancements
  • Migration strategies

Best for: Architects and decision makers


๐Ÿ“‹ Historical Reference โ€‹

implementation-complete.md - Implementation status snapshot (Feb 2026)

  • Historical snapshot of what was implemented
  • Specific code changes made
  • Build status from Feb 2026
  • Usage examples from initial implementation

Note: This is a historical document. For current implementation, use the guides above.


MCP Server Core:

Other Features:


How to Use These Documents โ€‹

For Quick Understanding (15 minutes) โ€‹

  1. Read visual-summary.md - Get mental model
  2. Skim implementation-guide.md - See what needs to change

For Implementation (2-3 hours) โ€‹

  1. Read implementation-guide.md - Follow step-by-step
  2. Reference connection-context-solution.md - For detailed explanations
  3. Reference visual-summary.md - If confused about flow

For Design Review (1 hour) โ€‹

  1. Read connection-context-analysis.md - Understand all options
  2. Review visual-summary.md - Verify architecture
  3. Check implementation-guide.md - Assess effort

The Problem in One Diagram โ€‹

bash
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ AI Agent working on Project A               โ”‚
โ”‚ โ†’ Asks: "List tables in my database"        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ†“
        MCP Server gets request
                    โ†“
        Spawns CLI with:
        โ€ข cwd = /install/path (WRONG!)
        โ€ข env = parent environment (NO PROJECT CONTEXT)
                    โ†“
        CLI looks for connection file
        โ€ข Searches from /install/path upward
        โ€ข Finds ~/.hana-cli/default.json
        โ€ข Connects to DEFAULT DATABASE
                    โ†“
        โœ— WRONG! Should connect to Project A's database
        โœ— Agent gets data from wrong database
        โœ— All projects use same default connection

The Solution in One Diagram โ€‹

bash
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ AI Agent working on Project A                       โ”‚
โ”‚ โ†’ Asks: "List tables in my database"                โ”‚
โ”‚    + Provides: __projectContext.projectPath=/proj/a โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ†“
    MCP Server extracts context & spawns CLI with:
    โ€ข cwd = /proj/a (โœ“ PROJECT DIRECTORY!)
    โ€ข env.HANA_CLI_PROJECT_PATH = /proj/a
    โ€ข env.HANA_CLI_CONN_FILE = ".env"
                    โ†“
    CLI looks for connection file
    โ€ข Searches from /proj/a upward
    โ€ข Finds /proj/a/.env
    โ€ข Connects to PROJECT A'S DATABASE
                    โ†“
    โœ“ CORRECT! Connects to Project A's database
    โœ“ Agent gets data from correct database
    โœ“ Each project uses its own connection

Current System Flow โ€‹

bash
MCP Tool Call
    โ†“
Tool Handler (index.ts line 1325)
    โ†“
executeCommand(commandName, args) โ† No project context!
    โ†“
spawn('node', [cli.js], {
  cwd: /install/path โ† HARDCODED!
  env: process.env โ† Parent env, no project context
})
    โ†“
CLI Process
    โ†“
Connection Resolution (connections.js)
    โ€ข Starts from cwd = /install/path
    โ€ข Finds ~/.hana-cli/default.json
    โ€ข Uses default database โœ—

New System Flow โ€‹

bash
MCP Tool Call with __projectContext
    โ†“
Tool Handler (index.ts) โ† UPDATED
    โ”œโ”€ Extract: context = args.__projectContext
    โ”œโ”€ Clean args (remove context key)
    โ””โ”€ Pass: executeCommand(cmd, args, context) โ† NEW!
    โ†“
executeCommand(commandName, args, context) โ† UPDATED
    โ”œโ”€ Build env with: HANA_CLI_PROJECT_PATH, etc.
    โ”œโ”€ Set cwd = context.projectPath โ† DYNAMIC!
    โ””โ”€ spawn('node', [cli.js], {env, cwd})
    โ†“
CLI Process
    โ†“
Connection Resolution โ† UPDATED
    โ€ข Checks: process.env.HANA_CLI_PROJECT_PATH
    โ€ข Starts from cwd = /project/path
    โ€ข Finds /project/path/.env
    โ€ข Uses project database โœ“

Step-by-Step Implementation Priority โ€‹

Phase 1: Core Implementation (HIGH PRIORITY) โ€‹

Time: ~4 hours | Complexity: Medium

  1. โœ๏ธ Create connection-context.ts interface
  2. โœ๏ธ Update executor.ts - add context param, build env, set cwd
  3. โœ๏ธ Update index.ts - extract context, update schemas
  4. โœ๏ธ Update connections.js - check env vars
  5. โœ… Test basic functionality

Phase 2: Enhancement (MEDIUM PRIORITY) โ€‹

Time: ~2-3 hours | Complexity: Low-Medium

  1. ๐Ÿ“‹ Add connection management tools
  2. ๐Ÿ“‹ Add project auto-detection
  3. ๐Ÿ“‹ Add connection switching within conversation

Phase 3: Polish (LOW PRIORITY) โ€‹

Time: ~2 hours | Complexity: Low

  1. ๐Ÿ”’ Add security validations
  2. ๐Ÿ“– Update documentation
  3. ๐Ÿงช Add comprehensive tests

Key Technical Insights โ€‹

Why It Currently Doesn't Work โ€‹

  1. Hardcoded CWD: executor.ts line 270 has cwd: join(__dirname, '..', '..')
  2. No Context Passing: Connection context never flows from MCP to CLI
  3. Parent Environment Only: Spawned process inherits parent env, no project override
  4. Search Order: connections.js searches up from cwd, which is always install path

Why The Solution Works โ€‹

  1. Dynamic CWD: Pass context.projectPath as cwd to spawn
  2. Environment Signaling: Use env vars (HANA_CLI_PROJECT_PATH, etc.) to signal project context
  3. CLI Auto-Detection: CLI looks for these env vars first, changes directory if set
  4. Correct Search Order: Connection resolution now starts from project directory

Technical Debt & Future Work โ€‹

Potential Enhancements โ€‹

  • Connection Registry: Store project connections for reuse
  • Session Context: Set context once, use for multiple commands
  • Auto-Detection: Automatically detect project from CLI context
  • Secure Vault: Encrypted credential storage
  • Connection Profiles: Named connection sets for different environments

Security Improvements โ€‹

  • Path validation/normalization
  • Credential encryption
  • Audit logging for connections
  • Access control per project

Questions Answered โ€‹

Q: Where does the MCP server currently get credentials?

  • From ~/.hana-cli/default.json or default-env.json in install path

Q: Why doesn't it use project's .env?

  • Because the CLI is spawned with cwd = /install/path, not project path

Q: How do I send project context to MCP?

  • Add __projectContext object to any tool parameter

Q: Will existing integrations break?

  • No! __projectContext is optional, backward compatible

Q: What's the simplest way to implement this?

  • Follow implementation-guide.md step 1-5

Q: How do I test if it works?

  • See validation checklist in implementation-guide.md

Document Recommendation by Role โ€‹

๐Ÿ‘จโ€๐Ÿ’ผ Project Manager / Decision Maker โ€‹

โ†’ Start with: visual-summary.md โ†’ Decision: 15 minutes, understand scope and benefits

๐Ÿ‘จโ€๐Ÿ’ป Developer / Implementation โ€‹

โ†’ Start with: implementation-guide.md โ†’ Implement: 2-3 hours, line-by-line code changes

๐Ÿ—๏ธ Architect / Technical Lead โ€‹

โ†’ Start with: connection-context-analysis.md โ†’ Design: 1 hour, evaluate options and approach

๐Ÿ”Ž Code Reviewer โ€‹

โ†’ Check against: implementation-guide.md checklist โ†’ Review: Cross-verify all modified files

๐Ÿค” Understanding Decision โ€‹

โ†’ Read in order:

  1. visual-summary.md (5 min)
  2. connection-context-solution.md (15 min)
  3. implementation-guide.md (10 min)

โ†’ Total: 30 minutes for complete understanding


Success Criteria โ€‹

After implementation, you should be able to:

  • โœ… Pass project path to MCP tools via __projectContext.projectPath
  • โœ… Have CLI execute from that project directory
  • โœ… Connection files found in project directory first
  • โœ… Multiple projects use different databases in one conversation
  • โœ… Backward compatible with existing integrations
  • โœ… No breaking changes to any APIs

Support Matrix โ€‹

IssueSolutionDocument
"What's the problem?"Start herevisual-summary.md
"How do I fix it?"Code changesimplementation-guide.md
"Walk me through it"Detailed explanationconnection-context-solution.md
"What about X?"Design considerationsconnection-context-analysis.md
"Show me diagrams"Visual explanationsvisual-summary.md
"I need the code"Exact changesimplementation-guide.md

Next Steps โ€‹

  1. Choose your starting document based on your role above
  2. Understand the problem using diagrams and flows
  3. Plan implementation using the guide
  4. Execute changes following the step-by-step process
  5. Test thoroughly using provided test matrix
  6. Deploy with confidence - fully backward compatible!

DocumentPurposeTime
๐Ÿ“Š visual-summary.mdDiagrams & quick overview15 min
๐Ÿ› ๏ธ implementation-guide.mdCode changes & checklist2-3 hrs
๐Ÿ“ connection-context-solution.mdDetailed walkthrough30 min
๐ŸŽฏ connection-context-analysis.mdFull analysis & options1 hour

Questions? โ€‹

If you have questions about:

  • The problem: Check visual-summary.md diagrams
  • The implementation: Check implementation-guide.md code sections
  • The design choices: Check connection-context-analysis.md options
  • The flow: Check connection-context-solution.md walkthrough

All documents include examples, diagrams, and detailed explanations for different learning styles.