
Linear Project
org.openlyuseful由 openlyuseful.org 發布v0.1.0更新於 Oct 24, 2026
Scope-gated Linear project administration with optional GitHub and Obsidian evidence adapters
發布方自己的服務:Linear
概覽
一個受範圍閘控的本機 MCP 伺服器,用於管理 Linear 專案,並可選用唯讀 GitHub 證據與本機 Obsidian 筆記轉接器。
- 可以做什麼
- 它提供讀取工具來回報能力、解析精確的團隊/專案/標籤範圍、列出範圍內議題、尋找對帳候選,以及讀取允許清單內的 GitHub 證據或 Obsidian 筆記。寫入工具可建立或重用團隊、引導專案與標籤、冪等建立或更新範圍內議題、移動已審核候選、關聯證據,並更新筆記中由伺服器管理的部分。變更操作需要字面確認欄位,且全域寫入必須已啟用。
- 適用情境
- 當助理需要以精確範圍標籤管理 Linear 專案工作流程時使用,例如建立專用團隊或子團隊、引導專案與首個議題,或關聯 GitHub 與本機 Obsidian 證據。它面向受控且需明確確認的操作,而非無人值守的自動化。
- 執行需求
- 透過 stdio 在本機執行,需要 Node.js 20 或更新版本以及 pnpm 10。需要 Linear API 金鑰或 OAuth 存取權杖、精確的 Linear 組織 ID,以及團隊、專案與範圍代碼的允許清單。選用轉接器需要帶倉庫允許清單的 GitHub 權杖,或絕對路徑的 Obsidian 儲存庫及允許目錄。寫入需要 MCP_WRITES_ENABLED、未來的 MCP_WRITE_WINDOW_EXPIRES_AT 與稽核記錄路徑。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Linear Project,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Linear Project MCP Server
A scope-gated Model Context Protocol server for administering Linear project workflows, with optional read-only GitHub evidence and local Obsidian note adapters.
The server complements the three skills in this repository. It supplies the integration capabilities those workflows need when an existing connector cannot create teams, enforce exact scope labels, or link local evidence safely.
What it supports
Linear identifiers belong to teams, not projects or labels. The server rejects a request that expects ACQI-1 on an existing OPEN team before creating a project, label, note, or issue. A first-identifier readback is an immediate safety check, not a concurrency lock; avoid simultaneous writers while bootstrapping the first issue.
Historical captures are separate from active work. They receive an exact [HISTORICAL] title prefix, the scope and HISTORICAL labels, Historical only: true, Actionability: none, and a deterministic source marker for replay safety.
Tools
All tools use strict input schemas and structured output. Mutating tools require a literal confirmation field, and global writes must also be enabled.
Install and build
Requirements: Node.js 20 or newer and pnpm 10. pnpm 11 requires Node.js 22 or newer and cannot validate the Node.js 20 compatibility floor.
The npm package name is @openly-useful/linear-project-mcp-server. It installs the linear-project-mcp-server protocol server and the bounded linear-project-mcp-write-window safety helper. The package can be run with npx @openly-useful/linear-project-mcp-server only after the first successful npm release. Until then, build and run it from a source checkout as shown below.
The official MCP Registry name is org.openlyuseful/linear-project. server.json, package.json.mcpName, the npm package version, and the registry package version must agree. The repo-local Openly Useful publisher projection records the founder-individual as current operator and a founder-owner authorization that is effective while LLC formation remains pending. prepublishOnly verifies that authorization and the exact npm identity, policies, namespace, repository provenance, and registration metadata. Provider authentication and review remain separate MCP Registry steps; builds, tests, validation, and pnpm pack --dry-run do not publish the record.
Configure
Copy .env.example and provide only the adapters you need.
Linear accepts either LINEAR_API_KEY or LINEAR_ACCESS_TOKEN. Every scoped Linear read and mutation requires an exact LINEAR_ALLOWED_ORGANIZATION_ID; every mutation additionally requires:
MCP_WRITES_ENABLED=true;- a future
MCP_WRITE_WINDOW_EXPIRES_ATno more than 60 minutes away; - a safe, writable
MCP_AUDIT_LOG_PATHwhen using the bundled write-window helper; - the exact code in
LINEAR_ALLOWED_SCOPE_CODES, such asACQI; - the destination team's ID in
LINEAR_ALLOWED_TEAM_IDS, unless it is a dedicated team whose key exactly equals the scope code; - the project ID in
LINEAR_ALLOWED_PROJECT_IDSwhen that optional allowlist is non-empty; - the mutating tool's literal confirmation field set to
true.
For a new ACQI subteam, allowlist the parent team ID, select team_mode: "subteam", pass parent_team_id, and use team_key: "ACQI". The authenticated Linear identity must have permission to create teams in the workspace.
Leave LINEAR_ALLOWED_PROJECT_IDS empty only for the initial project bootstrap, because a new project's ID does not exist yet. After readback, add that exact ID before ongoing operation. Existing projects must already be allowlisted when the project-ID allowlist is non-empty, and all scoped operations require the exact scope project label.
GitHub is optional. Configure GITHUB_TOKEN and exact owner/name entries in GITHUB_ALLOWED_REPOSITORIES. The adapter makes GET requests only; use a fine-grained token with read-only metadata and contents, pull-request, or issue access required by the references you plan to inspect.
Obsidian is optional and local. OBSIDIAN_VAULT_PATH must be absolute, OBSIDIAN_ALLOWED_DIRECTORIES contains vault-relative directories, and OBSIDIAN_VAULT_NAME enables obsidian:// links. Only .md files under those directories are accessible. Traversal, symlinks, non-Markdown paths, and files over 200,000 bytes are rejected. Linking a note to Linear sends only its Obsidian URI and title, not its contents.
For operation auditing, set MCP_AUDIT_LOG_PATH to a normalized absolute path outside the repository. Its parent directory must already exist, belong to the current user, and not be group- or world-writable. The server appends compact NDJSON attempt/outcome records with operation IDs, tool names, modes, durations, outcomes, and safe error classes; it never logs tool arguments, result bodies, descriptions, credentials, or error messages. Once auditing is configured, an unavailable audit sink blocks writes before workflow execution and marks reads as audit-degraded.
Connect Codex
Use linear_project as the canonical Codex registration alias. This alias is a local client configuration key; it is intentionally different from the npm package and executable names.
From the server directory in a source checkout:
After the first npm release is available, a version-pinned registry installation can instead be registered with:
Do not add API tokens with codex mcp add --env, because that stores the supplied value in the local Codex configuration. Use a protected launcher or operating-system secret store that exports credentials only to the child process. Non-secret allowlist settings may be stored in client configuration, but the repository must never contain real organization, team, project, repository, or vault values.
After registration, start a new Codex task if the current task's tool registry does not refresh. In that new task:
- Confirm the
linear_projecttools are visible. - Call
linear_project_capabilitiesand confirmwritesEnabledisfalse, Linear is reachable, and the organization is allowed. - Call
linear_project_resolve_scopefor the intended scope code and confirm the exact team, project, issue label, and project label all resolve.
Keep the package names distinct when troubleshooting:
Connect another MCP client
Build the server, then configure a local stdio process in the client. The exact configuration key varies by client; a typical shape is:
The protected launcher should load credentials from the client's secret store or protected process environment and then replace itself with the linear-project-mcp-server process. Do not commit the launcher, .env, or client configuration containing secrets.
Recommended operating sequence
- Start with writes disabled and call
linear_project_capabilities. - Resolve or inspect the exact destination with read-only tools.
- Configure the narrowest organization, team, project, scope, repository, and note-directory allowlists.
- Enable writes only for the intended operation.
- Bootstrap or upsert using deterministic source markers.
- Read back results and replay the operation; a completed import should create zero additional records.
- Disable writes again.
Configuration is read when a server process starts. Enabling or disabling MCP_WRITES_ENABLED therefore requires reconnecting or restarting the relevant MCP client session before checking capabilities or invoking a write. A safe write window is:
- Resolve and inspect the exact scope with writes disabled.
- Stop the connected server process, use the bounded helper against the protected runtime environment, and reconnect.
- Call
linear_project_capabilitiesand confirm the expected write state and allowlists before one explicitly confirmed mutation. - Read the mutated record back and replay the same deterministic operation; the replay must report zero additional changes.
- Stop the server process, disable the window with the helper, reconnect, and confirm the disabled state through
linear_project_capabilities.
If any scope readback, replay, or disabled-state check fails, stop and leave writes disabled.
The helper accepts a 1–60 minute window, requires the scope code twice on enable, requires nonempty organization/team/project/scope allowlists plus MCP_AUDIT_LOG_PATH, and never extends a window implicitly. Use a protected environment file outside the repository:
enable writes MCP_WRITES_ENABLED=true and a bounded RFC 3339 MCP_WRITE_WINDOW_EXPIRES_AT. disable restores MCP_WRITES_ENABLED=false and clears the expiry. Every settings change requires reconnecting or restarting the server process; expiry is an additional fail-closed limit, not a substitute for disabling and reconnecting after the operation.
This server does not run a daemon, watch files, move reconciliation candidates automatically, or mark issues Done based only on repository evidence. The separate move tool requires exact source-state input and explicit confirmation; cross-team moves additionally require acknowledgement of identifier change and source-label replacement. Ongoing updates happen only when an MCP client explicitly invokes a tool.
Transport and deployment
The current release supports local stdio. That is intentional for the Obsidian adapter, which reads a local vault. A future remote deployment should use the MCP SDK's Streamable HTTP transport, omit local filesystem access, add server-side authentication, and preserve the same allowlist and confirmation gates.
Development
Tests use in-memory Linear and MCP transports plus temporary Obsidian fixtures. They do not contact live services. Read-only evaluation questions are in evaluations/read-only.xml.
Implementation references: MCP TypeScript SDK v2, Linear TypeScript SDK, Linear teams, GitHub REST authentication, and Obsidian URI.
License
MIT
來源:mcp/linear-project-mcp-server/README.md,提交 fceea90
工具
0版本歷史
1- v0.1.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Linear 整合
Linear
app.linear官方發布者
在您的 Linear 工作區中查詢和管理問題、專案和文件。AI 翻譯

Linear Mcp
由 GitHub 帳號 mrfentmen 發布
一個本機 MCP 伺服器,讓助理查詢 Linear GraphQL API,取得目前使用者、團隊與議題搜尋結果。

Linear Bootstrap
由 GitHub 帳號 toolwright-adk 發布
本機 MCP 伺服器,可依自然語言描述在 Linear 中建立包含里程碑、史詩、議題與相依關係的專案。

Linear ID Shape
由 GitHub 帳號 sadri-dridi 發布
一個遠端 MCP 伺服器,提供小型實用檢查:ID 與 URL 形態、時間、JSON 合法性、HTTP 狀態、天氣及少量索引查詢。

LIN-123 identifier shape, value discarded
由 GitHub 帳號 sadri-dridi 發布
一個遠端 MCP 伺服器,提供小型實用工具:識別碼與 URL 形狀檢查、時間查詢、HTTP 狀態探測,以及若干指向第三方服務的索引工具。