issueport
README.md
# issueport
Linear teams, projects, issues and comments as MCP tools, talking to
the Linear GraphQL API. issueport is a clean-room rebuild of the core
subset of the Linear MCP surface, under a new name: fresh code written
from Linear's public API documentation, no copied branding. The
original Linear server is hosted/remote with OAuth; this rebuild is a
GraphQL client for the same upstream API using an API key, and does
not reproduce the hosted OAuth surface.
## Tools (core subset, 12)
`list_issues`, `get_issue`, `create_issue`, `update_issue`,
`search_issues`, `list_teams`, `get_team`, `list_projects`,
`create_project`, `list_comments`, `create_comment`, `archive_issue`.
Not in this subset: cycles, documents, file uploads, webhooks, OAuth
apps, time tracking, triage/custom workflows admin, project
milestones/labels management, attachments, notifications.
Each tool is one GraphQL operation (query or mutation) posted as
`{query, variables}`; a GraphQL `errors` array fails the call with the
first error's message.
## Setup
```bash
export LINEAR_API_KEY=lin_api_...
```
Note: Linear API keys are sent raw as the `Authorization` header
value — not as a Bearer token. Optionally override the endpoint with
`LINEAR_API_URL` (default `https://api.linear.app/graphql`). Without
the key, every tool call fails with an error naming the missing
variable.
## CLI
```bash
npx @reneturcios/issueport get_issue '{"issue_id":"..."}'
npx @reneturcios/issueport mcp # stdio MCP server
```
Each tool name is a subcommand taking one JSON object argument.
## MCP client config
```json
{
"mcpServers": {
"issueport": {
"command": "npx",
"args": ["-y", "@reneturcios/issueport", "mcp"],
"env": { "LINEAR_API_KEY": "lin_api_..." }
}
}
}
```
## Docker
```bash
docker run -i -e LINEAR_API_KEY ghcr.io/cloudcorprecords/issueport
```
## Development
```bash
npm install
npm run build
npm test
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues