Essentials

io.github.fieldcure由 GitHub 帳號 fieldcure 發布v2.6.1更新於 Oct 24, 2026

Essential MCP server: HTTP, web search, downloads, Wolfram|Alpha, shell, JS, file I/O, memory.

概覽

AI 產生的概覽

在本機執行的 .NET MCP 伺服器,內含 20 個通用工具:HTTP 請求、網頁搜尋與擷取、下載、Shell、JavaScript、檔案讀寫、Wolfram|Alpha 與持久記憶。

可以做什麼
  • 發出 HTTP 請求並擷取網頁,把 HTML 與文件(PDF、DOCX、HWPX、PPTX、XLSX)轉成 Markdown
  • 進行網頁搜尋,並透過 API 引擎搜尋新聞、圖片、學術論文與專利,可在執行時切換引擎
  • 把 URL 內容下載到磁碟,並讀取、寫入或依內容搜尋本機檔案
  • 執行 Shell 指令與沙箱內的 JavaScript,用於計算與資料處理
  • 呼叫 Wolfram|Alpha 處理數學、單位換算與繪圖,並讀取系統環境資訊
  • 在本機 SQLite 資料庫中儲存、搜尋與刪除持久化的鍵值記憶
適用情境
適合想用一個本機伺服器涵蓋助理日常需求(網頁查詢、檔案存取、Shell 與腳本執行、簡單記憶),而不必安裝多個專用伺服器的情況。適用於桌面端的資料查找、文件閱讀與小型資料處理。
執行需求
以本機 stdio 程序執行,需要 .NET 8.0 或更新版本的執行環境(可安裝為 dotnet 工具或從原始碼建置),僅限桌面端。預設使用免費的 Bing/DuckDuckGo 擷取,無需金鑰;可選金鑰透過 SERPER_API_KEY、SERPAPI_API_KEY、TAVILY_API_KEY 或 ESSENTIALS_SEARCH_API_KEY 提供,Wolfram|Alpha 需要 WOLFRAM_APPID。路徑可用 ESSENTIALS_DOWNLOAD_DIRECTORY、ESSENTIALS_MEMORY_PATH、ESSENTIALS_SETTINGS_PATH 與 ESSENTIALS_SEARCH_ENGINE 設定。
安裝前請注意
run_command 會執行任意 Shell 指令,write_file、download_file 與 forget 會變更或刪除資料,皆標示為破壞性操作。伺服器可在使用者電腦上讀寫檔案並連上網路,應只在可信任的情境使用。API 金鑰可能透過 MCP Elicitation 索取,並在程序生命週期內快取;SerpApi 將金鑰放在 URL 查詢參數中,可能出現在日誌裡。免費搜尋引擎依賴擷取,可能不穩定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Essentials,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

FieldCure MCP Essentials

[NuGet] [License: MIT]

Install once, get the basics. A Model Context Protocol (MCP) server that provides 20 essential tools — HTTP requests, web search & fetch, URL file downloads, Wolfram|Alpha computational knowledge, shell commands, JavaScript execution, file I/O, environment info, and persistent memory — for any MCP client. Category search (news, images, scholar, patents) and runtime engine switching (get/set) are always available; capabilities are guarded at invocation time against the active engine. Built with C# and the official MCP C# SDK.

Features

  • 20 essential tools — HTTP, web search & fetch, URL file downloads, runtime search-engine switching (get/set), Wolfram|Alpha, shell, JavaScript sandbox, environment info, file read/write/search, persistent memory + category search (news, images, scholar, patents)
  • Zero configuration — no API keys needed for default Bing search; optional API keys unlock Serper, Tavily, SerpApi (+ category search tools), and Wolfram|Alpha
  • Document parsing — web_fetch and read_file extract text from PDF, DOCX, HWPX, PPTX, XLSX into Markdown. PDF text extraction is text-layer only; scanned PDFs without a text layer yield empty text. For OCR-backed indexing use fieldcure-mcp-rag.
  • Sandboxed JavaScript — Jint engine with strict limits (timeout, statement count, recursion depth)
  • SSRF protection — HTTP requests, web fetch, and file downloads block private IP ranges and loopback addresses
  • Cross-client — works with Claude Desktop, VS Code, AssistStudio, and any MCP-compatible client
  • Stdio transport — standard MCP subprocess model via JSON-RPC over stdin/stdout

Installation

bash
dotnet tool install -g FieldCure.Mcp.Essentials

After installation, the fieldcure-mcp-essentials command is available globally.

From source

bash
git clone https://github.com/fieldcure/fieldcure-mcp-essentials.gitcd fieldcure-mcp-essentialsdotnet build

