Skip to content

Feature: Pass session identifier to MCP servers #6279

@hosseinalipour

Description

@hosseinalipour

Summary

OpenCode currently does not pass any session identifier to MCP servers during tool calls, preventing MCP servers from maintaining session context or tracking interactions across multiple calls within a single OpenCode session.

Current Behavior

  • Session IDs are generated using ses_ prefix (see /packages/opencode/src/id/id.ts)
  • Sessions are stored at storage/session/{projectID}/{sessionID}.json
  • MCP tool calls in /packages/opencode/src/mcp/index.ts only pass name and arguments to client.callTool()
  • No session context is available to MCP servers

Desired Behavior

MCP servers should receive the OpenCode session identifier, enabling:

  • Session tracking and analytics
  • Contextual awareness across multiple tool calls
  • Better debugging and monitoring
  • Support for session-specific state management in MCP servers

Proposed Implementation

Options to consider:

  1. Pass session ID as a custom header for remote MCP servers
  2. Include session ID in the request metadata for stdio MCP servers
  3. Add a configuration option to enable/disable this feature

Related Files

  • Session ID generation: packages/opencode/src/id/id.ts
  • MCP client & tool calls: packages/opencode/src/mcp/index.ts
  • Tool context: packages/opencode/src/tool/tool.ts

Question

Would you accept a contribution for this feature? I'm interested in implementing session identifier support for MCP tool calls.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions