Skip to main content
Glama

SharpLensMcp

NuGet npm License: MIT

Microsoft Roslynを使用した.NET/C#のセマンティックコード解析、ナビゲーション、リファクタリング、コード生成のための62個のAI最適化ツールを提供するModel Context Protocol (MCP) サーバーです。

AIコーディングエージェント向けに構築されており、AIがソースファイルを読み取るだけでは推論できない、コンパイラ精度のコード理解を提供します。

インストール

NuGet経由 (推奨)

dotnet tool install -g SharpLensMcp

次に以下を実行します:

sharplens

npm経由

npx -y sharplens-mcp

ソースからビルド

dotnet build -c Release
dotnet publish -c Release -o ./publish

Claude Codeの設定

  1. ツールをインストールします (いずれかを選択):

dotnet tool install -g SharpLensMcp
# or
npx -y sharplens-mcp
  1. プロジェクトのルートに .mcp.json を作成します

{
  "mcpServers": {
    "sharplens": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "sharplens-mcp"],
      "env": {
        "DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
      }
    }
  }
}
  1. Claude Codeを再起動してMCPサーバーを読み込みます

  2. ClaudeにRoslynサーバーのヘルスチェックを実行するよう依頼して確認します

なぜClaude Codeでこれを使用するのか?

Claude Codeは、基本的なナビゲーション(定義への移動、参照の検索)に対してネイティブのLSPサポートを備えています。SharpLensMcpは、深いセマンティック解析を追加します:

機能

ネイティブLSP

SharpLensMcp

定義への移動

参照の検索

CancellationTokenが欠落している非同期メソッドの検索

影響分析 (何が壊れるか?)

デッドコード検出

複雑性メトリクス

プレビュー付きの安全なリファクタリング

バッチ操作

設定

環境変数

説明

デフォルト

DOTNET_SOLUTION_PATH

起動時に自動読み込みする .sln または .slnx ファイルへのパス

なし (load_solution を呼び出す必要あり)

SHARPLENS_ABSOLUTE_PATHS

相対パスの代わりに絶対パスを使用

false (相対パスはトークンを節約します)

ROSLYN_LOG_LEVEL

ログの詳細度: Trace, Debug, Information, Warning, Error

Information

ROSLYN_TIMEOUT_SECONDS

長時間実行される操作のタイムアウト

30

ROSLYN_MAX_DIAGNOSTICS

返される診断の最大数

100

ROSLYN_ENABLE_SEMANTIC_CACHE

セマンティックモデルのキャッシュを有効化

true (無効にするには false に設定)

DOTNET_SOLUTION_PATH が設定されていない場合は、他のツールを使用する前に load_solution ツールを呼び出す必要があります。

AIエージェント設定のヒント

AIモデルは、SharpLensMcpの方が優れた機能を提供している場合でも、ネイティブツール(Grep、Read、LSP)を使用するように学習上のバイアスがかかっている可能性があります。

最適なツール使用を確実にするために:

  1. Claude Code: プロジェクトの CLAUDE.md に以下を追加します:

    For C# code analysis, prefer SharpLensMcp tools over native tools:
    - Use `roslyn:search_symbols` instead of Grep for finding symbols
    - Use `roslyn:get_method_source` instead of Read for viewing methods
    - Use `roslyn:find_references` for semantic (not text) references
  2. その他のMCPクライアント: エージェントのシステムプロンプトでツールの優先順位を設定します

Roslynによるセマンティック解析は、特にオーバーロードされたメソッド、部分クラス、継承階層において、テキストベースの検索よりも正確です。

エージェントの責任:ドキュメントの同期

重要: SharpLensMcpは、高速なクエリのためにソリューションのメモリ内表現を保持します。ファイルが外部から(Edit/Writeツール経由で)変更された場合、変更を同期するのはエージェントの責任です。

sync_documents を呼び出すタイミング:

アクション

sync_documentsを呼び出すか?

Editツールを使用して.csファイルを変更した

はい

Writeツールを使用して新しい.csファイルを作成した

はい

.csファイルを削除した

はい

SharpLensMcpのリファクタリングツール(名前変更、抽出など)を使用した

❌ いいえ (自動更新されます)

.csprojファイルを変更した

❌ いいえ (load_solution を使用してください)

使用方法:

# After editing specific files
sync_documents(filePaths: ["src/MyClass.cs", "src/MyService.cs"])

# After bulk changes - sync all documents
sync_documents()

なぜこの設計なのか?

これはLSP(Language Server Protocol)の仕組みを反映しています。クライアント(エディタ)がサーバーに変更を通知します。このアプローチは:

  • 競合状態を排除します(エージェントがタイミングを制御)

  • ファイル監視の複雑さやプラットフォームの癖を回避します

  • ソリューション全体の再読み込みよりも高速です

  • エージェントにワークスペース状態の明示的な制御を与えます

同期しない場合: クエリが古いデータ(古いメソッドシグネチャ、新しいファイルの欠落など)を返す可能性があります。

機能

  • 62個のセマンティック解析ツール - ナビゲーション、リファクタリング、コード生成、診断、発見

  • AI最適化された説明 - 明確なUSAGE/OUTPUT/WORKFLOWパターン

  • 構造化されたレスポンス - suggestedNextTools を含む一貫した success/error/data 形式

  • ゼロベースの座標 - 1ズレエラーを防ぐための明確な警告

  • プレビューモード - 適用前にプレビューで安全にリファクタリング

  • バッチ操作 - コンテキスト使用量を削減するための1回の呼び出しでの複数ルックアップ

ツールカテゴリ

ナビゲーションと発見 (17ツール)

ツール

説明

get_symbol_info

位置におけるセマンティック情報

go_to_definition

シンボル定義へジャンプ

find_references

ソリューション全体のすべての参照

find_implementations

インターフェース/抽象実装

find_callers

影響分析 - これを呼び出すのは誰か?

get_type_hierarchy

継承チェーン

search_symbols

グロブパターン検索 (*Handler, Get*)

semantic_query

マルチフィルター検索 (async, publicなど)

get_type_members

型名によるすべてのメンバー

get_type_members_batch

1回の呼び出しで複数の型

get_method_signature

名前による詳細なシグネチャ

get_derived_types

すべてのサブクラスを検索

get_base_types

完全な継承チェーン

get_attributes

シンボルの属性をリスト化

get_containing_member

位置における包含シンボル

get_method_overloads

メソッドのすべてのオーバーロード

find_attribute_usages

属性による型/メンバーの検索

解析 (11ツール)

ツール

説明

get_diagnostics

コンパイラエラー/警告

analyze_data_flow

変数の割り当てと使用状況

analyze_control_flow

分岐/到達可能性

analyze_change_impact

変更すると何が壊れるか?

check_type_compatibility

AはBに割り当て可能か?

get_outgoing_calls

このメソッドは何を呼び出すか?

find_unused_code

デッドコード検出

validate_code

書き込みなしのコンパイルチェック

get_complexity_metrics

循環的、ネスト、LOC、認知的

find_circular_dependencies

プロジェクトと名前空間の循環検出

get_missing_members

未実装のインターフェース/抽象メンバー

リファクタリング (14ツール)

ツール

説明

rename_symbol

ソリューション全体の安全な名前変更

change_signature

パラメータの追加/削除/並べ替え

extract_method

データフロー解析による抽出

extract_interface

クラスからインターフェースを生成

generate_constructor

フィールド/プロパティから

organize_usings

未使用の並べ替えと削除

organize_usings_batch

複数ファイルのバッチ整理

format_document_batch

プロジェクト内のファイルバッチフォーマット

get_code_actions_at_position

位置におけるすべてのRoslynリファクタリング

apply_code_action_by_title

タイトルによるリファクタリングの適用

implement_missing_members

インターフェーススタブの生成

encapsulate_field

フィールドからプロパティへ

inline_variable

一時変数のインライン化

extract_variable

式を変数に抽出

コード生成 (2ツール)

ツール

説明

add_null_checks

ArgumentNullExceptionガードを生成

generate_equality_members

Equals/GetHashCode/演算子

複合ツール (6ツール)

ツール

説明

get_type_overview

1回の呼び出しで完全な型情報

analyze_method

シグネチャ + 呼び出し元 + 呼び出し先 + 場所

get_file_overview

診断付きのファイル概要

get_method_source

名前によるソースコード

get_method_source_batch

1回の呼び出しで複数のメソッドソース

get_instantiation_options

型の作成方法

発見 (2ツール)

ツール

説明

get_di_registrations

DIサービス登録をスキャン

find_reflection_usage

リフレクション/動的使用を検出

インフラストラクチャ (10ツール)

ツール

説明

health_check

サーバーの状態

load_solution

解析用に.sln/.slnxを読み込み

sync_documents

読み込まれたソリューションにファイル変更を同期

get_project_structure

ソリューション構造

dependency_graph

プロジェクトの依存関係

get_code_fixes

診断に対して利用可能な修正

apply_code_fix

特定のコード修正を適用

get_nuget_dependencies

プロジェクトごとのNuGetパッケージリスト

get_source_generators

アクティブなソースジェネレーターをリスト化

get_generated_code

生成されたソースコードを表示

その他のMCPクライアント

Claude Code以外のMCPクライアントについては、設定に以下を追加してください:

{
  "mcpServers": {
    "sharplens": {
      "command": "sharplens",
      "args": [],
      "env": {
        "DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
      }
    }
  }
}

使用方法

  1. ソリューションを読み込む: .sln または .slnx ファイルへのパスを指定して roslyn:load_solution を呼び出します(または DOTNET_SOLUTION_PATH を設定します)

  2. コードを解析する: ナビゲーション、解析、リファクタリングのための57個のツールのいずれかを使用します

  3. 安全にリファクタリングする: preview: true を指定して、適用前に変更をプレビューします

アーキテクチャ

MCP Client (AI Agent)
        | stdin/stdout (JSON-RPC 2.0)
        v
   SharpLensMcp
   - Protocol handling
   - 57 AI-optimized tools
        |
        v
Microsoft.CodeAnalysis (Roslyn)
  - MSBuildWorkspace
  - SemanticModel
  - SymbolFinder

要件

  • .NET 8.0 SDK以降 — .NET 8、9、10、および将来のバージョンで動作します。あらゆる.NET 8+プロジェクト/ソリューションを解析します。

  • MCP互換のAIエージェント

開発

新しいツールの追加

  1. src/RoslynService.cs にメソッドを追加します

public async Task<object> YourToolAsync(string param1, int? param2 = null)
{
    EnsureSolutionLoaded();
    // Your logic...
    return CreateSuccessResponse(
        data: new { /* results */ },
        suggestedNextTools: new[] { "next_tool_hint" }
    );
}
  1. src/McpServer.csHandleListToolsAsync にツール定義を追加します

  2. src/McpServer.csHandleToolCallAsync switch文にルーティングを追加します

  3. ビルドと公開

dotnet build -c Release
dotnet publish -c Release -o ./publish

主要ファイル

ファイル

目的

src/RoslynService.cs

ツール実装 (57メソッド)

src/McpServer.cs

MCPプロトコル、ツール定義、ルーティング

ライセンス

MIT - 詳細については LICENSE を参照してください。

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pzalutski-pixel/sharplens-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server