Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP server for P4 Plan — tasks, sprints, bugs, comments, custom fields via GraphQL API.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
P4PLAN_API_AUTH_TOKEN, P4PLAN_API_URL, P4PLAN_ALLOW_SELF_SIGNED_CERTS, P4PLAN_READONLY, P4PLAN_UPLOAD_DIRSค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"p4plan": {
"command": "npx",
"args": [
"-y",
"@perforce/p4plan-mcp"
],
"env": {
"P4PLAN_API_AUTH_TOKEN": "ใส่ค่าของคุณ",
"P4PLAN_API_URL": "ใส่ค่าของคุณ",
"P4PLAN_ALLOW_SELF_SIGNED_CERTS": "ใส่ค่าของคุณ",
"P4PLAN_READONLY": "ใส่ค่าของคุณ",
"P4PLAN_UPLOAD_DIRS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add p4plan --env P4PLAN_API_AUTH_TOKEN='ใส่ค่าของคุณ' --env P4PLAN_API_URL='ใส่ค่าของคุณ' --env P4PLAN_ALLOW_SELF_SIGNED_CERTS='ใส่ค่าของคุณ' --env P4PLAN_READONLY='ใส่ค่าของคุณ' --env P4PLAN_UPLOAD_DIRS='ใส่ค่าของคุณ' -- npx -y @perforce/p4plan-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"p4plan": {
"command": "npx",
"args": [
"-y",
"@perforce/p4plan-mcp"
],
"env": {
"P4PLAN_API_AUTH_TOKEN": "ใส่ค่าของคุณ",
"P4PLAN_API_URL": "ใส่ค่าของคุณ",
"P4PLAN_ALLOW_SELF_SIGNED_CERTS": "ใส่ค่าของคุณ",
"P4PLAN_READONLY": "ใส่ค่าของคุณ",
"P4PLAN_UPLOAD_DIRS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"p4plan": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@perforce/p4plan-mcp"
],
"env": {
"P4PLAN_API_AUTH_TOKEN": "ใส่ค่าของคุณ",
"P4PLAN_API_URL": "ใส่ค่าของคุณ",
"P4PLAN_ALLOW_SELF_SIGNED_CERTS": "ใส่ค่าของคุณ",
"P4PLAN_READONLY": "ใส่ค่าของคุณ",
"P4PLAN_UPLOAD_DIRS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
P4PLAN_API_URL envP4PLAN_ALLOW_SELF_SIGNED_CERTS envP4PLAN_READONLY envP4PLAN_UPLOAD_DIRS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub perforce ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: P4PLAN_API_AUTH_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2026.3.2) เข้า registry 15 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js, Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Apify MCP Server
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
P4 Plan MCP Server
MCP (Model Context Protocol) server for P4 Plan, enabling AI assistants like Claude and VS Code Copilot to interact with P4 Plan project management data.
Architecture · Prerequisites · Quick Start · Install · Client Configurations · Tools
Skills · Logging · Troubleshoot · Development · License
This service acts as a stateless protocol adapter between MCP clients (AI assistants) and the P4 Plan GraphQL API, using stdio transport (stdin/stdout).
┌─────────────────┐ stdio (stdin/stdout) ┌─────────────────┐ GraphQL ┌─────────────────┐
│ AI Client │ ────────────────────────▶ │ P4 Plan MCP │ ──────────────▶ │ P4 Plan GraphQL │ │(Claude, Copilot)│ Spawns as child process │ Server │ Port 4000 │ API │ │ │ P4PLAN_API_AUTH_TOKEN │ (stateless) │ Bearer token │ │ └─────────────────┘ env var └─────────────────┘ forwarded └─────────────────┘
The client spawns the MCP server as a child process. Authentication is provided via the P4PLAN_API_AUTH_TOKEN environment variable, which the server validates at startup and forwards to the GraphQL API on every tool call.
| Requirement | Version | Notes |
|---|---|---|
| Node.js | \>= 20 (24+ recommended) | The server targets ES2023. Check with node -v. |
| npm | \>= 9 | Comes with Node.js. Check with npm -v. |
| P4 Plan API | \>= 2026.1.002 | Required for all tool operations. Earlier versions are not supported. |
Tip: Use nvm to manage Node.js versions, or skip the Node.js requirement entirely by using Docker.
The fastest way to get started — no installation required. Just configure your MCP client to use npx:
npx -y @perforce/p4plan-mcp
npx automatically downloads and runs the latest version of the server. Your MCP client (VS Code, Claude Desktop, etc.) handles this for you — just add the config below and start chatting.
VS Code — add to .vscode/mcp.json:
{
"servers": { "p4-plan": { "type": "stdio", "command": "npx", "args": ["-y", "@perforce/p4plan-mcp"], "env": { "P4PLAN_API_AUTH_TOKEN": "YOUR_JWT_TOKEN", "P4PLAN_API_URL": "http://localhost:4000" } } } }
Claude Desktop — add to your config:
{
"mcpServers": { "p4-plan": { "command": "npx", "args": ["-y", "@perforce/p4plan-mcp"], "env": { "P4PLAN_API_AUTH_TOKEN": "YOUR_JWT_TOKEN", "P4PLAN_API_URL": "http://localhost:4000" } } } }
Note: The
-yflag auto-confirms the npm install prompt so the server starts without user interaction.
See Client Configuration for more options including Docker, secure token prompts, and local builds.
This server is published to the official MCP Registry as `io.github.perforce/p4plan-mcp`. Discover it via the registry API:
curl 'https://registry.modelcontextprotocol.io/v0/servers?search=io.github.perforce/p4plan-mcp'
MCP clients that support registry discovery can install the server by name without needing to know the npm package identifier.
Build from source
For development or when you want to run from a local clone:
npm ci
npm run build
npm link
Run from Docker
Run the MCP server via Docker instead of installing Node.js locally. The MCP client (VS Code, Claude Desktop) spawns the container as a child process — same as npx, just using docker as the command.
The image is published to Docker Hub at perforce/p4plan-mcp, built multi-arch (linux/amd64 + linux/arm64) on every release, with SLSA provenance and SBOM attestations.
VS Code (.vscode/mcp.json):
{
"servers": { "p4-plan": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "P4PLAN_API_AUTH_TOKEN=YOUR_JWT_TOKEN", "-e", "P4PLAN_API_URL=http://host.docker.internal:4000", "perforce/p4plan-mcp:latest" ] } } }
Claude Desktop:
{
"mcpServers": { "p4-plan": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "P4PLAN_API_AUTH_TOKEN=YOUR_JWT_TOKEN", "-e", "P4PLAN_API_URL=http://host.docker.internal:4000", "perforce/p4plan-mcp:latest" ] } } }
Note: Use
host.docker.internal(macOS/Windows) or172.17.0.1(Linux) to reach the P4 Plan GraphQL API running on the host machine.
Pin a specific version by replacing
:latestwith:2026.3.2(or whichever tag) for reproducible deployments.
Build locally (for development against unreleased changes):
docker build -t p4plan-mcp:dev .
Copy the example config and configure:
cp config-example.env .env
Edit .env with your settings:
# JWT token for authenticating with P4 Plan GraphQL API
P4PLAN_API_AUTH_TOKEN=your-jwt-token
P4PLAN_API_URL=https://p4plan-api.example.com
LOG_LEVEL=info
The server communicates via stdin/stdout. It is not meant to be run interactively — MCP clients (VS Code, Claude Desktop) spawn it as a child process automatically.
Start the server with the --readonly argument, or set P4PLAN_READONLY=true, to make it read-only:
comment-html-format, mentions) are left out.This means content read from P4 Plan (a task description or a comment, for example) cannot steer the model into changing data through this server.
{
"servers": { "p4-plan": { "type": "stdio", "command": "npx", "args": ["-y", "@perforce/p4plan-mcp", "--readonly"], "env": { "P4PLAN_API_AUTH_TOKEN": "YOUR_JWT_TOKEN", "P4PLAN_API_URL": "http://localhost:4000" } } } }
With Docker, pass -e P4PLAN_READONLY=true or put --readonly after the image name. With Docker Compose, set P4PLAN_READONLY=true in your shell or .env; docker-compose.yml passes it to the container.
Read-only mode limits what the MCP server does; it does not change what the token may do. For the strongest guarantee, also authenticate as a P4 Plan user that only has read access.
upload_attachment attaches a local file, or text the model writes, to a task, bug, sprint or release. Reading local files would let a prompt injection ask for something like ~/.ssh/id_rsa, so the server only reads files inside allowed folders:
P4PLAN_UPLOAD_DIRS (separate several with :, or ; on Windows).Symlinks are resolved before the check, hidden files and folders (names starting with ., such as .env, .ssh or .git) are never uploaded, and only regular files are read. If the client shares no folders and P4PLAN_UPLOAD_DIRS is not set, only text uploads (content + fileName) work.
With Docker the container cannot see your files: mount a folder and point P4PLAN_UPLOAD_DIRS at the path inside the container, for example -v "$HOME/Screenshots:/uploads:ro" -e P4PLAN_UPLOAD_DIRS=/uploads, and pass paths such as /uploads/bug.png.
The file is streamed to the P4 Plan API (POST /attachment/ /upload), so its content never passes through the model. The P4 Plan server's own limits apply: its attachment size limit and blocked file types. If a file with the same name is already attached, the server stores the new one as name (1).ext. If an upload times out it may still have completed, so check get_attachments before retrying.
To show an image inside a comment or a multiline field (bug description, steps to reproduce, Multiline Text columns), upload it to the same item and put the returned imageHtml ( ) in the HTML. This is how the P4 Plan clients embed pasted images; the server turns images with any other src into plain links.
So that one client cannot flood the P4 Plan API (a model stuck in a loop, or a prompt injection asking for many files), each MCP server runs its uploads one at a time and starts at most 20 uploads per minute. Further calls get an error saying how long to wait.
Every tool publishes MCP tool annotations. readOnlyHint marks the tools that only read; tools that write also carry destructiveHint (the call deletes or overwrites data) and idempotentHint. Clients that support annotations can use them to ask for confirmation before a write.
The MCP server requires a JWT token provided via the P4PLAN_API_AUTH_TOKEN environment variable. The token is validated at startup and forwarded to the P4 Plan GraphQL API on every tool call. No sessions or state are maintained.
Get a JWT token from the P4 Plan GraphQL API using curl. You can authenticate with either your password or a Personal Access Token (PAT):
Usi
ตัดมาแค่ช่วงต้น อ่านต่อใน repo