Requirements

Tools

ToolDescriptionDestructive
http_requestFull HTTP client (GET/POST/PUT/DELETE/PATCH/HEAD) with custom headers and body—
web_searchSearch the web and return snippets (title, URL, description)—
web_fetchFetch a URL and extract content as Markdown — HTML pages and documents (PDF, DOCX, HWPX, PPTX, XLSX)—
download_fileDownload URL content to disk with a configurable download directory, 100 MB limit, and atomic saveYes
run_commandExecute shell commands with working directory, environment variables, shell selection, and output truncation flagsYes
run_javascriptSandboxed JavaScript execution (Jint) for math, data processing, JSON, regex—
wolfram_alphaWolfram|Alpha Full Results API — symbolic math, plots, unit conversions, constants; MathML passes through for native rendering—
get_environmentSystem info — local time, timezone, OS, hostname, username, .NET version—
read_fileRead files — text with offset/limit, documents (PDF, DOCX, HWPX, PPTX, XLSX) parsed to Markdown—
write_fileWrite or append text to files with auto directory creationYes
search_filesSearch files by glob pattern and content (grep-like)—
rememberStore a key-value memory (persisted in SQLite)—
forgetDelete memories by key or keyword searchYes
list_memoriesSearch and list stored memories with FTS5 and pagination—

Category Search (SerpApi / Serper / Tavily)

Always registered. Each tool runtime-guards on the active engine's capabilities and returns a descriptive error pointing at set_search_engine when the current engine does not support the category.

ToolDescriptionSerpApiSerperTavily
search_newsSearch recent news articles via Google NewsYesYesYes
search_imagesSearch images with size/type filteringYesYes—
search_scholarSearch academic papers with citation countsYesYes—
search_patentsSearch patent documents with inventor/assignee filteringYesYes—

Runtime engine switching

ToolDescription
set_search_engineSwitch the active engine (bing, duckduckgo, serper, tavily, serpapi) at runtime. Paid-engine API keys resolve lazily via env var or MCP Elicitation on the next search; the switch itself takes only the engine name. Emits notifications/tools/list_changed on success.
get_search_engineReturn the currently active engine and its category capabilities. Read-only; use this to reflect live engine state in host UIs or to check category support before calling a category search tool.

web_search vs web_fetch vs download_file vs http_request

http_requestweb_searchweb_fetchdownload_file
PurposeAPI calls, raw HTTPWeb searchRead web pagesSave original files
ResponseRaw (JSON, HTML, etc.){title, url, snippet}[]Markdown (body only)JSON metadata with saved path
ConversionNoneNoneSmartReader HTML → MarkdownNone
Length limitmax_response_chars (default: unlimited, up to 1MB)max_results (max 10)max_length (max 20000)100 MB

Document Parsing

web_fetch and read_file can parse binary documents into Markdown:

FormatExtensionDetection
PDF.pdfContent-Type / URL extension (text layer only; no OCR)
Word.docxContent-Type / URL extension
Hangul (HWPX).hwpxURL extension (no standard Content-Type)
PowerPoint.pptxContent-Type / URL extension
Excel.xlsxContent-Type / URL extension

Output includes headings, tables, math expressions ([math: LaTeX]), and slide/page separators.

File Downloads

download_file saves the original bytes from an HTTP(S) URL. If save_path is omitted, the tool infers a filename from Content-Disposition, the URL path, or a generated fallback name. Relative save_path values resolve under the configured download_directory; absolute paths are used as-is except for protected system directories.

The default download directory is ~/Downloads/mcp and is created automatically on first use. Downloads are written to a temporary file in the destination directory and then committed with an atomic move/replace, so failed or cancelled downloads do not leave a partial final file.

json
{  "url": "https://example.com/report.pdf"}
json
{  "url": "https://example.com/report.pdf",  "save_path": "reports/report.pdf",  "overwrite": false}

Web Search

Default engine is Bing (free, no API key needed). For more reliable results, use an API-based engine:

EngineFree TierCategory SearchAPI Key
Bing (default)Unlimited (scraping)—Not needed
Serper2,500 one-timenews, images, scholar, patentsserper.dev
SerpApi100/monthnews, images, scholar, patentsserpapi.com
Tavily1,000/monthnewstavily.com
bash
# Use Serperfieldcure-mcp-essentials --search-engine serper --search-api-key YOUR_KEY
# Use Tavilyfieldcure-mcp-essentials --search-engine tavily --search-api-key YOUR_KEY
# Or via environment variablesESSENTIALS_SEARCH_ENGINE=serper ESSENTIALS_SEARCH_API_KEY=xxx fieldcure-mcp-essentials

