test1
Claude integration with MCP server for Microsoft Graph API
Documentation
Claude Integration with MCP for Microsoft Graph API
This repository provides a complete solution for integrating Claude with a Model Context Protocol (MCP) server to access Microsoft Graph API.
Step-by-Step Implementation Guide
Phase 1: Setting Up the MCP Server
1. Clone this repository
git clone https://github.com/JBAgent/Test1.git
cd Test12. Install dependencies for the MCP server
cd mcp-server
npm install3. Configure environment variables
cp .env.example .env
# Edit .env with your Azure AD credentials4. Start the MCP server
npm start5. Test the MCP server
# Using the provided test client
node test-client.js
# Or using curl
curl -X POST http://localhost:3000/api/graph \
-H "Content-Type: application/json" \
-H "X-User-ID: default-user" \
-d '{"endpoint": "/users", "method": "GET", "queryParams": {"$top": 5}, "allData": false}'Phase 2: Setting Up the Claude Integration
1. Install dependencies for the Claude application
cd ../claude-app
npm install2. Configure environment variables
cp .env.example .env
# Edit .env with your Anthropic API key and MCP server URL3. Start the Claude application
npm start4. Test the Claude integration
curl -X POST http://localhost:4000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "How many users are in our organization?"}]}'Phase 3: Customizing the Integration
1. Add more Graph API functions
2. Customize the system prompt
3. Implement caching (optional)
4. Add monitoring and logging
Project Structure
Test1/
├── mcp-server/ # MCP Server for Microsoft Graph API
│ ├── server.js # Main server implementation
│ ├── test-client.js # Test client for verification
│ ├── package.json # Dependencies
│ ├── Dockerfile # Container configuration
│ └── .env.example # Example environment variables
│
├── claude-app/ # Claude Application
│ ├── claude-app.js # Main application server
│ ├── claude-mcp-integration.js # Integration module
│ ├── package.json # Dependencies
│ └── .env.example # Example environment variables
│
└── docs/ # Documentation
└── integration-guide.md # Detailed integration guideEnvironment Variables
MCP Server (.env)
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
PORT=3000
NODE_ENV=development # Set to 'production' in productionClaude Application (.env)
ANTHROPIC_API_KEY=your-anthropic-api-key
MCP_SERVER_URL=http://localhost:3000
MCP_USER_ID=default-user
PORT=4000API Endpoints
MCP Server
- POST /api/graph
- Makes requests to Microsoft Graph API
- Requires `X-User-ID` header for authentication
- Body contains Graph API request options
Claude Application
- POST /api/chat
- Sends messages to Claude with Graph API capabilities
- Body contains message array and optional system prompt
- POST /api/analyze-organization
- Specialized endpoint for organizational analysis
- Simplifies asking questions about the organization
Graph API Request Options
When making requests to the MCP server, you can include the following options:
{
"endpoint": "/users", // Required: Graph API endpoint
"method": "GET", // Optional: HTTP method (default: GET)
"version": "beta", // Optional: API version (default: beta)
"queryParams": {}, // Optional: Query parameters
"body": {}, // Optional: Request body for POST/PUT/PATCH
"allData": false // Optional: Auto-pagination (default: false)
}Important Note About consistencyLevel
After testing, we've found that the `consistencyLevel` parameter is generally not supported in many Graph API configurations. We've removed it from all default requests to ensure maximum compatibility.
If you need to use this parameter in your specific environment (for certain advanced directory query scenarios), you can manually add it to the queryParams:
{
"endpoint": "/users",
"method": "GET",
"queryParams": {
"$top": 5,
"consistencyLevel": "eventual"
}
}However, we recommend testing carefully before using this parameter, as it can cause errors in many environments.
JSON Format Requirements
When making requests to the MCP server, ensure your JSON is properly formatted:
1. Use double quotes for keys and string values:
{"endpoint": "/users", "method": "GET"}2. Don't nest JSON strings improperly:
{"queryParams": {"$filter": "displayName eq 'John'"}}3. Use proper JSON types:
{"allData": true, "count": 10}Getting Microsoft Azure Credentials
To get your AZURE_CLIENT_ID and AZURE_CLIENT_SECRET:
1. Sign in to the Azure Portal
2. Navigate to Azure Active Directory > App registrations
3. Create a new registration or use an existing one
4. Copy the Application (client) ID - this is your AZURE_CLIENT_ID
5. Go to Certificates & secrets > New client secret
6. Create a new secret and copy the value - this is your AZURE_CLIENT_SECRET
7. Under API permissions, add Microsoft Graph permissions
Security Considerations
1. Authentication
2. Authorization
3. Data Protection
4. Audit Logging
Troubleshooting
1. MCP Server Connection Issues
2. JSON Parsing Errors
3. Graph API Errors
4. Claude API Errors
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Frequently asked questions
What is test1?
test1 is Claude integration with MCP server for Microsoft Graph API
How do I install test1?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is test1 open source?
Yes — it is hosted on GitHub at https://github.com/JBAgent/Test1.
Related MCP tools
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others. Built for the Model Context Protocol to enhance AI capabiliti
Fay是一个帮助数字人(2.5d、3d、移动、pc、网页)或大语言模型(openai兼容、deepseek)连通业务系统的mcp框架。 JavaScript-based implementation. Trusted by 12000+ developers.
CTTF: MCP integration between Cursor and Figma, allowing Cursor Agentic AI to communicate with Figma for reading designs and modifying them programmatically.
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients. JavaScript-based implementation.
This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities JavaScript-based implementation.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP