{"id":51102026,"url":"https://github.com/alex-oleshkevich/fastapi-lsp","last_synced_at":"2026-07-12T16:00:55.548Z","repository":{"id":364977856,"uuid":"1269956982","full_name":"alex-oleshkevich/fastapi-lsp","owner":"alex-oleshkevich","description":"Language server for FastAPI and Starlette — route resolution, Depends() graph, url_for, Jinja templates, env intelligence. One Rust binary.","archived":false,"fork":false,"pushed_at":"2026-07-01T11:55:39.000Z","size":490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-01T12:24:39.552Z","etag":null,"topics":["fastapi","language-server-protocol","lsp","lsp-server","starlette"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/alex-oleshkevich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-15T08:55:22.000Z","updated_at":"2026-07-01T11:55:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alex-oleshkevich/fastapi-lsp","commit_stats":null,"previous_names":["alex-oleshkevich/fastapi-lsp"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/alex-oleshkevich/fastapi-lsp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-oleshkevich%2Ffastapi-lsp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-oleshkevich%2Ffastapi-lsp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-oleshkevich%2Ffastapi-lsp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-oleshkevich%2Ffastapi-lsp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alex-oleshkevich","download_url":"https://codeload.github.com/alex-oleshkevich/fastapi-lsp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex-oleshkevich%2Ffastapi-lsp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35395749,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["fastapi","language-server-protocol","lsp","lsp-server","starlette"],"created_at":"2026-06-24T12:00:22.788Z","updated_at":"2026-07-12T16:00:55.534Z","avatar_url":"https://github.com/alex-oleshkevich.png","language":"Rust","funding_links":[],"categories":["🆕 Recently Added"],"sub_categories":[],"readme":"# fastapi-lsp\n\n[![CI](https://github.com/alex-oleshkevich/fastapi-lsp/actions/workflows/ci.yml/badge.svg)](https://github.com/alex-oleshkevich/fastapi-lsp/actions/workflows/ci.yml)\n[![Release](https://github.com/alex-oleshkevich/fastapi-lsp/actions/workflows/release.yml/badge.svg)](https://github.com/alex-oleshkevich/fastapi-lsp/releases)\n\nLanguage server for FastAPI and Starlette — routes, `Depends()` graph, `url_for`, Jinja templates, env/settings. One Rust binary, any LSP-capable editor. Static analysis only.\n\n## Features\n\n| | |\n|---|---|\n| **Diagnostics** | param mismatches, shadowed routes, unincluded routers, `Depends(fn())`, dep cycles, broken `url_for`, missing templates, undefined env keys |\n| **Navigation** | test call → handler, `Depends()` chains both ways, template files, `.env` lines |\n| **Hover** | route card: resolved path, router chain, response model, deps, middleware |\n| **Completions** | route paths, `url_for` names, template paths, env keys |\n| **Symbols** | `GET /api/books/{book_id}` in the symbol picker |\n| **Code lenses** | test count, dep usage, override count per handler |\n| **`check` CLI** | same diagnostics as a linter — `fastapi-lsp check .` |\n\n## Installation\n\n```bash\nuv tool install fastapi-lsp\n```\n\nOr with pip:\n\n```bash\npip install fastapi-lsp\n```\n\nOr download a pre-built binary from the [releases page](https://github.com/alex-oleshkevich/fastapi-lsp/releases).\n\n## Editor setup\n\n### Neovim\n\n```lua\nvim.lsp.config('fastapi_lsp', {\n  cmd = { 'fastapi-lsp', '--stdio' },\n  filetypes = { 'python', 'html', 'htmldjango' },\n  root_markers = { 'pyproject.toml', '.git' },\n})\nvim.lsp.enable('fastapi_lsp')\n```\n\n### Helix\n\n```toml\n# ~/.config/helix/languages.toml\n[language-server.fastapi-lsp]\ncommand = \"fastapi-lsp\"\nargs = [\"--stdio\"]\n\n[[language]]\nname = \"python\"\nlanguage-servers = [\"pyright\", \"fastapi-lsp\"]\n\n[[language]]\nname = \"html\"\nlanguage-servers = [\"vscode-html-language-server\", \"fastapi-lsp\"]\n\n[[language]]\nname = \"jinja\"\nlanguage-servers = [\"fastapi-lsp\"]\n```\n\n### Zed\n\nInstall from the Zed extensions panel (`Cmd+Shift+X`) — search for **fastapi-lsp** and click Install. It activates automatically for Python, HTML, and Jinja2 files.\n\nTo control server order alongside other language servers or pass initialization options, add to `~/.config/zed/settings.json`:\n\n```jsonc\n{\n  \"languages\": { \"Python\": { \"language_servers\": [\"fastapi-lsp\", \"...\"] } },\n  \"lsp\": { \"fastapi-lsp\": { \"initialization_options\": { \"templates\": [\"app/templates\"] } } }\n}\n```\n\n## Configuration\n\nZero config for standard projects. Priority: `InitializationOptions` › `fastapi-lsp.toml` › `[tool.fastapi-lsp]` in `pyproject.toml`.\n\n| Option | Default | |\n|---|---|---|\n| `entrypoint` | _(auto-detected)_ | main app file |\n| `templates` | `[]` | Jinja template directories |\n| `source_roots` | `[]` | extra import resolution roots |\n| `env_files` | `[\".env\", \".env.example\"]` | env key definitions |\n| `settings_env_files` | `[\".env\", \".env.example\", \".env.unittest\"]` | env files checked for `BaseSettings` coverage |\n| `process_env` | `false` | include server process env |\n| `process_env_show_values` | `false` | show process-env values in hover |\n| `client_fixtures` | `[\"client\", \"async_client\"]` | pytest HTTP client fixture names |\n| `env.ignore` | `[]` | env keys to suppress from diagnostics |\n\nFeature toggles — all `true` by default except `test_unknown_paths`:\n\n| Toggle | Default |\n|---|---|\n| `diagnostics` | `true` |\n| `completion` | `true` |\n| `hover` | `true` |\n| `navigation` | `true` |\n| `code_actions` | `true` |\n| `code_lens` | `true` |\n| `symbols` | `true` |\n| `inlay_hints` | `true` |\n| `document_links` | `true` |\n| `test_unknown_paths` | `false` |\n\n```toml\n# fastapi-lsp.toml\nentrypoint = \"app/main.py\"\ntemplates = [\"app/templates\"]\n\n[features]\ncode_lens = false\n\n[check]\nonly = []\nignore = [\"env/undefined-key\"]\n```\n\n## CLI\n\n```\nfastapi-lsp lsp [--stdio | --tcp --address 127.0.0.1 --port 9257]\nfastapi-lsp check PATH [--only CODES] [--ignore CODES] [--format text|json] [--fix]\nfastapi-lsp routes [PATH] [--format text|json]\n```\n\n## Development\n\n```bash\ncargo build\ncargo test\nuv run --group dev pytest e2e/ -v\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex-oleshkevich%2Ffastapi-lsp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falex-oleshkevich%2Ffastapi-lsp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex-oleshkevich%2Ffastapi-lsp/lists"}