Environment Variable Auto-Detection

When --search-engine is omitted, the server scans environment variables and automatically selects the best available engine:

EngineEnvironment Variable
SerperSERPER_API_KEY
SerpApiSERPAPI_API_KEY
TavilyTAVILY_API_KEY

Detection priority: Serper → SerpApi → Tavily → Bing/DuckDuckGo fallback.

API Key Security

EngineAuth MethodKey Exposure
SerperHTTP header (X-API-KEY)Not in URL
TavilyAuthorization header (Bearer token)Not in URL
SerpApiURL query parameter (api_key=xxx)Visible in server logs

Region

Use the region parameter for localized results:

json
// Korean results{ "query": "서울 맛집", "region": "ko-kr" }
// US English results{ "query": "best restaurants NYC", "region": "en-us" }
// Global (default){ "query": "Python tutorial" }

Without --search-engine, a fallback engine (Bing → DuckDuckGo) auto-switches on CAPTCHA. Free engines rely on scraping and may be intermittent — an API-based engine is strongly recommended for any non-trivial use.

Explicit paid engine without a key — MCP Elicitation

When --search-engine serper|tavily|serpapi is selected explicitly but no API key is configured (CLI arg, ESSENTIALS_SEARCH_API_KEY, or engine-specific env var), the server waits until the first web_search call and then asks the MCP client for the key via MCP Elicitation. If the user declines, a follow-up prompt asks whether to run the search with free Bing/DuckDuckGo instead. Declining both lets the tool soft-fail with a clear message so the LLM can recover.

Clients without Elicitation support (including older CLI hosts) fall back to the free engine immediately, matching the pre-2.1 behaviour. Cached keys live for the process lifetime; the host can re-elicit after an upstream 401/403 if the tool invalidates the cache.

Wolfram|Alpha

wolfram_alpha calls the Full Results API v2 and returns mixed content — plaintext, MathML (passed through verbatim for clients that render MathML natively, e.g. ChatPanel/WebView2), and plot images embedded as ImageContent. The API's reinterpret=true flag is always on so most typo-level failures auto-correct server-side; only real parse failures surface isError: true with assumptions > tips > didyoumeans guidance.

AppID

Set WOLFRAM_APPID to the AppID obtained at developer.wolframalpha.com (select "Full Results API"; free tier: 2,000 calls/month, non-commercial). On MCP clients that support Elicitation the key can also be supplied interactively on first use. A rejected AppID (401/403) triggers a single invalidate-and-retry so a mistyped key can be re-elicited; the existing ApiKeyResolverRegistry re-elicit cap (2 per env-var slot) prevents loops.

⚠️ Use developer.wolframalpha.com, not developer.wolfram.com — the latter is a separate paid portal and will show "no permission to access any API keys" for free accounts.

The tool is always registered regardless of AppID status; without a key it returns a setup-guidance error so the model can inform the user instead of silently skipping.

Query tips (surfaced in the tool description)

  • English only, simplified keyword form ('France population', not 'how many people live in France')
  • Exponent notation 6*10^14, never 6e14
  • Single-letter variables (x, y, n)
  • Named physical constants ('speed of light', not 299792458)
  • For equations with units, solve without units first
  • RECOMMENDED / AVOID hints steer the model — simple arithmetic to run_javascript, general web queries to web_search, subjective/news questions away from Wolfram

JavaScript Sandbox

run_javascript uses the Jint engine with strict limits:

ConstraintValue
Timeout5s default, 30s max
Max statements100,000
Recursion depth64
Strict modeEnforced

Allowed: Math.*, JSON, Date, RegExp, console.log, string/array methods, parseInt, encodeURIComponent, atob/btoa

Blocked: setTimeout, setInterval, require, import, .NET interop, eval()

Variables can be injected into the script scope for data pipeline use:

1. http_request(url: "https://api.example.com/data") → {"items": [...]}2. run_javascript(     code: "data.items.filter(x => x.price > 100).map(x => x.name)",     variables: {"data": {"items": [...]}}   )

Run Command

run_command defaults to the backward-compatible shell for the host: cmd.exe on Windows and /bin/sh on Unix. Use shell when a command requires specific syntax:

ShellNotes
autoDefault; cmd.exe on Windows, /bin/sh on Unix
pwshPowerShell Core; recommended for PowerShell-native commands when installed
powershellWindows PowerShell fallback for Windows hosts without pwsh
cmdExplicit Windows cmd.exe
bashExplicit Bash when available
shExplicit POSIX shell when available

