- Anthropic API Server (TypeScript)
Anthropic API Server (TypeScript)
Anthropic API Server (TypeScript)
บริการ API สำหรับ Anthropic Claude ที่มีความครอบคลุมการทดสอบสูง ช่วยให้เชื่อมต่อกับ Claude (Anthropic API) ได้อย่างปลอดภัย
โครงสร้างโปรเจกต์
mcp-p-anthropic-api-server/
├── bin/ # สคริปต์สำหรับรันผ่าน CLI
├── src/ # โค้ดหลักของโปรเจกต์
│ ├── middleware/ # Express middleware
│ ├── routes/ # Express routes
│ ├── services/ # บริการที่ใช้ภายในแอป
│ ├── __tests__/ # ไฟล์ทดสอบ
│ │ └── __mocks__/ # ไฟล์จำลองสำหรับการทดสอบ
│ ├── config.ts # การตั้งค่าแอปพลิเคชัน
│ ├── index.ts # จุดเริ่มต้นของแอปพลิเคชัน
│ ├── logger.ts # ระบบบันทึกข้อมูล
│ └── server.ts # ตัวสร้างและจัดการเซิร์ฟเวอร์
├── examples/ # ตัวอย่างการใช้งานโดยตรง
├── tests/ # ไฟล์ทดสอบเพิ่มเติม
├── types/ # ไฟล์นิยามประเภทข้อมูล
├── docs/ # เอกสารทางเทคนิคสำหรับนักพัฒนา
├── public-docs/ # เอกสารสำหรับผู้ใช้ทั่วไป
├── .env # ตัวแปรสภาพแวดล้อม (ไม่ควรอัปโหลดไป git)
├── .env.example # ตัวอย่างไฟล์ .env
├── .gitignore # ไฟล์ที่ระบุให้ git ไม่สนใจ
├── CHANGELOG.md # บันทึกการเปลี่ยนแปลง
├── CONTRIBUTING.md # คำแนะนำสำหรับผู้ร่วมพัฒนา
├── LICENSE # สัญญาอนุญาต
├── package.json # ข้อมูลแพ็กเกจและการพึ่งพา npm
├── README.md # เอกสารนี้
└── tsconfig.json # การตั้งค่า TypeScript
คุณสมบัติหลัก
- เชื่อมต่อกับ Anthropic API: ใช้ SDK อย่างเป็นทางการเพื่อความปลอดภัยและประสิทธิภาพ
- รองรับ Streaming Response: สามารถใช้งาน streaming สำหรับการตอบกลับแบบ real-time
- รองรับ Function Calling / Tools: ให้ Claude เรียกใช้เครื่องมือต่างๆ ได้
- การตรวจสอบข้อมูลนำเข้า: ใช้ Zod Schema เพื่อตรวจสอบความถูกต้องของคำขอ
- ระบบบันทึกข้อมูล: บันทึกการทำงานของระบบอย่างละเอียด
- เรียกใช้ผ่าน npx: ติดตั้งและใช้งานได้ง่ายผ่าน npx
- ระบบจัดการ API Key: อ่านค่า API Key จากไฟล์ .env
การติดตั้ง
- โคลนโปรเจกต์
git clone https://github.com/ptitiwat2543/mcp-p-anthropic-api.git
cd mcp-p-anthropic-api
- ติดตั้งการพึ่งพา
npm install
- สร้างไฟล์
.env(คัดลอกจาก.env.example)
cp .env.example .env
- แก้ไขไฟล์
.envเพื่อใส่ค่า API key ของ Anthropic และการตั้งค่าอื่นๆ ตามต้องการ
การใช้งาน
การพัฒนาในเครื่องเดียวกัน
เริ่มเซิร์ฟเวอร์ในโหมดพัฒนา (มีการโหลดซ้ำอัตโนมัติ):
npm run dev
การรันในโหมดผลิต
สร้างโปรเจกต์:
npm run build
เริ่มเซิร์ฟเวอร์:
npm start
การใช้งานผ่าน npx
npx mcp-p-anthropic-api-server
API Endpoints
GET /api/health- ตรวจสอบสถานะ APIPOST /api/messages- ส่งข้อความไปยัง Claude AIGET /api/tools- รายการเครื่องมือที่มีให้ใช้งานPOST /api/tools/execute- ใช้งานเครื่องมือเฉพาะ
ตัวอย่างการใช้งาน API
การส่งข้อความไปยัง Claude AI
curl -X POST http://localhost:3000/api/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-7-sonnet-20250219",
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
การใช้งานเครื่องมือ getCurrentTime
curl -X POST http://localhost:3000/api/tools/execute \
-H "Content-Type: application/json" \
-d '{
"tool_name": "getCurrentTime",
"parameters": {"timezone": "Asia/Bangkok"}
}'
การเรียกใช้ Anthropic API โดยตรง
โปรเจกต์นี้ได้เพิ่มตัวอย่างการเรียกใช้ Anthropic API โดยตรงผ่าน curl ในโฟลเดอร์ examples:
node examples/direct-anthropic-api.js "ข้อความที่ต้องการส่งไปยัง Claude"
ดูข้อมูลเพิ่มเติมได้ที่ examples/README.md
การทดสอบ
รันการทดสอบทั้งหมด
npm test
รันการทดสอบเฉพาะการตรวจสอบข้อมูล
npm run test:validation
รันการทดสอบเชิงบูรณาการ
npm run test:integration
รันการทดสอบพร้อมรายงานความครอบคลุม
npm run test:coverage
การใช้งานกับ Claude Desktop
คุณสามารถใช้โปรเจกต์นี้กับ Claude Desktop ได้โดยสร้างไฟล์ claude_desktop_config.json ดังนี้:
{
"mcpServers": {
"anthropic-api": {
"command": "npx",
"args": ["mcp-p-anthropic-api-server"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-xxxxx",
"MODEL": "claude-3-7-sonnet-20250219"
}
}
}
}
หลังจากตั้งค่า Claude Desktop:
- เปิด Claude Desktop
- ไปที่ Settings > Extensions
- ระบุพาธของไฟล์ claude_desktop_config.json
- บันทึกและรีสตาร์ท
เมื่อใช้งาน ให้เริ่มต้นคำขอด้วย @anthropic-api ตามด้วยข้อความของคุณ:
@anthropic-api ช่วยเขียนบทความเกี่ยวกับปัญญาประดิษฐ์
การแก้ไขปัญหาทั่วไป
การเชื่อมต่อกับ Anthropic API ไม่สำเร็จ
- ตรวจสอบว่าค่า
ANTHROPIC_API_KEYในไฟล์.envถูกต้อง - ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต
- ทดลองใช้ตัวอย่างการเรียกใช้ API โดยตรงใน
examples/direct-anthropic-api.js
TypeError: app.address is not a function
หากพบข้อผิดพลาดนี้เมื่อรันการทดสอบด้วย supertest ให้พิจารณาวิธีการแก้ไขต่อไปนี้:
- ใช้การทดสอบแบบ direct mock แทน (ดูตัวอย่างจาก
api-coverage-fixed.test.ts) - ตรวจสอบว่า
appเป็น Express application จริงๆ - ใช้วิธีดักจับ route handlers โดยตรงแทนการใช้ HTTP requests จำลอง
การเชื่อมต่อกับ Claude Desktop ไม่สำเร็จ
- ตรวจสอบว่า Claude Desktop เวอร์ชันล่าสุด
- รีสตาร์ท Claude Desktop หลังจากแก้ไขการตั้งค่า
- ตรวจสอบว่า API key ในไฟล์
claude_desktop_config.jsonถูกต้อง
การปรับแต่งและการขยายเพิ่มเติม
การเพิ่มเครื่องมือใหม่
เพิ่มเครื่องมือใหม่ได้โดยแก้ไขไฟล์ src/services/tools.ts:
// ตัวอย่างการเพิ่มเครื่องมือใหม่
registerTool('getWeather',
{
type: 'object',
properties: {
location: { type: 'string', description: 'สถานที่ เช่น Bangkok, Thailand' }
},
required: ['location']
},
async (parameters) => {
// ตรวจสอบพารามิเตอร์
const { location } = parameters;
// ดึงข้อมูลสภาพอากาศ (ตัวอย่าง)
return {
temperature: 30,
condition: 'sunny',
location
};
}
);
การปรับแต่งรูปแบบการบันทึกข้อมูล
แก้ไขไฟล์ src/logger.ts เพื่อปรับแต่งรูปแบบการบันทึกข้อมูล:
// เพิ่มหรือแก้ไข format ของ logger
const customFormat = winston.format.printf(({ level, message, timestamp, ...meta }) => {
return `${timestamp} [${level.toUpperCase()}]: ${message} ${
Object.keys(meta).length ? JSON.stringify(meta) : ''
}`;
});
ใบอนุญาต
โปรเจกต์นี้ได้รับอนุญาตภายใต้ MIT License - ดูไฟล์ LICENSE สำหรับรายละเอียด