{"id":50055958,"url":"https://github.com/code-yeongyu/codex-lsp","last_synced_at":"2026-05-21T13:13:52.768Z","repository":{"id":358008824,"uuid":"1239427226","full_name":"code-yeongyu/codex-lsp","owner":"code-yeongyu","description":"Codex plugin that exposes Language Server Protocol diagnostics and MCP tools","archived":false,"fork":false,"pushed_at":"2026-05-15T07:12:01.000Z","size":113,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T09:25:59.236Z","etag":null,"topics":["codex","codex-plugin","diagnostics","language-server-protocol","lsp","mcp","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code-yeongyu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-15T04:46:39.000Z","updated_at":"2026-05-15T07:24:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/code-yeongyu/codex-lsp","commit_stats":null,"previous_names":["code-yeongyu/codex-lsp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/code-yeongyu/codex-lsp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fcodex-lsp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fcodex-lsp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fcodex-lsp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fcodex-lsp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code-yeongyu","download_url":"https://codeload.github.com/code-yeongyu/codex-lsp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fcodex-lsp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33301801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"ssl_error","status_checked_at":"2026-05-21T12:22:11.673Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codex","codex-plugin","diagnostics","language-server-protocol","lsp","mcp","typescript"],"created_at":"2026-05-21T13:13:50.853Z","updated_at":"2026-05-21T13:13:52.763Z","avatar_url":"https://github.com/code-yeongyu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# codex-lsp\n\n[![ci](https://github.com/code-yeongyu/codex-lsp/actions/workflows/ci.yml/badge.svg)](https://github.com/code-yeongyu/codex-lsp/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nCodex plugin that ports the standalone LSP runtime from [`pi-lsp-client`](https://github.com/code-yeongyu/pi-lsp-client). It gives Codex post-edit diagnostics plus explicit MCP tools for language-aware code work.\n\n## Architecture\n\nThe LSP runtime moved to [`lsp-tools-mcp`](https://github.com/code-yeongyu/lsp-tools-mcp) and is consumed here as a git submodule at `packages/lsp-tools-mcp/`.\n\n- `codex-lsp` keeps Codex-specific integration (`hook post-tool-use`, plugin metadata, package wiring).\n- `lsp-tools-mcp` owns MCP runtime, LSP manager, and tool implementations.\n- `src/cli.ts` routes `mcp` to upstream runtime and keeps `hook post-tool-use` local.\n\n## Behavior\n\n| Case | Result |\n|------|--------|\n| `apply_patch` succeeds | parses `tool_input.command`, extracts added/updated/moved files, and checks each with LSP error diagnostics |\n| `write` / `edit` / `multiedit` succeeds | checks `path`, `filePath`, or `file_path` aliases |\n| diagnostics contain errors | returns Codex `PostToolUse` blocking feedback and injects the same diagnostics as additional context so Codex fixes the file |\n| no diagnostics | emits no hook output |\n| unsupported extension | emits no hook output |\n| missing configured language server | surfaces the install/config message through hook or MCP output |\n\nDeletes are ignored because they cannot introduce new diagnostics.\n\n## MCP Tools\n\n- `lsp.status`\n- `lsp.diagnostics`\n- `lsp.goto_definition`\n- `lsp.find_references`\n- `lsp.symbols`\n- `lsp.prepare_rename`\n- `lsp.rename`\n\n`lsp.rename` applies the returned workspace edit to files. Use `lsp.prepare_rename` first when possible.\n\n## Configuration\n\nProject config:\n\n```text\n.codex/lsp-client.json\n```\n\nUser config:\n\n```text\n~/.codex/lsp-client.json\n```\n\nExample:\n\n```json\n{\n\t\"lsp\": {\n\t\t\"typescript\": {\n\t\t\t\"command\": [\"typescript-language-server\", \"--stdio\"],\n\t\t\t\"extensions\": [\".ts\", \".tsx\", \".js\", \".jsx\"]\n\t\t}\n\t}\n}\n```\n\nBuilt-in server definitions are used when no custom config overrides them. `lsp.status` shows which configured servers are installed or missing.\n\n## Codex Plugin\n\nThe plugin ships:\n\n- `.codex-plugin/plugin.json` for Codex plugin discovery.\n- `.mcp.json` for the `lsp` MCP server.\n- `hooks/hooks.json` for the `PostToolUse` diagnostics hook.\n- `skills/lsp/SKILL.md` with MCP usage guidance.\n\nThe runtime depends on `@code-yeongyu/lsp-tools-mcp` via `file:./packages/lsp-tools-mcp`, so marketplace builds must include submodule contents.\n\nThe hook command is:\n\n```bash\nnode \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use\n```\n\nThe MCP command is:\n\n```bash\nnode ./packages/lsp-tools-mcp/dist/cli.js mcp\n```\n\n## Local Development\n\n```bash\ngit submodule update --init --recursive\nnpm run bootstrap     # installs + builds the lsp-tools-mcp submodule\nnpm install\nnpm test\nnpm run typecheck\nnpm run check\nnpm pack --dry-run\n```\n\nThe `bootstrap` script installs and builds the `lsp-tools-mcp` git submodule so\n`@code-yeongyu/lsp-tools-mcp/dist/*.js` is available for the codex-lsp build.\n\nSmoke-test the hook:\n\n```bash\nnode dist/cli.js hook post-tool-use \u003c test/fixtures/post-tool-use.json\n```\n\nSmoke-test the MCP server:\n\n```bash\nprintf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}' | node dist/cli.js mcp\n```\n\n## Local Codex Installation\n\nFrom the marketplace root containing this plugin:\n\n```bash\ncodex plugin marketplace add /path/to/codex-plugins\nnode /path/to/codex-plugins/scripts/install-local.mjs /path/to/codex-plugins\n```\n\nIf your local Codex build exposes plugin install commands, you can install from the UI or CLI instead. For older local builds, the marketplace installer builds and copies the plugin into `~/.codex/plugins/cache/\u003cmarketplace\u003e/codex-lsp/0.2.0` and enables:\n\n```toml\n[plugins.\"codex-lsp@code-yeongyu-codex-plugins\"]\nenabled = true\n```\n\n## Branch Rules and Releases\n\n- `main` is protected by `.github/branch-ruleset.json`.\n- CI runs Node 20 and 22 on Ubuntu, macOS, and Windows.\n- Releases are GitHub Releases tagged as `v\u003csemver\u003e`.\n- Publishing runs from the `publish` workflow after a GitHub Release is published.\n\n## Privacy\n\nThis plugin runs locally. It starts configured language-server commands on your machine and does not call a network service by itself.\n\n## License\n\n[MIT](LICENSE).\n\n## Related\n\n- [pi-lsp-client](https://github.com/code-yeongyu/pi-lsp-client) - source extension this Codex plugin ports.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-yeongyu%2Fcodex-lsp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-yeongyu%2Fcodex-lsp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-yeongyu%2Fcodex-lsp/lists"}