Verbose output is capped per stream with max_output_chars (default 100,000). Responses include shell_used, stdout_truncated, and stderr_truncated; truncated streams include an inline marker with the omitted character count.

Memory

Memories are stored in SQLite (%LOCALAPPDATA%/FieldCure/Mcp.Essentials/memory.db) and shared across all MCP clients on the same machine.

bash
# Custom memory pathfieldcure-mcp-essentials --memory-path /path/to/memory.db
# Or via environment variableESSENTIALS_MEMORY_PATH=/path/to/memory.db fieldcure-mcp-essentials

Configuration

Essentials settings

The default settings file is:

  • Windows: %LOCALAPPDATA%/FieldCure/Mcp.Essentials/settings.json
  • macOS/Linux: the platform local app-data folder plus FieldCure/Mcp.Essentials/settings.json
json
{  "download_directory": "~/Downloads/mcp"}

Download directory precedence is:

  1. CLI: --download-directory <path>
  2. Environment: ESSENTIALS_DOWNLOAD_DIRECTORY
  3. Settings file: download_directory
  4. Default: ~/Downloads/mcp

Use --settings-path <path> or ESSENTIALS_SETTINGS_PATH to point at a different settings file.

Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "essentials": {      "command": "fieldcure-mcp-essentials"    }  }}

With a search engine:

json
{  "mcpServers": {    "essentials": {      "command": "fieldcure-mcp-essentials",      "args": ["--search-engine", "serper", "--search-api-key", "YOUR_KEY"]    }  }}

VS Code (Copilot)

Add to .vscode/mcp.json:

json
{  "servers": {    "essentials": {      "command": "fieldcure-mcp-essentials"    }  }}

From source (without dotnet tool)

json
{  "mcpServers": {    "essentials": {      "command": "dotnet",      "args": [        "run",        "--project", "C:\\path\\to\\fieldcure-mcp-essentials\\src\\FieldCure.Mcp.Essentials"      ]    }  }}

Data Storage

DataLocation
Memory database%LOCALAPPDATA%/FieldCure/Mcp.Essentials/memory.db
Settings file%LOCALAPPDATA%/FieldCure/Mcp.Essentials/settings.json
Default downloads~/Downloads/mcp
Search API keysEnvironment variables (SERPER_API_KEY, TAVILY_API_KEY, SERPAPI_API_KEY)

Project Structure

src/FieldCure.Mcp.Essentials/├── Program.cs                  # MCP server entry point (stdio)├── Configuration/│   └── EssentialsSettings.cs   # Server settings and download directory resolution├── Http/│   └── SsrfGuard.cs            # SSRF protection (shared by http_request & web_fetch)├── Memory/│   └── MemoryStore.cs          # SQLite + FTS5 memory storage├── Search/│   ├── ISearchEngine.cs        # Search engine interface│   ├── ICategorySearchEngine.cs # Category search interface (news, images, scholar, patents)│   ├── SearchResult.cs         # Search result record│   ├── BingSearchEngine.cs     # Bing scraping (default)│   ├── DuckDuckGoSearchEngine.cs  # DuckDuckGo lite scraping│   ├── FallbackSearchEngine.cs # Auto-rotate on CAPTCHA│   ├── SerperSearchEngine.cs   # Serper.dev API (+ category search)│   ├── TavilySearchEngine.cs   # Tavily API (+ news)│   └── SerpApiSearchEngine.cs  # SerpApi API (+ category search)└── Tools/    ├── HttpRequestTool.cs      # http_request    ├── WebSearchTool.cs        # web_search    ├── WebFetchTool.cs         # web_fetch (SmartReader)    ├── DownloadFileTool.cs     # download_file    ├── CategorySearchTools.cs  # search_news / search_images / search_scholar / search_patents    ├── RunCommandTool.cs       # run_command    ├── RunJavaScriptTool.cs    # run_javascript (Jint sandbox)    ├── WolframAlphaTool.cs     # wolfram_alpha (Full Results API, MathML pass-through)    ├── GetEnvironmentTool.cs   # get_environment    ├── ReadFileTool.cs         # read_file    ├── WriteFileTool.cs        # write_file    ├── SearchFilesTool.cs      # search_files    └── MemoryTools.cs          # remember / forget / list_memories

Development

bash
# Builddotnet build
# Testdotnet test
# Pack as dotnet tooldotnet pack src/FieldCure.Mcp.Essentials -c Release

See Also

Part of the AssistStudio ecosystem.

License

MIT

來源:README.md,提交 fdf4487

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2.6.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分