<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>lspkit — The foundation for any language&#39;s tooling.</title>
  <subtitle>lspkit is the language server toolkit: write your language analysis once in Rust, serve it over LSP and as an MCP server, and profile it with a CPU and memory profiler built into VS Code.</subtitle>
  <link href="https://lspkit.dev/feed.xml" rel="self"/>
  <link href="https://lspkit.dev/"/>
  <updated>2026-10-31T00:00:00.000Z</updated>
  <id>https://lspkit.dev/</id>
  
  <entry>
    <title>Build an MCP server and a language server from one Rust engine.</title>
    <link href="https://lspkit.dev/blog/one-engine/"/>
    <id>https://lspkit.dev/blog/one-engine/</id>
    <updated>2026-10-31T00:00:00.000Z</updated>
    <content type="html">https://lspkit.dev/%3C!--%20[WEB-CONTENT]%20[WEB-SEO-KEYWORDS]%20Keywords%20from%20Google%20Trends,%2012%20months%20to%202026-10:%20%22mcp%20server%22,%20%22what%20is%20mcp%20server%22,%20%22claude%20code%22,%20%22cursor%22,%20%22codex%22,%20%22language%20server%20protocol%22,%20%22rust%20language%20server%22,%20%22vscode%20extension%22,%20%22memory%20leak%22.%20--%3E%3Cp%3EYour%20VS%20Code%20extension%20talks%20to%20a%20%3Cstrong%3Elanguage%20server%3C/strong%3E%20over%20the%20%3Cstrong%3ELanguage%20Server%20Protocol%3C/strong%3E%20(LSP).%20AI%20coding%20agents%20such%20as%20%3Cstrong%3EClaude%20Code%3C/strong%3E,%20%3Cstrong%3ECursor%3C/strong%3E%20and%20%3Cstrong%3ECodex%3C/strong%3E%20talk%20to%20tools%20over%20the%20%3Cstrong%3EModel%20Context%20Protocol%3C/strong%3E%20(MCP).%20If%20you%20build%20developer%20tools,%20you%20now%20need%20both,%20and%20they%20should%20give%20the%20same%20answers.%3C/p%3E%3Ch2%20id=%22what-is-an-mcp-server%22%20tabindex=%22-1%22%3E%3Ca%20class=%22header-anchor%22%20href=%22#what-is-an-mcp-server%22%3EWhat%20is%20an%20MCP%20server?%3C/a%3E%3C/h2%3E%3Cp%3EAn%20MCP%20server%20exposes%20tools%20and%20data%20to%20an%20AI%20agent%20over%20a%20small%20JSON-RPC%20protocol.%20Where%20a%20language%20server%20answers%20&amp;quot;what&#39;s%20the%20type%20at%20this%20cursor?&amp;quot;%20for%20an%20editor,%20an%20MCP%20server%20answers%20&amp;quot;find%20every%20caller%20of%20this%20function&amp;quot;%20for%20an%20agent.%20Both%20need%20the%20same%20thing%20underneath:%20a%20live,%20accurate%20model%20of%20the%20code.%3C/p%3E%3Ch2%20id=%22the-trap-two-pipelines%22%20tabindex=%22-1%22%3E%3Ca%20class=%22header-anchor%22%20href=%22#the-trap-two-pipelines%22%3EThe%20trap:%20two%20pipelines%3C/a%3E%3C/h2%3E%3Cp%3EThe%20obvious%20build%20is%20a%20language%20server%20with%20its%20own%20caches,%20then%20an%20MCP%20server%20bolted%20on%20with%20another%20set.%20Now%20two%20pipelines%20parse%20the%20same%20files,%20watch%20the%20same%20folders%20and%20drift%20apart.%20The%20agent%20sees%20stale%20results%20the%20editor%20has%20already%20fixed.%3C/p%3E%3Ch2%20id=%22one-engine-two-surfaces%22%20tabindex=%22-1%22%3E%3Ca%20class=%22header-anchor%22%20href=%22#one-engine-two-surfaces%22%3EOne%20engine,%20two%20surfaces%3C/a%3E%3C/h2%3E%3Cp%3Elspkit%20puts%20analysis%20behind%20one%20Rust%20trait,%20%3Ccode%3EEngineApi%3C/code%3E.%20The%20%3Ccode%3Elspkit-server%3C/code%3E%20crate%20serves%20it%20over%20LSP%20to%20VS%20Code;%20its%20%3Ccode%3Emcp%3C/code%3E%20feature%20serves%20the%20same%20engine%20over%20MCP%20to%20Claude%20Code,%20Cursor%20or%20Codex.%3C/p%3E%3Cpre%20class=%22language-sh%22%3E%3Ccode%20class=%22language-sh%22%3E%3Cspan%20class=%22token%20function%22%3Ecargo%3C/span%3E%20%3Cspan%20class=%22token%20function%22%3Eadd%3C/span%3E%20lspkit%20lspkit-server%20%3Cspan%20class=%22token%20parameter%20variable%22%3E--features%3C/span%3E%20lspkit-server/mcp%3C/code%3E%3C/pre%3E%3Cp%3EEvery%20report%20carries%20a%20%3Cstrong%3Egeneration%3C/strong%3E%20number,%20so%20the%20editor%20and%20the%20agent%20can%20both%20tell%20which%20state%20of%20the%20workspace%20produced%20an%20answer.%20Cancellation%20and%20progress%20live%20at%20the%20same%20boundary,%20so%20a%20slow%20query%20from%20the%20agent%20never%20blocks%20the%20editor.%3C/p%3E%3Ch2%20id=%22find-the-memory-leak-before-your-users-do%22%20tabindex=%22-1%22%3E%3Ca%20class=%22header-anchor%22%20href=%22#find-the-memory-leak-before-your-users-do%22%3EFind%20the%20memory%20leak%20before%20your%20users%20do%3C/a%3E%3C/h2%3E%3Cp%3ELong-running%20language%20servers%20leak.%20lspkit%20ships%20%3Ccode%3Elsp-profiler%3C/code%3E,%20a%20CPU%20and%20memory%20profiler%20that%20runs%20inside%20VS%20Code:%20hot%20lines%20painted%20in%20your%20source,%20a%20flame%20graph%20beside%20it,%20and%20a%20live%20heap%20timeline%20that%20ranks%20%3Cstrong%3Ememory%20leak%3C/strong%3E%20suspects.%20%3Ca%20href=%22https://sharplsp.dev/docs/profiler/%22%3ESharpLsp%3C/a%3E%20uses%20it%20for%20C#%20and%20F#;%20%3Ca%20href=%22https://www.ospreylang.dev/docs/tutorials/profiler/%22%3EOsprey%3C/a%3E%20uses%20it%20for%20a%20native%20functional%20language.%20%3Ca%20href=%22/docs/examples/%22%3EWatch%20both%20on%20the%20examples%20page%3C/a%3E.%3C/p%3E%3Cfigure%20class=%22example-video%22%3E%3Cvideo%20controls%20preload=%22metadata%22%20playsinline%20width=%221920%22%20height=%221200%22%20poster=%22https://sharplsp.dev/assets/videos/profiler-fix-memory-leak-poster.webp%22%20aria-label=%22Fixing%20a%20C#%20memory%20leak%20in%20VS%20Code%20with%20the%20SharpLsp%20memory%20profiler,%20from%20leak%20suspects%20to%20the%20retaining%20path%22%3E%3Csource%20src=%22https://sharplsp.dev/assets/videos/profiler-fix-memory-leak.webm%22%20type=%22video/webm%22%3E%3Csource%20src=%22https://sharplsp.dev/assets/videos/profiler-fix-memory-leak.mp4%22%20type=%22video/mp4%22%3E%3Ctrack%20kind=%22captions%22%20src=%22https://sharplsp.dev/assets/videos/profiler-fix-memory-leak.en.vtt%22%20srclang=%22en%22%20label=%22English%22%3E%3C/video%3E%3Cfigcaption%3E%3Ca%20class=%22example-project%22%20href=%22https://sharplsp.dev%22%3E%3Cstrong%3ESharpLsp%3C/strong%3E%20%C2%B7%20C#%20and%20F#%20language%20server%20for%20VS%20Code%20%E2%86%97%3C/a%3EFinding%20and%20fixing%20a%20memory%20leak%20in%20a%20running%20C#%20app.%20%3Ca%20href=%22https://sharplsp.dev/docs/memory-leaks/%22%3EWatch%20the%20walkthrough%20%E2%86%97%3C/a%3E%3C/figcaption%3E%3C/figure%3E%3Cdiv%20class=%22example-shots%22%3E%3Cfigure%3E%3Cimg%20src=%22https://sharplsp.dev/assets/screenshots/profiler/profiler-leaks.webp%22%20width=%222400%22%20height=%221500%22%20loading=%22lazy%22%20alt=%22Suspected%20leaks%20ranked%20HIGH%20with%20growth%20in%20megabytes%20and%20object%20counts,%20and%20an%20inline%20leak%20marker%20on%20the%20CustomerSession%20declaration%22%3E%3Cfigcaption%3E%3Ca%20class=%22example-project%22%20href=%22https://sharplsp.dev%22%3E%3Cstrong%3ESharpLsp%3C/strong%3E%20%C2%B7%20C#%20and%20F#%20language%20server%20for%20VS%20Code%20%E2%86%97%3C/a%3ERanked%20leak%20suspects,%20marked%20in%20the%20source.%3C/figcaption%3E%3C/figure%3E%3Cfigure%3E%3Cimg%20src=%22/assets/images/examples/osprey-heatmap.webp%22%20width=%221276%22%20height=%22714%22%20loading=%22lazy%22%20alt=%22busy.osp%20in%20VS%20Code%20with%20inline%20heat%20bars:%20collatz%2076.4%20percent,%20longest%2073.0%20percent,%20fib%2022.5%20percent%22%3E%3Cfigcaption%3E%3Ca%20class=%22example-project%22%20href=%22https://www.ospreylang.dev%22%3E%3Cstrong%3EOsprey%3C/strong%3E%20%C2%B7%20native%20functional%20language%20with%20a%20VS%20Code%20extension%20%E2%86%97%3C/a%3EHeat%20on%20Osprey%20source.%3C/figcaption%3E%3C/figure%3E%3C/div%3E%3Ch2%20id=%22start-building%22%20tabindex=%22-1%22%3E%3Ca%20class=%22header-anchor%22%20href=%22#start-building%22%3EStart%20building%3C/a%3E%3C/h2%3E%3Cul%3E%3Cli%3E%3Ca%20href=%22/docs/getting-started/%22%3EGetting%20started%3C/a%3E:%20add%20the%20crates%20and%20implement%20%3Ccode%3EEngineApi%3C/code%3E.%3C/li%3E%3Cli%3E%3Ca%20href=%22/docs/crates/%22%3ECrates%3C/a%3E:%20what%20each%20crate%20and%20feature%20gives%20you.%3C/li%3E%3Cli%3E%3Ca%20href=%22https://github.com/Nimblesite/lspkit%22%3ESource%20on%20GitHub%20%E2%86%97%3C/a%3E%3C/li%3E%3C/ul%3E</content>
    <summary>How to give Claude Code, Cursor and Codex the same live code intelligence as your VS Code extension, with one Rust engine behind an MCP server and a language server.</summary>
  </entry>
</feed>
