DesktopInsights
Desktop Insights MCP Server
Desktop Insights 用のMCPサーバー — 12,000以上のmacOSおよびWindowsデスクトップアプリケーションで使用されているSDK、フレームワーク、依存関係を検索します。
クイックスタート
desktopinsights.com/settings/api でAPIキーを取得してください。
Claude Code
claude mcp add desktopinsights -e DESKTOPINSIGHTS_API_KEY=your-api-key -- npx -y desktopinsights-mcpClaude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json に以下を追加します:
{
"mcpServers": {
"desktopinsights": {
"command": "npx",
"args": ["-y", "desktopinsights-mcp"],
"env": {
"DESKTOPINSIGHTS_API_KEY": "your-api-key"
}
}
}
}Cursor
.cursor/mcp.json に以下を追加します:
{
"mcpServers": {
"desktopinsights": {
"command": "npx",
"args": ["-y", "desktopinsights-mcp"],
"env": {
"DESKTOPINSIGHTS_API_KEY": "your-api-key"
}
}
}
}Related MCP server: Generate Tech Stack
ツール
lookup_app
特定のアプリが使用しているSDKや依存関係を検索します。
"What SDKs does Figma use?"
"Look up the technology stack of 1Password"
"What error tracking does Slack use?"search_apps
SDKの使用状況、ランタイム、プラットフォーム、または開発者でアプリを検索します。
"Which apps use Sentry for error tracking?"
"Find all Electron apps that use Stripe"
"What apps does Microsoft publish on macOS?"compare_apps
テクノロジースタックの並列比較を行います。
"Compare Figma vs Sketch"
"Compare Slack and Discord's tech stacks"list_sdk_categories
追跡されている11のSDKカテゴリすべてを例示値とともにリスト表示します。利用可能なフィルターを確認するのに便利です。
設定
環境変数 | 必須 | デフォルト |
| はい | — |
| いいえ |
|
開発
npm install
npm run build
DESKTOPINSIGHTS_API_KEY=your-key node build/index.jsAvailable Tools
4 toolscompare_appsARead-only
Compare the technology stacks of two desktop applications side by side. Shows SDK differences, shared technologies, and metadata comparison. Useful for competitive analysis (e.g., "Compare Figma vs Sketch", "Compare Slack vs Discord"). Uses 2 API calls.
| Name | Required | Description | Default |
|---|---|---|---|
| app1 | Yes | First app name or bundle ID | |
| app2 | Yes | Second app name or bundle ID | |
| platform | No | Platform to compare on (recommended when apps exist on both) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, read-only operation with open-world assumptions. The description adds valuable context beyond annotations: it specifies what the tool compares ('SDK differences, shared technologies, and metadata comparison'), mentions it 'Uses 2 API calls' (implying potential rate limits or performance considerations), and provides example use cases. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by specifics on what is compared, usage context with examples, and API call information. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (comparative analysis with 3 parameters), rich annotations (readOnlyHint, destructiveHint, openWorldHint), and no output schema, the description is mostly complete. It covers purpose, usage, and behavioral aspects like API calls, but lacks details on output format (e.g., structure of comparison results) or error handling. However, annotations provide safety context, making it adequate but with minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for app1, app2, and platform (including enum values). The description adds minimal parameter semantics beyond the schema: it implies app1 and app2 are for 'desktop applications' and platform is for comparison 'when apps exist on both,' but doesn't provide additional syntax or format details. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Compare the technology stacks of two desktop applications side by side.' It specifies the verb ('compare'), resource ('technology stacks of two desktop applications'), and scope ('side by side'), distinguishing it from siblings like list_sdk_categories, lookup_app, and search_apps by focusing on comparative analysis rather than listing, looking up, or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Useful for competitive analysis' with examples like 'Compare Figma vs Sketch' and 'Compare Slack vs Discord.' It implicitly suggests when to use this tool (for comparison) versus alternatives (e.g., use list_sdk_categories for listing, lookup_app for single-app details, search_apps for searching), and mentions 'Uses 2 API calls' to indicate resource considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sdk_categoriesARead-only
List all 11 SDK categories tracked by Desktop Insights with their API field names and example SDKs for each. Use this to discover what filters are available for search_apps, or to understand the sdkSummary fields returned by lookup_app.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing this as a safe read operation. The description adds valuable context about the fixed scope ('all 11 SDK categories') and the specific content returned ('API field names and example SDKs'), which goes beyond what annotations provide. However, it doesn't mention potential limitations like data freshness or update frequency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each serve distinct purposes: the first defines what the tool returns, the second explains when to use it. There is zero wasted language, and the information is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with good annotations, the description provides excellent context about what data is returned and how it connects to sibling tools. The main gap is the lack of output schema, so the description doesn't specify the exact structure of the returned categories list, but this is partially mitigated by mentioning specific content elements ('API field names and example SDKs').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline would be 4. The description appropriately acknowledges this by not attempting to explain non-existent parameters, instead focusing on the tool's purpose and output characteristics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all 11 SDK categories') with precise resources ('tracked by Desktop Insights'), including what information is provided ('API field names and example SDKs for each'). It explicitly distinguishes from sibling tools by mentioning how its output relates to 'search_apps' and 'lookup_app' operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('to discover what filters are available for search_apps' and 'to understand the sdkSummary fields returned by lookup_app'). It clearly positions this as a reference tool for understanding SDK categories before using filtering or lookup operations with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_appARead-only
Look up what SDKs, frameworks, and dependencies a specific desktop application uses. Returns the full technology stack including error tracking, analytics, UI framework, payments, and 7 other SDK categories, plus detailed dependency list with versions. Accepts app names (e.g., "Figma", "Slack", "1Password") or bundle IDs (e.g., "com.figma.Desktop"). Covers 12,000+ macOS and Windows apps.
| Name | Required | Description | Default |
|---|---|---|---|
| app | Yes | App name (e.g., "Figma", "Slack") or bundle ID (e.g., "com.figma.Desktop") | |
| platform | No | Filter by platform. Omit to search both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and open-world hints, but the description adds valuable context beyond this by specifying the scope (e.g., returns full technology stack with 7+ SDK categories, detailed dependency lists with versions, and coverage of 12,000+ apps), enhancing the agent's understanding of what data to expect without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by supporting details (e.g., return content, input examples, coverage), with no wasted words; every sentence adds value, making it efficient and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, rich annotations, and no output schema, the description is mostly complete by detailing return values (technology stack, dependency lists) and input scope. However, it could slightly improve by mentioning potential limitations or error cases, though it adequately supports agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents the parameters ('app' and 'platform'). The description adds minimal extra semantics by mentioning examples like 'Figma' or 'Slack' and bundle IDs, but does not provide significant additional meaning beyond what the schema offers, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Look up') and resource ('SDKs, frameworks, and dependencies a specific desktop application uses'), distinguishing it from siblings like 'compare_apps' or 'search_apps' by focusing on detailed technology stack retrieval rather than comparison or general search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (e.g., for retrieving technology stacks of desktop apps) and mentions coverage of 12,000+ macOS and Windows apps, but does not explicitly state when not to use it or name alternatives like 'compare_apps' or 'search_apps' for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_appsARead-only
Search for desktop applications by SDK usage, runtime, platform, or developer. Use this to find which apps use a specific SDK (e.g., "Which apps use Sentry?"), discover technology adoption patterns, or research a developer's products. Supports all 11 SDK categories, runtime (electron/native/qt/flutter), platform (macos/windows), and developer name. Pass "null" as an SDK value to find apps without that SDK type. At least one filter is required.
| Name | Required | Description | Default |
|---|---|---|---|
| errorTrackingSdk | No | Filter by error tracking SDK (e.g., "Sentry", "Bugsnag"), or "null" for apps with none | |
| analyticsSdk | No | Filter by analytics SDK (e.g., "Mixpanel", "Amplitude") | |
| featureFlagSdk | No | Filter by feature flag SDK (e.g., "LaunchDarkly") | |
| databaseSdk | No | Filter by database SDK (e.g., "SQLite", "electron-store") | |
| uiFramework | No | Filter by UI framework (e.g., "React", "Vue", "SwiftUI") | |
| stateManagement | No | Filter by state management (e.g., "Redux", "Zustand") | |
| paymentsSdk | No | Filter by payments SDK (e.g., "Stripe", "Paddle") | |
| authSdk | No | Filter by auth SDK (e.g., "Auth0") | |
| observabilitySdk | No | Filter by observability SDK (e.g., "OpenTelemetry", "Datadog") | |
| realtimeSdk | No | Filter by realtime SDK (e.g., "Socket.IO", "Pusher") | |
| autoUpdateSdk | No | Filter by auto-update SDK (e.g., "Sparkle", "electron-updater") | |
| runtime | No | Filter by runtime (e.g., "electron", "native", "qt", "flutter") | |
| platform | No | Filter by platform | |
| developer | No | Filter by developer name (partial match) | |
| limit | No | Max results (default 50, max 500) | |
| offset | No | Pagination offset (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and data scope. The description adds valuable context beyond annotations: it specifies that 'null' can be passed as an SDK value to find apps without that SDK type, mentions that developer filtering uses partial match, and notes the requirement for at least one filter. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: it starts with the core purpose, provides usage examples and scenarios, lists filter types, and ends with constraints. Every sentence adds value without redundancy, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (16 parameters) and lack of output schema, the description does well by explaining filter types, usage scenarios, and constraints. However, it doesn't detail the return format (e.g., what fields are included in results) or pagination behavior beyond mentioning limit/offset parameters, leaving some gaps for an agent to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 16 parameters. The description adds some semantic context by mentioning 'all 11 SDK categories' and giving examples like 'Sentry' for SDKs, but it doesn't provide significant additional meaning beyond what's in the schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for desktop applications using specific filters (SDK usage, runtime, platform, developer). It distinguishes from sibling tools like 'compare_apps', 'list_sdk_categories', and 'lookup_app' by emphasizing search functionality with multiple filter dimensions rather than comparison, listing, or single-app lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it specifies when to use this tool (e.g., 'to find which apps use a specific SDK', 'discover technology adoption patterns', 'research a developer's products'), mentions the requirement that 'at least one filter is required', and gives examples of filter types. It implicitly distinguishes from siblings by focusing on multi-filter search rather than other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.3.0- First observed
compare_apps - First observed
list_sdk_categories - First observed
lookup_app - First observed
search_apps
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: compare_apps for side-by-side analysis, list_sdk_categories for metadata discovery, lookup_app for detailed app technology inspection, and search_apps for filtered app discovery. There is no overlap in functionality, and the descriptions explicitly differentiate their use cases, preventing agent misselection.
All tool names follow a consistent verb_noun pattern with snake_case: compare_apps, list_sdk_categories, lookup_app, and search_apps. The verbs (compare, list, lookup, search) accurately reflect the actions, and the nouns (apps, sdk_categories, app) align with the domain, creating a predictable and readable naming convention throughout.
With 4 tools, this server is well-scoped for its purpose of desktop application technology analysis. Each tool earns its place by covering distinct aspects: metadata listing, app lookup, search with filters, and comparison. The count is neither too thin nor bloated, fitting the domain's core workflows efficiently.
The tool surface provides comprehensive coverage for technology stack analysis, including discovery (list_sdk_categories), inspection (lookup_app), search (search_apps), and comparison (compare_apps). A minor gap exists in update or management operations (e.g., adding new apps or SDKs), but this is reasonable for a read-only analysis server, and agents can work around it with the provided tools.
Maintenance
Related MCP Connectors
Technographics — what a website is built with, read from the page itself.
Detect 7,500+ technologies on any website - CMS, ecommerce, analytics, frameworks. ~$5/1,000 sites.
Detect the tech stack behind any website: CMS, ecommerce, analytics, CRM, payments, hosting.
Domain & brand intelligence: company enrichment, tech stack detection, brand research.
Related MCP Servers
- AlicenseAqualityAmaintenanceDetects a company's technology stack from its public web presence. Returns structured tech signals for sales targeting and competitive analysis.1136 npm1MIT
- AlicenseAqualityAmaintenanceVisual tech-stack inventory of any codebase: languages, frameworks, databases, AI SDKs, infra.2MIT
- FlicenseNot gradedqualityBmaintenanceDetects what technologies (CMS, frameworks, analytics, etc.) a website uses by fingerprinting its HTTP response and markup, returning confidence-scored results for single or bulk URL queries.-
- AlicenseNot gradedqualityBmaintenanceDetects 50+ technologies on any website (CMS, JS frameworks, analytics, hosting, etc.) with confidence scores and evidence, using x402 micropayments.MIT