ARCLinearGitHub-MCP

ARCLinearGitHub-MCP

Bridges Linear issue tracking and GitHub repository management with ARC naming conventions, enabling composite workflows like creating a Linear issue and GitHub branch in one step.

Category
访问服务器

README

ARCLinearGitHub-MCP

Swift Platforms MCP License Status

Native Swift Model Context Protocol (MCP) server that bridges Linear (issue tracking) and GitHub (repository management), enforces ARC Labs naming conventions, and exposes 21 tools to Claude Code over stdio.

  • Multi-workspace — talk to several Linear workspaces from one binary via LINEAR_WORKSPACES.
  • Convention enforcement — branch, commit and PR validators with byte-compatible regex ported from the Python reference implementation.
  • Composite workflowsworkflow_start_feature creates the Linear issue and the GitHub branch in a single round-trip.
  • Swift 6 + strict concurrency — every public type is Sendable, the data layer uses actors, no force-unwraps and no nonisolated(unsafe).

This is the Swift rewrite of the original Python LinearGitHub-MCP. The wire format is identical (same tool names, same request/response shape), so existing Claude Code configurations only need a binary-path swap.


Overview

ARCLinearGitHub-MCP is a Swift Package laid out following the microapps SPM pattern (Majid Jabrayilov) and ARC Clean Architecture:

Sources/
├── ARCMCPModels         Foundation — entities + error types
├── ARCMCPNetworking     Foundation — URLSession HTTP + retry policy
├── ARCMCPValidators     Foundation — branch + commit validators
├── ARCMCPLinear         Data       — GraphQL client + workspace registry
├── ARCMCPGitHub         Data       — REST client
├── ARCMCPCore           Orchestration — AppDependencies + MCP tools
├── ARCMCPMocks          Tests      — StubURLProtocol + AppDependencies.mock
└── arc-mcp              Executable — stdio MCP server

The 21 MCP tools live in ARCMCPCore/Tools/. Each handler decodes its arguments via ArgumentAccess, calls one or more closures on AppDependencies, then maps the entities back into the Python-compatible {success: bool, ...} envelope via Mappers.

Requirements

  • macOS 14 Sonoma or later
  • Swift 6.0 toolchain (Xcode 16+)
  • Linear API token and GitHub Personal Access Token

Installation

git clone https://github.com/arclabs-studio/ARCLinearGitHub-MCP.git
cd ARCLinearGitHub-MCP
make build-release

The binary lands at .build/release/arc-mcp.

Configuration

Every setting is read from the process environment.

export GITHUB_TOKEN=ghp_xxx
export GITHUB_ORG=arclabs-studio
export DEFAULT_PROJECT=PLAT
export DEFAULT_REPO=MyApp

# single-workspace
export LINEAR_API_KEY=lin_api_xxx

# or multi-workspace
export LINEAR_WORKSPACES='{"ios":"lin_api_a","backend":"lin_api_b"}'

Optional overrides: LINEAR_API_URL, GITHUB_API_URL, REQUEST_TIMEOUT.

Usage

Claude Code

Add the binary to ~/.claude/mcp-servers.json:

{
  "mcpServers": {
    "arc-linear-github": {
      "command": "/abs/path/.build/release/arc-mcp"
    }
  }
}

Restart Claude Code. /mcp lists 21 tools under arc-linear-github.

Programmatic embedding

import ARCMCPCore
import MCP

let settings = try Settings.fromEnvironment()
let server = Server(name: "my-mcp", version: "1.0.0",
                    capabilities: .init(tools: .init(listChanged: false)))
await ToolRegistry.register(on: server, dependencies: .production(settings: settings))
try await server.start(transport: StdioTransport())
await server.waitUntilCompleted()

Development

make lint        # SwiftLint
make format      # SwiftFormat (dry-run)
make fix         # Apply SwiftFormat
make build       # debug build
make test        # swift test --no-parallel (StubURLProtocol uses shared state)
make coverage    # tests with code coverage
make docs        # DocC archive for ARCMCPCore
make run         # build-release && exec arc-mcp

Project layout

Target Purpose
ARCMCPModels Codable Sendable Linear and GitHub entities + MCPDomainError
ARCMCPNetworking HTTPClient actor, RetryPolicy, HTTPError
ARCMCPValidators Pure branch + commit validators with ARC regex
ARCMCPLinear GraphQL client + multi-workspace registry
ARCMCPGitHub REST client + endpoint enum
ARCMCPCore AppDependencies, MCP tool registry, mappers
ARCMCPMocks StubURLProtocol + AppDependencies.mock for tests
arc-mcp @main stdio executable

Testing

Swift Testing. Run serially because StubURLProtocol keeps its handler in static OSAllocatedUnfairLock state:

swift test --no-parallel

Tests are organised per target:

  • ARCMCPModelsTests — Codable round-trip for every entity.
  • ARCMCPNetworkingTests — retry semantics with stubbed URLSession.
  • ARCMCPValidatorsTests — every case ported from tests/test_validators/.
  • ARCMCPLinearTests / ARCMCPGitHubTestsURLProtocol stubs + fixture JSON.
  • ARCMCPCoreTestsSettings env parsing + tool registry dispatch.

Architecture

  • Clean Architecture — Domain (ARCMCPModels, *Validators), Data (*Linear, *GitHub), Orchestration (ARCMCPCore).
  • Microapps SPM — one library target per concern, layered by build dependency.
  • Closure-based DI — every capability is a @Sendable async closure on AppDependencies. production(settings:) wires real actors; .mock (in ARCMCPMocks) returns canned values.
  • Strict concurrency — Swift 6 .v6 language mode across every target.

Conventions

  • Branches: <type>/<issue-id>-<description>
  • Commits: <type>(<scope>): <subject>
  • PRs: <Type>/<Issue-ID>: <Title>

Full reference: workflow_get_conventions tool, or ARCMCPValidators.NamingStandards.

License

MIT. See LICENSE.

Related


<p align="center">Made with 💛 by ARC Labs Studio</p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选