Native Shell
Native Shell:AI 生成的 UI,在你的應用中原生呈現,涵蓋每個平台。iOS、Android、macOS、Windows 與 Linux 上的應用、GPUI 應用與網頁在執行時載入已簽名、沙箱隔離的 TSX 模組並繪製 th
AI 翻譯
MCP server for connecting AI assistants to Nestr
翻譯準備中
開發工具TypeScript · HTMLGitHub @nestr-dev自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
安裝型專案無需部署網域也可驗證。個人儲存庫可透過 GitHub 登入驗證,組織儲存庫可使用上方的儲存庫驗證檔案。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗MCP (Model Context Protocol) server for Nestr - connect AI assistants like Claude to your workspace.
This MCP server allows AI assistants to interact with your Nestr workspace:
Visit mcp.nestr.io for the easiest setup with step-by-step instructions for Claude Desktop, Claude Code, and Cursor.
Nestr and Remote MCP URL to https://mcp.nestr.io/mcpclaude mcp add nestr --transport http https://mcp.nestr.io/mcp
Then run /mcp in Claude Code and click "Authenticate" to log in.
If you prefer to run the MCP server locally:
npx @nestr/mcp
Configure your AI client with:
{
"mcpServers": {
"nestr": {
"command": "npx",
"args": ["-y", "@nestr/mcp"],
"env": {
"NESTR_API_KEY": "your-api-key-here"
}
}
}
}
To get an API key:
Ask your AI assistant things like:
| Tool | Description |
|---|---|
nestr_list_workspaces | List accessible workspaces |
nestr_get_workspace | Get workspace details |
nestr_create_workspace | Create a new workspace (OAuth only) |
nestr_search | Search for nests (tasks, projects, roles) |
nestr_get_me | Get current user identity and workspace list |
| Tool | Description |
|---|---|
nestr_get_nest | Get details of a specific nest (supports batch fetch with comma-separated IDs; single-nest provenance/rights/whoCan flags available) |
nestr_explain_nest | Diagnose one nest: field/property provenance (which label/circle defines each), the caller's composed rights with a deny trace, and (with whoCan) who can act on it and who to contact |
nestr_get_nest_children | Get child nests |
nestr_create_nest | Create a new nest |
nestr_update_nest | Update nest properties |
nestr_delete_nest | Delete a nest |
nestr_reorder_nest | Reorder a nest relative to another |
nestr_bulk_reorder | Bulk reorder multiple nests |
nestr_add_label | Add a label to a nest |
nestr_remove_label | Remove a label from a nest |
| Tool | Description |
|---|---|
nestr_set_recurrence | Set or remove a task, project or meeting's recurrence rule |
nestr_list_occurrences | List a series' occurrences, virtual and materialized, each with the instant the tools below take |
nestr_skip_occurrence | Skip one occurrence without ending the series, or with scope: "following" delete it and every later one |
nestr_update_occurrence | Edit one occurrence, materializing it first if it is still virtual |
nestr_delete_series | Delete a whole series, past occurrences included |
| Tool | Description |
|---|---|
nestr_add_comment | Add a comment to a nest |
nestr_get_comments | Get comments/discussion on a nest |
nestr_get_nest_activity | What happened on a nest and beneath it, with each change as data |
nestr_update_comment | Update a comment |
nestr_delete_comment | Delete a comment |
| Tool | Description |
|---|---|
nestr_list_circles | List organizational circles |
nestr_get_circle | Get circle details |
nestr_get_circle_roles | Get roles in a circle with accountabilities and domains |
nestr_list_roles | List all roles |
nestr_list_users | List workspace members |
nestr_get_user | Get user details |
nestr_add_workspace_user | Add a user to the workspace and email them an invite (API provisioning needs a verified domain; the in-app invite does not) |
| Tool | Description |
|---|---|
nestr_create_tension | Create a tension on a circle or role |
nestr_get_tension | Get tension details |
nestr_list_tensions | List tensions on a circle or role |
nestr_update_tension | Update a tension |
nestr_delete_tension | Delete a tension |
nestr_get_tension_parts | Get proposal parts of a tension |
nestr_add_tension_part | Add a proposal part (new/changed governance item) |
nestr_modify_tension_part | Modify a proposal part |
nestr_remove_tension_part | Remove a proposal part |
nestr_get_tension_part_children | Get children (accountabilities/domains) of a proposal part |
nestr_create_tension_part_child | Add a child to a proposal part |
nestr_update_tension_part_child | Update a proposal part child |
nestr_delete_tension_part_child | Delete a proposal part child |
nestr_get_tension_changes | Preview the diff a proposal part would apply |
nestr_get_tension_status | Get voting status for a tension |
nestr_update_tension_status | Submit for voting or retract to draft |
| Tool | Description |
|---|---|
nestr_get_graph_links | Get nests linked via a named relation (e.g., meeting agenda items) |
nestr_add_graph_link | Create a bidirectional link between two nests |
nestr_remove_graph_link | Remove a link between two nests |
| Tool | Description |
|---|---|
nestr_list_labels | List workspace labels |
nestr_get_label | Get label details |
nestr_create_label | Create a workspace label (workspace admin) |
nestr_update_label | Edit a workspace label's title, color, icon, group, properties or fields (workspace admin) |
nestr_delete_label | Delete a workspace label, with confirm: true (workspace admin) |
nestr_get_projects | List projects with status |
| Tool | Description |
|---|---|
nestr_get_insights | Get workspace metrics |
nestr_get_insight_history | Get historical trend data for a metric |
nestr_list_series | List a nest's dataseries (metric history, goal progress, burndown) |
nestr_get_series_points | Read a dataseries' dated points |
nestr_add_series_points | Load up to 500 dated points, e.g. a backfill |
nestr_update_series_point | Change a point's date or value |
nestr_delete_series_point | Remove a point |
nestr_get_workspace_apps | List enabled apps/features |
| Tool | Description |
|---|---|
nestr_get_me | Get current user identity and workspaces |
nestr_list_inbox | List items in user's inbox |
nestr_create_inbox_item | Quick capture to inbox |
nestr_get_inbox_item | Get inbox item details |
nestr_update_inbox_item | Update inbox item |
nestr_reorder_inbox | Reorder inbox items |
nestr_list_personal_labels | List user's personal labels |
nestr_create_personal_label | Create a personal label |
nestr_get_daily_plan | Get items marked for today |
nestr_add_to_daily_plan | Add items to today's focus |
nestr_remove_from_daily_plan | Remove items from today's focus |
nestr_list_my_tensions | List tensions authored by or assigned to you |
nestr_list_tensions_awaiting_consent | List governance proposals needing your vote |
MCP Apps are interactive UI components that can be embedded in MCP clients that support them (like Claude.ai). They provide rich, visual interfaces for working with Nestr data.
Resource URI: ui://nestr/completable-list
An interactive list for viewing and completing tasks and projects.
Features:
Usage: When an AI assistant returns task or project results, supporting clients can render this interactive UI instead of plain text, allowing you to complete items, edit titles, and reorder directly in the chat.
The hosted service at mcp.nestr.io handles OAuth automatically. Just add the server and authenticate through your browser.
OAuth respects user-specific permissions - the AI assistant can only access what the authenticated user can access.
API keys provide full workspace access and work with the local npm package. See Quick Start above.
Note: API keys have full workspace access regardless of user permissions.
| Variable | Description |
|---|---|
NESTR_API_KEY | Nestr API key (full workspace access) |
NESTR_OAUTH_TOKEN | OAuth token (respects user permissions) |
* Either NESTR_API_KEY or NESTR_OAUTH_TOKEN is required for local usage.
| Variable | Description | Default |
|---|---|---|
NESTR_API_BASE | API base URL | https://app.nestr.io/api |
NESTR_UPLOAD_DIRS | Extra folders nestr_upload_file may read a filePath from, separated by : (; on Windows). ~ is your home folder. Hidden files and folders are always refused. | The working directory only, unless it is / or your home folder |
These are used when running the HTTP server for hosted deployments:
| Variable | Description | Default |
|---|---|---|
PORT | HTTP server port | 3000 |
NESTR_OAUTH_CLIENT_ID | OAuth client ID for hosted OAuth flow | - |
NESTR_OAUTH_CLIENT_SECRET | OAuth client secret | - |
OAUTH_ENCRYPTION_KEY | 32-byte base64 key for encrypting OAuth sessions at rest | - |
GTM_ID | Google Tag Manager container ID for landing page | - |
Server-side analytics options:
GA4 Measurement Protocol:
| Variable | Description |
|---|---|
GA4_MEASUREMENT_ID | GA4 Measurement ID (e.g., G-XXXXXXXXXX) |
GA4_API_SECRET | Measurement Protocol API secret |
GA4_DEBUG | Set to true to validate events without recording |
Note: Both GA4_MEASUREMENT_ID and GA4_API_SECRET are required for GA4 tracking. If only the measurement ID is set, a warning is logged and tracking is disabled.
MCPcat (MCP-specific analytics):
| Variable | Description |
|---|---|
MCPCAT_PROJECT_ID | MCPcat project ID (from mcpcat.io) |
MCPCAT_ENABLE_REPLAY | Enable session replay (default: false) |
# Clone the repository
git clone https://github.com/nestr-dev/nestr-mcp.git
cd nestr-mcp
# Install dependencies
npm install
# Set your API key
export NESTR_API_KEY=your-api-key
# Run in development mode (stdio)
npm run dev
# Run HTTP server for local testing
npm run dev:http
# Build for production
npm run build
# Test with MCP Inspector
npm run inspect
SECURITY.md is the full policy: how to report a vulnerability, what the three authorisation surfaces reach, and what this server does and does not store. The essentials:
/mcp/readonly for any integration that only needs to readOAuth tokens expire and are refreshed for you. The server holds the refresh token with the session and renews the access token as it nears expiry, so a long-lived client keeps working without re-authorising. Revoke a session from Nestr and the next refresh fails - access stops there. Nothing to rotate by hand.
API keys do not expire. A workspace API key stays valid until a workspace admin revokes it in Nestr under Settings > Integrations > Workspace API access. That makes rotation your job rather than the server's:
/mcp/readonly, whenever the
integration only readsMIT - see LICENSE