Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Manage incidents, alerts, monitors, status pages, on-call and telemetry in OneUptime.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
x-api-key「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
ターミナルでこれを実行します
claude mcp add --transport http oneuptime https://oneuptime.com/mcp --header 'x-api-key: your-value'動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"oneuptime": {
"url": "https://oneuptime.com/mcp",
"headers": {
"x-api-key": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"oneuptime": {
"type": "http",
"url": "https://oneuptime.com/mcp",
"headers": {
"x-api-key": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このアドレスはリクエストの header にキーが必要ですが、コネクタを追加するメニューでは設定できません。代わりにClaude Code、Cursor、VS Codeを使ってください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
x-api-key 秘密 HTTP headerこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ツールの名前と説明は、サーバーが2026年11月6日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。
create_teamCreate a new Team. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_teamGet one Team by ID. Find IDs with list_teams.
list_teamsList Teams with filtering, sorting and paging. Returns the page and the total matching count.
update_teamUpdate one Team by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_teamPermanently delete one Team by ID. This cannot be undone.
count_teamsCount Teams, all of them or those a filter matches. Returns a single number.
create_labelCreate a new Label. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_labelGet one Label by ID. Find IDs with list_labels.
list_labelsList Labels with filtering, sorting and paging. Returns the page and the total matching count.
update_labelUpdate one Label by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_labelPermanently delete one Label by ID. This cannot be undone.
count_labelsCount Labels, all of them or those a filter matches. Returns a single number.
create_security_caseCreate a new Security Case. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_caseGet one Security Case by ID. Find IDs with list_security_cases.
list_security_casesList Security Cases with filtering, sorting and paging. Returns the page and the total matching count.
update_security_caseUpdate one Security Case by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_casePermanently delete one Security Case by ID. This cannot be undone.
count_security_casesCount Security Cases, all of them or those a filter matches. Returns a single number.
create_security_case_noteCreate a new Security Case Note. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_case_noteGet one Security Case Note by ID. Find IDs with list_security_case_notes.
list_security_case_notesList Security Case Notes with filtering, sorting and paging. Returns the page and the total matching count.
update_security_case_noteUpdate one Security Case Note by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_case_notePermanently delete one Security Case Note by ID. This cannot be undone.
count_security_case_notesCount Security Case Notes, all of them or those a filter matches. Returns a single number.
create_security_case_taskCreate a new Security Case Task. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_case_taskGet one Security Case Task by ID. Find IDs with list_security_case_tasks.
list_security_case_tasksList Security Case Tasks with filtering, sorting and paging. Returns the page and the total matching count.
update_security_case_taskUpdate one Security Case Task by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_case_taskPermanently delete one Security Case Task by ID. This cannot be undone.
count_security_case_tasksCount Security Case Tasks, all of them or those a filter matches. Returns a single number.
create_security_case_evidenceCreate a new Security Case Evidence. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_case_evidenceGet one Security Case Evidence by ID. Find IDs with list_security_case_evidence.
list_security_case_evidenceList Security Case Evidence with filtering, sorting and paging. Returns the page and the total matching count.
update_security_case_evidenceUpdate one Security Case Evidence by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_case_evidencePermanently delete one Security Case Evidence by ID. This cannot be undone.
count_security_case_evidenceCount Security Case Evidence, all of them or those a filter matches. Returns a single number.
create_security_case_priorityCreate a new Security Case Priority. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_case_priorityGet one Security Case Priority by ID. Find IDs with list_security_case_priorities.
list_security_case_prioritiesList Security Case Priorities with filtering, sorting and paging. Returns the page and the total matching count.
update_security_case_priorityUpdate one Security Case Priority by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_case_priorityPermanently delete one Security Case Priority by ID. This cannot be undone.
count_security_case_prioritiesCount Security Case Priorities, all of them or those a filter matches. Returns a single number.
create_security_case_statusCreate a new Security Case Status. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_case_statusGet one Security Case Status by ID. Find IDs with list_security_case_statuses.
list_security_case_statusesList Security Case Statuses with filtering, sorting and paging. Returns the page and the total matching count.
update_security_case_statusUpdate one Security Case Status by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_case_statusPermanently delete one Security Case Status by ID. This cannot be undone.
count_security_case_statusesCount Security Case Statuses, all of them or those a filter matches. Returns a single number.
create_security_detectionCreate a new Security Detection. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_detectionGet one Security Detection by ID. Find IDs with list_security_detections.
list_security_detectionsList Security Detections with filtering, sorting and paging. Returns the page and the total matching count.
update_security_detectionUpdate one Security Detection by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_detectionPermanently delete one Security Detection by ID. This cannot be undone.
count_security_detectionsCount Security Detections, all of them or those a filter matches. Returns a single number.
create_security_playbookCreate a new Security Playbook. Returns it with its ID. projectId comes from your credentials. Field details: oneuptime_describe_resource.
get_security_playbookGet one Security Playbook by ID. Find IDs with list_security_playbooks.
list_security_playbooksList Security Playbooks with filtering, sorting and paging. Returns the page and the total matching count.
update_security_playbookUpdate one Security Playbook by ID. Send only the fields to change. Field details: oneuptime_describe_resource.
delete_security_playbookPermanently delete one Security Playbook by ID. This cannot be undone.
count_security_playbooksCount Security Playbooks, all of them or those a filter matches. Returns a single number.
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名はドメイン oneuptime.com で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
128ミリ秒で応答(HTTP 200)
サインイン不要
60件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:x-api-key
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(14.0.104)がレジストリに届いたのは今日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Fomu MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Kenya government form guides: checklists, draft letters, eCitizen, Huduma, timelines. Sample data.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A Model Context Protocol (MCP) server that exposes OneUptime to AI agents. It lets MCP-compatible clients (Claude, VS Code with Copilot, Cursor, and others) manage incidents, alerts, monitors, status pages, on-call, and telemetry through about 290 tools.
/mcp. The server is stateless — no session IDs are issued or required, so it is safe behind load balancers and multi-replica deployments.https://oneuptime.com/mcphttps:// /mcp (served by the App container behind Nginx)x-api-key header or Authorization: Bearer (scheme is case-insensitive). There is no environment-variable API key — every request carries its own credential.Give the client the URL and nothing else. The first call to a tool that needs an identity is answered 401 with a WWW-Authenticate challenge; the client discovers the authorization server from it, opens the consent screen in the user's browser, and gets tokens for the project the user picks.
claude mcp add --transport http oneuptime https://oneuptime.com/mcp
{ "servers": { "oneuptime": { "type": "http", "url": "https://oneuptime.com/mcp" } } }
The rest of this section configures the same clients with an API key instead, for agents that run unattended.
Add to claude_desktop_config.json:
{
"mcpServers": { "oneuptime": { "transport": "streamable-http", "url": "https://oneuptime.com/mcp", "headers": { "x-api-key": "your-api-key-here" } } } }
claude mcp add --transport http oneuptime https://oneuptime.com/mcp \
--header "x-api-key: your-api-key-here"
.vscode/mcp.json or the user MCP configuration:
{
"servers": { "oneuptime": { "type": "http", "url": "https://oneuptime.com/mcp", "headers": { "x-api-key": "${input:oneuptime-api-key}" } } }, "inputs": [ { "type": "promptString", "id": "oneuptime-api-key", "description": "OneUptime API Key", "password": true } ] }
.cursor/mcp.json:
{
"mcpServers": { "oneuptime": { "url": "https://oneuptime.com/mcp", "headers": { "x-api-key": "your-api-key-here" } } } }
For self-hosted instances, replace oneuptime.com with your OneUptime host in any of the above.
Create a project API key in OneUptime under Project Settings → Advanced → API Keys and grant it the least privilege the agent needs (read-only keys work for all get_/list_/count_ tools). The project is inferred from the key — create tools never need a projectId argument.
Warning — never give an AI agent a master key. A OneUptime *master* API key is also accepted on this header and grants instance-wide admin access. Always use a project-scoped API key with least privilege for AI agents.
Public status page tools and oneuptime_help / oneuptime_list_resources / oneuptime_describe_resource work without any credential.
The code is in OAuth/; each file opens with the reasoning behind it. The shape of it:
https:// /mcp is both the protected resource (RFC 9728) and the authorization server's issuer (RFC 8414). Every endpoint sits under /mcp/oauth, and every URL is built from HOST / HTTP_PROTOCOL, never from the request.OAuth/RequestGate runs before the MCP SDK sees a request. initialize, tools/list and the public tools pass with no credential; a call to a tool that needs an identity is refused 401 (or 403 insufficient_scope for a read-only grant calling a write tool) with a Bearer challenge. It cannot live in a tool handler: a refusal from inside the SDK is a 200, and a client only starts signing its user in on a real 401.OAuth/ClientIdMetadataDocument, fetched through the egress guard with private addresses always blocked) or Dynamic Client Registration (OAuth/RegistrationEndpoint). Nobody registers a client by hand.iss in the authorization response (RFC 9207), rotating refresh tokens with reuse detection, revocation (RFC 7009).oumcp_ac_… / oumcp_at_… / oumcp_rt_…; only the SHA-256 is kept (McpOAuthToken). A grant (McpOAuthGrant) is one member letting one client act for them in one project; revoking is deleting the grant, which cascades to its tokens.x-api-key carries an API key and nothing else; Authorization carries an API key or an access token. Any other oumcp_ secret presented in either header — a refresh token, a code, a client secret, or an access token in x-api-key — is refused 401 invalid_token by OAuth/RequestGate and is never passed on to the API as an API key.mcp:read and mcp:write (write includes read). The consent screen can narrow what a client asked for, never widen it.Common/Server/Utils/Mcp/McpDelegationToken). Common/Server/Middleware/McpDelegationAuthorization turns that into a request authorized as the member — never as a master admin — in the grant's project, with their live permissions, and marked read-only when the grant is. A stolen access token is therefore worth exactly what the MCP tools can do with it.Common/Server/Utils/Mcp/McpOAuthGrantAccess re-evaluates the grant per request and per token exchange: the member still exists, is not blocked, still belongs to the project, is not on a team that blocks AuthorizeMcpClient, and still satisfies the project's SSO requirement./accounts/mcp-authorize; managing connected clients is Settings → MCP Server in the Dashboard.Two settings: DISABLE_MCP_OAUTH=true switches the whole thing off (the routes answer 404 and an unauthenticated tool call gets the in-band "API key is required" result it always got), and DISABLE_MCP_OAUTH_CLIENT_ID_METADATA_DOCUMENTS=true is for instances that cannot make outbound requests.
Each of these 27 models gets six tools: create_, get_, list_, update_, delete_, count_ (e.g. create_incident, get_incident, list_incidents, update_incident, delete_incident, count_incidents):
Incident, Alert, Incident Alert, Monitor, Status Page, Scheduled Maintenance Event, Team, Monitor Status, On-Call Policy, Incident State, Incident Severity, Alert State, Alert Severity, Incident State Timeline, Alert State Timeline, Incident Public Note, Incident Internal Note, Alert Internal Note, Status Page Announcement, Scheduled Maintenance State, Scheduled Maintenance State Timeline, Label, Monitor Status Event, Security Case, Security Case Note, Security Detection, Security Playbook.
Log, Metric, Span, Exception Instance, Monitor Log, Security Event, Change Event, Kubernetes Cost Allocation, and Threat Intel Indicator get list_ and count_ tools only (e.g. list_logs, count_spans, list_exception_instances). There are no create tools for telemetry — ingestion happens via OpenTelemetry.
Purpose-built shortcuts for incident/alert response (packages/App/FeatureSet/MCP/Tools/WorkflowTools.ts):
acknowledge_incident, resolve_incidentacknowledge_alert, resolve_alertadd_incident_note (with visibility: "internal" | "public" — public notes post to the status page)add_alert_noteget_data_table_freshness — whether a table Data Observability watches is fresh: fresh or late by its own rhythm, when it last changed, its open alerts, and its writers' latest runs (read-only)oneuptime_whoami — returns the project (ID and name) the credential belongs to; for an OAuth sign-in, also who is signed in, through which client, and whether the connection is read-onlyoneuptime_help, oneuptime_list_resourcesoneuptime_describe_resource — one resource's fields: what each means, the filter operators its type takes, and whether it can be sorted or must be selected. Accepts the resource's name or any of its tool names (Incident, list_incidents).get_public_status_page_overview, get_public_status_page_incidents, get_public_status_page_scheduled_maintenance, get_public_status_page_announcementsEvery tool has a title and states all three MCP hints, set in Tools/ToolAnnotations.ts, so clients can auto-approve safe calls and confirm the rest:
readOnlyHint: true on the tools that change nothing: get_, list_, count_, oneuptime_whoami, the helper tools and the public status page tools.destructiveHint: true on every tool that changes something: create, update and delete tools, acknowledging and resolving, and adding notes. Most writes overwrite or delete a record, change an incident's or alert's state, page someone on call or post to a status page, and the directories allow false only for a write that adds and sends nothing.openWorldHint: true only on the public status page tools, which read any public status page on the instance. Every other tool stays inside the caller's project.MCP directories require them: the Claude Connectors Directory flags any tool without a title or a readOnlyHint/destructiveHint, and ChatGPT's requires all three hints as booleans. Tests/ToolAnnotationsForDirectories.test.ts fails on a tool that lacks one, or that breaks the rules above. On the server itself, MCP_ALLOW_DESTRUCTIVE=false removes the delete tools only, and MCP_READ_ONLY=true removes every tool that is not read-only (Tests/WritePolicy.test.ts). Tool results include structuredContent alongside the JSON text. Errors come back as in-band tool results (isError: true) with statusCode, details, and a suggestion — not as protocol errors.
Many clients load every tool definition before the first question, so tools/list is paid for on every connection. On 2026-11-02 oneuptime.com answered it with 283 tools in 1,202,028 bytes (about 300,000 tokens at four characters a token), more than many models hold: each list_ and count_ tool listed every field of its model with its operators and an example. On the code that changed this, the answer went from 289 tools in 1,228,155 bytes to 290 tools in 237,400 bytes (about 59,000 tokens):
list_ and count_ tools take any field in query and sort and say how a filter is written; oneuptime_describe_resource gives the fields on demand, one resource at a time.{"_type": "DateTime", "value": ...}) or a color keeps its shape as schema, since its example was the only place that stated it.create_ tools explain only the fields a call cannot leave out, and update_ tools name and type their fields without explaining them. Every field is still listed and typed, so a client that validates a call still can.Tests/ToolListBudget.test.ts reads tools/list through the SDK's client and fails above 250,000 bytes, or for any tool above 5,000 bytes. A new model adds about 4 KB. When a change goes over, make the t
冒頭だけを表示しています。続きはリポジトリで読めます