Serena MCP 체감되시나요?

C# + Claude Code로 개발하면서 추가한 MCP들중에 Serena에 대한 선후배님들의 후기(?)가 궁금해서 글을 올려봅니다.

저는 일단 설치해서 사용은 하고있는데 이게 절약이 되는건가.. 싶으면서도 그냥저냥 사용중입니다.
대시보드에는 뭐 사용한 스킬들이나 정보들이 나오긴해서 되나보다 하고 넘기는데요.

이걸 실제로 적용하고나서 체감이 많이 됐다! 싶은 분들 있으시면 어떤 상황에서 체감되셨는지 의견한번 부탁드리겠습니다.

1개의 좋아요

음 저는 편하다면 편하게 쓰고 있는 것이, “개떡같이 말해도 찰떡같이 알아듣는 점” 이라고 생각합니다.

물론 내가 어떤 파일에 대해 작업을 할지 명확하게 알고 있을 경우 @ 를 통해 작업파일들을 직접 링크걸고 하면 좋겠지만 그건 AI의 자율도를 떨어뜨릴 수도 있고,

내가 간단하게 유사 키워드만 말해도 또는 대충 타이핑만 해도 그게 뭔지 serena로 탐색이 되다보니 정확하게 짚어내는 점 보단 그런게 편리해서 쓰는 것 같습니다.

serena를 쓰기 시작한게 작년 5월 경부터인데 그 이후로는 쭉 쓰고 있어서, 요즘은 model과 agent 자체 성능들이 좋아져서 어떨지는 모르겠습니다. 그러나 그냥 계속 쓰는 방향으로 보고 있습니다.


Serena Dashboard가 자꾸 귀찮게해서 기본적으로 설치 후 비활성화 시키는 편인데, 근래 .serena 폴더의 log를 확인해보니 serena를 직접 동작시키는 CallToolRequest 라는 Log 상의 요청이 최근 한번도 사용하지 않은 것으로 확인되었습니다. 회사 프로젝트가 노출될 수 있어서 링크는 못걸겠지만, Claude Code의 Agent적인 성능이 좋아지면서 Serena가 기본적인 설정 상으로는 많이 힘을 못쓰는 상황이 된 것 같다고 판단이 되네요. Serena가 명확하게 동작하는게 체감되지 않는다면 Serena를 제거해도 무방하지 않을까 싶습니다.

아니면 Serena의 이점을 좀 확인해보고 싶다면 Serena의 Instruction이나 prompt적인 부분을 강제해서 Claude Code의 Agent 적인 부분이 아니라 serena로 동작할 수 있도록 어떤 상황을 설정해서 한번 연구해보는 것도 좋지 않을까 하네요.

Claude Code 기본 도구인 Grep/Read/Edit 도구를 Serena로 동작시키도록 hook 같은 것을 사용해볼 수 있을 것 같은데 이것은 비효율적인 부분이긴해서 유의미할 수 있는 방법의 연구가 필요할 것 같습니다.

저는 오늘부터 후자로 시간날때 한번 해봐야겠습니다.


[중간 확인]

잘 모르던 것들에 관해 알게 된 유익한 시간이었습니다. 덕분에 오랜만에 탐색을 한 거 같습니다.

Claude Code 같은 Host Agent가 *MCP의 Tool을 호출하기 위해서는 JSON-RPC를 이용하고, JSON-RPC 상에서 MCP에 내장된 도구를 호출하는 메시지(메서드)는 tools/call 입니다.

이것이 .NET MCP SDK에서는 CallToolRequestParams 라는 타입으로 추상화되어 있고, Python MCP SDK에도 같은 이름으로 존재합니다. 그런데 이 MCP Tool을 호출하는 CallToolRequest 요청 자체가 제 .serena 로그 상에서 최근 단 한 번도 확인되지 않았습니다. 즉 Serena의 도구가 실제로는 호출된 적이 없다는 뜻입니다. 그냥 느낌적인 느낌으로 사용되고 있다고 믿을 뿐 실제로는 사용되지 않은 것입니다.

아마도 2025년 12월 19일에 2.0.74 버전을 시작으로 Claude Code에 LSP Client 기능이 점점 추가되기 시작하면서 직접 LSP Server를 조작할 수 있게되고 Claude Code의 Edit, Grep 과 같은 도구가 발달하고 또 Claude Code가 Agent로서 도구 선택을 함에 있어서 똑똑해지면서 Serena가 점점 이용되지 않는 방향으로 변하지 않았나 추측이 됩니다. (검증 불가)

제 로컬에도 이미 csharp-ls가 설치되어 있고 claude code에도 plugin을 통해 csharp-ls를 사용하도록 설정파일이 저장되어 있습니다. wpf-dev-pack도 csharp-ls를 사용하도록 되어 있어서, Claude Code가 Serena를 이용하지 않고도 충분히 코드를 탐색하거나 코드를 수정함에 있어 문제가 없는 상태이고, 오히려 serena를 이용해서 탐색하면 context 를 차지할 수 밖에 없기에 따로 Serena를 쓰라고 명령하지 않으면 기본적으로는 serena가 설치되어 있어도 안쓰는게 아닌가 싶습니다.

Serena의 기본 골자는, LSP 서버를 확장하여 AI가 코드를 정확히 탐색하고, 그 탐색을 기준으로 편집하는 것이 본래 주요 기능 같아 보입니다. Serena의 MCP Tools 들이 그걸 보여주고 있습니다.

그래서 점점 따지다 보니 Roslyn / LSP 서버 / Serena / Claude Code가 각각 어느 층에 있는지를 이번 기회에 정리하게 되었고, 이게 "왜 Serena가 안 도는가"를 그대로 설명해줘서 여기에 결과를 마저 남깁니다.

계층 구조

  • Roslyn (Microsoft.CodeAnalysis) — 실제 C# 분석 엔진(라이브러리)입니다. 그 자체는 언어 서버가 아닙니다.
  • 언어 서버 — Roslyn을 감싸 LSP로 노출하는 프로세스입니다. csharp-ls(razzmatazz)나 Microsoft.CodeAnalysis.LanguageServer(MS 공식, C# Dev Kit 구동체) 등 여러 개가 있고 서로 다른 바이너리입니다. "언어 서버"의 자격은 Roslyn을 쓰느냐가 아니라 LSP를 구현한 서버 역할을 하느냐입니다. 기본적으로는 stdio 를 사용해서 서브 프로세스, 종속 프로세스처럼 동작합니다.
  • Serena — 자체 구현된 SolidLSP 라이브러리로 언어 서버를 띄우는 LSP 클라이언트이고, 그 위에 심볼 탐색/편집 도구를 AI에게 제공합니다. SolidLSP 안에 언어별로 어댑터가 있고, C#의 경우에는 csharp_language_server.py 코드가 진짜 LSP 서버를 다운로드/실행하는데, C#의 경우 Serena는 제 csharp-ls가 아니라 자기 몫의 Roslyn LSP(Microsoft.CodeAnalysis.LanguageServer)를 따로 받아서 씁니다. (~/.serena/language_servers/…/roslyn-language-server.win-x64에 실제로 받아져 있습니다.)
  • Claude Code — 이제는 자체 네이티브 LSP 통합을 가져서 LSP Client의 역할도 수행할 수 있기에, 언어 서버인 csharp-ls를 직접 자식 프로세스로 띄워서 쓰고 있었습니다. (실행 중인 csharp-ls 프로세스의 부모가 claude 였습니다. 직접 확인 가능.)

정리하면, claude code가 serena를 통해 코드를 탐색하고 편집하는 순서는

claude code -> Serena MCP Tools 호출 -> serena 언어 서버 어뎁터 (csharp_language_server.py) -> Roslyn LSP Server -> Roslyn -> Serena MCP 도구로 코드 편집

serena를 쓰지 않는다면

claude code -> Claude Code Grep 도구 / csharp-ls -> Roslyn -> Claude Code Edit 도구

인거 같습니다.

결론

기본 설정 상으로는, Claude Code의 Agent 성능 + 네이티브 LSP(csharp-ls 직접 구동)가 Serena의 영역을 대체 가능한 상태인 것 같습니다. 그래서 Serena의 동작이 체감되지 않는다면 제거해도 무방하다고 판단됩니다.

반대로 Serena의 이점을 살리려면 앞서 적었듯 instruction/prompt를 강제하거나 hook을 통해 LSP Client 로서의 기능을 기존 도구를 사용하지 않고 Serena 로 의존 시키도록 해야할 거 같습니다.

다만 단순 도구 이용이 아니라 아무래도 MCP를 이용하면 아무리 중립적인 prompt context라곤 하나 context 량이 증가하기 때문에 간단한 코드 탐색 및 수정이라면 Serena를 이용하지 않아도 될 것 같고, Serena에 있는 context를 잘 이해해서 꼭 Serena를 탐색해야만 정확할 것 같다고 예측 되는 작업에만 Serena를 사용하라고 지침을 주어야할 것 같습니다.

Claude Code 답변으로는…대규모 코드 베이스에서 정확하게 코드 베이스 심볼을 찾을 때나 정확한 심볼에 대한 수정이 필요한 경우 Serenar 낫고, 정확하지 않고 러프하게 넓은 범위에서 키워드 탐색이라면 그냥 Claude Code에게 맡기는 걸 추천한다고 하네요…이건 믿거나 말거나…

1개의 좋아요

자세한 답변 감사합니다. 덕분에 많은 공부가 되었습니다 ㅎㅎ

1개의 좋아요