{
  "markdown": "# OpenHarness\n\nAI 코딩 에이전트의 최근 세션 파일을 찾아 서로 참조하게 해주는 로컬 MCP 서버.\n\n전용 하네스 없이 하네스처럼 동작한다. 기존 도구 환경을 그대로 유지하면서, 에이전트 간 세션을 연결하는 디스커버리 레이어.\n\n## Supported Agents (MVP)\n\n| Agent | Session Path | Format |\n|-------|-------------|--------|\n| Claude Code | `~/.claude/projects/` | JSONL |\n| Codex CLI | `~/.codex/sessions/` | JSONL |\n| Gemini CLI | `~/.gemini/tmp/<hash>/chats/` | JSON |\n\n## Prerequisites\n\n- Each agent must be able to **read local files directly**.\n- OpenHarness only provides paths and metadata — it does not transform, relay, or store session content.\n\n## Install\n\n```bash\nnpm install -g @freebird-ai/openharness\nopenharness init\n```\n\nThis registers OpenHarness as an MCP server in each agent's config.\n\n## MCP Tools\n\n### `get_agent_sessions`\n\nReturns recent session paths for all agents, filtered by project.\n\n**Input:**\n```json\n{ \"project\": \"/Users/me/my-app\" }\n```\n\n**Output:**\n```json\n[\n  {\n    \"agent\": \"claude-code\",\n    \"path\": \"/Users/me/.claude/projects/-Users-me-my-app/session.jsonl\",\n    \"format\": \"jsonl\",\n    \"updatedAt\": \"2026-03-17T14:32:00Z\",\n    \"matchedProject\": \"/Users/me/my-app\",\n    \"matchedBy\": \"directory-name\"\n  }\n]\n```\n\n### `get_agent_session`\n\nReturns the recent session path for a specific agent.\n\n**Input:**\n```json\n{ \"agent\": \"claude-code\", \"project\": \"/Users/me/my-app\" }\n```\n\n**Output:**\n```json\n{\n  \"agent\": \"claude-code\",\n  \"path\": \"/Users/me/.claude/projects/-Users-me-my-app/session.jsonl\",\n  \"format\": \"jsonl\",\n  \"updatedAt\": \"2026-03-17T14:32:00Z\",\n  \"matchedProject\": \"/Users/me/my-app\",\n  \"matchedBy\": \"directory-name\"\n}\n```\n\nReturns `null` if no session is found.\n\n## Project Matching\n\n| Agent | Strategy |\n|-------|----------|\n| Claude Code | Project path escaped with `-` as directory name |\n| Codex CLI | Workspace field inside session JSONL |\n| Gemini CLI | Project path hash matching `tmp/<hash>/` |\n\n## How It Works\n\n```\nUser → Codex: \"Review what Claude Code worked on recently\"\n\nCodex → OpenHarness MCP: get_agent_session({ agent: \"claude-code\", project: \"...\" })\nCodex ← receives session path + metadata\nCodex → reads the JSONL file directly and performs review\n```\n\nNo rules needed in agent instruction files. MCP tool descriptions are enough for agents to use naturally.\n\n## Manual MCP Configuration\n\nIf you prefer to configure manually instead of using `init`:\n\n```json\n{\n  \"mcpServers\": {\n    \"openharness\": {\n      \"command\": \"openharness\",\n      \"args\": []\n    }\n  }\n}\n```\n\nAdd this to your agent's MCP config file:\n\n| Agent | Config File |\n|-------|------------|\n| Claude Code | `~/.claude/mcp.json` or project `.mcp.json` |\n| Codex CLI | project `.codex/` |\n| Gemini CLI | `~/.gemini/settings.json` |\n\n## License\n\nMIT\n",
  "bytes": 2685,
  "sha": "6e99dd418a24592ae729e4b4c0b93762dfd01d7d0e88bb135df61bb5526b6842",
  "repo_slug": "philo-kim/openharness",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_philo_kim_openharness_a817b6cd/readme"
}