openproject-mcp
Provides read-only access to OpenProject projects, work packages, and comments, with tools to list projects, search and retrieve work packages, view comments, and list statuses and types.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@openproject-mcplist my open work packages"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
openproject-mcp
A Model Context Protocol server for OpenProject. It gives an MCP-capable assistant read-only access to the projects, work packages and comments that one OpenProject API key can see.
Why this exists
OpenProject ships an official MCP server, but it is an Enterprise add-on: it requires an Enterprise cloud or on-premises plan at the Professional tier or above. Every Community Edition instance, and every openDesk deployment built on one, is left without a way to connect an assistant.
This server fills that gap. It talks to the documented, unrestricted API v3 that every OpenProject instance exposes, using a personal API key.
Related MCP server: MCP OpenProject Server
Scope and safety
Every tool in this server is read-only. There is no code path that creates, updates or deletes anything in OpenProject, and no tool that writes to disk or makes a request to any host other than the configured instance.
The server holds one API key and therefore sees exactly what the user behind that key sees. OpenProject's own project memberships and role permissions remain the access boundary; this server does not widen them.
Responses are size-capped before they reach the assistant. A single response
body is read up to a limit and then aborted, and long descriptions and comments
are truncated with an explicit [truncated] marker rather than silently cut.
Requirements
Node.js 20 or newer
An OpenProject instance reachable from the machine running the server
An OpenProject API key
Creating an API key
Sign in to OpenProject.
Open your avatar menu and choose "My account".
Go to "Access tokens".
Under "API", choose "Generate" and copy the key.
The key inherits your permissions. If you want the assistant to see less than you do, create a dedicated OpenProject user with narrower project memberships and generate the key as that user.
Installation
git clone https://github.com/Nraitschew/openproject-mcp.git
cd openproject-mcp
npm install
npm run buildThe build writes an executable entry point to dist/index.js.
Configuration
The server is configured through environment variables. The host application that starts the server passes them in.
Variable | Required | Default | Meaning |
| yes | Instance URL, for example | |
| yes | The API key from "My account", "Access tokens". | |
| no |
| Per-request timeout in milliseconds. |
| no |
| Hard cap on a single response body. |
| no |
| Cap on a description or comment handed to the assistant. |
A missing or malformed variable makes the server exit with a message on stderr that names the variable, rather than starting and failing on the first tool call.
Connecting a client
Claude Desktop
Edit the MCP configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"openproject": {
"command": "node",
"args": ["/absolute/path/to/openproject-mcp/dist/index.js"],
"env": {
"OPENPROJECT_URL": "https://projects.example.org",
"OPENPROJECT_API_KEY": "your-api-key"
}
}
}
}Restart Claude Desktop afterwards.
Claude Code
claude mcp add openproject \
--env OPENPROJECT_URL=https://projects.example.org \
--env OPENPROJECT_API_KEY=your-api-key \
-- node /absolute/path/to/openproject-mcp/dist/index.jsAny other MCP client
The server speaks MCP over stdio. Start it with node dist/index.js and the
two required environment variables set; any client that can spawn a stdio
server will work.
Tools
Tool | Purpose |
| Identify the account the API key belongs to. Call this first when a question says "my" or "me". |
| List visible projects, optionally filtered by name or identifier. Returns the ids that scope a work package search. |
| Full-text search over work packages, optionally scoped to a project or to the current user. Defaults to open work packages, most recently updated first. |
| One work package in full, including its description. |
| The comments on a work package. Status changes without a comment are omitted. |
| The work package statuses configured on the instance. |
| The work package types configured on the instance, for example Task, Bug, Milestone. |
Tool results are JSON. Related resources are flattened out of OpenProject's
HAL envelopes: a work package carries status, assignee and project as
plain names rather than as link objects, so the assistant reads the work rather
than the link structure.
Errors
A failing tool call returns a result marked as an error whose text starts with a stable machine code:
Code | Meaning |
| The API key was rejected. It may have been revoked. |
| The key is valid but not permitted to read that resource. |
| No such work package, project or endpoint. |
| The instance is rate limiting this client. |
| The instance did not answer, or the request timed out. |
| The response was not the expected document. Usually a wrong |
| Any other non-success status, with the status code in the message. |
Testing against your instance
npx @modelcontextprotocol/inspector node dist/index.jsThe MCP Inspector lists the tools and lets you call them by hand, which is the fastest way to confirm the URL and key are right.
Development
npm install
npm run typecheck
npm test
npm run buildThe unit tests cover the configuration parsing and the API v3 filter grammar. They make no network requests, so they run anywhere.
Limitations
Read-only by design. Creating or updating work packages is not implemented.
Attachments are not downloaded.
Time and cost entries, budgets, and the BCF endpoints are not exposed.
search_work_packagessorts by last update and pages once. A very large result set is truncated to the requested limit rather than paged through.
Related
opendesk-mcp connects a whole openDesk instance, including this server's OpenProject tools.
xwiki-mcp does the same for XWiki.
License
Apache License 2.0. See LICENSE.
This project is not affiliated with or endorsed by OpenProject GmbH. "OpenProject" is a trademark of its respective owner and is used here only to describe what this software connects to.
Available Tools
7 toolsget_current_userGet current userA
Identify the OpenProject account this server authenticates as. Call it first when a question says 'my' or 'me', then pass assignedToMe to search_work_packages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It conveys that the operation is a read/identity lookup and adds the useful behavioral context of being a precursor to search_work_packages. However, it does not disclose output shape, possible errors, or whether authentication is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the purpose, the second gives a direct usage instruction. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description is nearly complete: it says what the tool does and when/how to use it. It omits details about the exact response format, but with no output schema that is a minor gap for such a simple identity-lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter documentation. The description compensates by explaining the intended data flow into search_work_packages, which is more useful than any parameter description would be here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Identify the OpenProject account this server authenticates as') and clearly distinguishes this from sibling tools by focusing on the authenticated identity rather than work packages or projects. It is not a tautology of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool ('when a question says 'my' or 'me'') and how to use its result ('then pass assignedToMe to search_work_packages'). It lacks an explicit when-not-to-use statement or alternatives, but the guidance is clear and actionable for the common case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_packageGet work packageA
Read one work package in full, including its description, priority, author and progress. Get the id from search_work_packages first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work package id, for example 4711. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states 'Read', which implies a non-mutating operation, but does not disclose potential errors (e.g., invalid id), auth requirements, or response characteristics. Given the lack of annotation support, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary purpose front-loaded and the usage hint in a separate sentence. No filler or redundant phrasing; every part contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation with no output schema, the description adequately covers what it returns (full work package with specified fields) and how to get the id. It omits error handling details, but these are less critical for a straightforward fetch. Overall, it is sufficiently complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the id parameter (with an example), and the description adds operational context by directing the agent to get the id from search_work_packages. This goes beyond the schema's static definition by explaining how to obtain a valid value, which is helpful for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads one work package in full, listing specific fields (description, priority, author, progress). It distinguishes from sibling tools like search_work_packages (which searches) and get_work_package_comments (which fetches comments only) by focusing on full details of a single work package.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs the agent to obtain the id from search_work_packages first, establishing a clear usage workflow. This also implies when to use this tool (after searching) and implicitly differentiates it from alternatives like search (for lists) or comments (for a subset of data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_package_commentsGet work package commentsA
Read the comments on one work package, oldest first. Status changes without a comment are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work package id. | |
| limit | No | Maximum comments to return. Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds meaningful behavior—comments are ordered oldest first, and status changes without an accompanying comment are omitted—which goes beyond the tool name and helps an agent predict output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the essential behavior and constraints with no filler. The core purpose is front-loaded, and the ordering/filtering detail adds necessary specificity without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two well-documented parameters, the description is largely complete: it specifies scope, ordering, and an important filtering rule. It could mention the return shape slightly more explicitly, but the tool name and schema make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'id' and 'limit' parameters well. The description does not add parameter-specific meaning beyond referring to 'one work package,' so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('comments on one work package'), making the tool's purpose immediately clear. It also distinguishes itself from siblings like get_work_package by focusing on comments rather than the work package itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to read comments for a single work package. It does not explicitly mention alternatives or when-not-to-use, but the sibling tools are distinct enough that no exclusion is necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsA
List the projects visible to this account, with id, name, identifier and description. Pass a returned id as projectId to search_work_packages to scope a search to one project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum projects to return. Default 50. | |
| query | No | Filter by name or identifier. Omit to list all visible projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the burden of explaining behavior. It discloses account-scoped visibility, the expected output fields, and a downstream usage constraint. It does not explicitly state 'no side effects' or discuss rate limits, but for a list operation the core behavioral details are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first defines the operation and result fields, and the second connects the output to a sibling tool. The most important scope detail is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter list tool, the description plus schema fully covers what the agent needs: what is returned, scope visibility, and how to use the result downstream. No output schema is declared, but the stated fields are sufficient for calling the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters (limit and query) with 100% coverage, so the description need not repeat them. It also adds no parameter-specific nuance, keeping it at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource ('List the projects visible to this account') and names the returned fields. It also differentiates itself from the sibling search_work_packages by explaining that its returned id is the projectId for that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to call this tool: to see account-visible projects and obtain ids for scoped work-package searches. It does not explicitly enumerate exclusions or alternative tools, but the workflow pointer is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statusesList statusesA
List the work package statuses configured on this instance. Useful when a question names a status and you need to know whether it exists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the behavioral burden. The verb 'List' implies a read-only operation and 'configured on this instance' indicates instance-level data, but the description does not explicitly mention side-effect-free behavior, permissions, or return format. This is a minor gap for a zero-parameter list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: the first states the core operation, the second gives a practical use case. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema and no annotations, the description covers what the tool does and when to invoke it. It could add more detail about the returned status shape, but that is not essential for deciding to call the tool; no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description has no parameter documentation burden. The baseline of 4 applies because nothing about parameters needs to be explained; all schema properties are already covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action ('List') and exact resource ('work package statuses configured on this instance'). It is clearly distinguishable from sibling list tools like list_projects and list_types because it names the resource. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete trigger scenario: when a question names a status and the agent needs to verify whether it exists. It does not explicitly discuss when not to use it, but given the resource-specific siblings, the context is clear enough. This is adequate usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_typesList work package typesA
List the work package types configured on this instance, for example Task, Bug, Milestone.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry behavioral weight. 'List' implies a read-only operation and 'configured on this instance' clarifies scope, but it does not explicitly state side-effect-free behavior or return format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence contains the verb, resource, scope, and clarifying examples with no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with no output schema, the description fully covers what the agent needs: it identifies the resource, the instance scope, and representative returned values. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which warrants a baseline of 4. The description adds context about what the output domain is (configured work package types) even though there are no input semantics to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('List') and resource ('work package types configured on this instance') and gives concrete examples (Task, Bug, Milestone), which clearly separates it from siblings like list_projects and list_statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read intent is implied: when an agent needs work package types, this is the obvious tool. However, the description does not explicitly state when to use it over alternatives such as list_statuses or list_projects, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_work_packagesSearch work packagesA
Search work packages (tasks, bugs, milestones) by full text. Without a query it lists the most recently updated open ones. Returns id, subject, type, status, project, assignee and dates. Pass a returned id to get_work_package for the full description.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return. Default 25. | |
| query | No | Full-text search across subject and description. | |
| projectId | No | Restrict to one project, using an id from list_projects. | |
| assignedToMe | No | Only work packages assigned to the account this server authenticates as. | |
| includeClosed | No | Also return closed work packages. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does a good job: it states the query-less default, that only open items are listed unless includeClosed is set, and that full descriptions are intentionally deferred to another tool. It does not mention pagination or auth expectations, but neither is critical for a read-only search call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, and the most important behavioral detail (query-less default) is front-loaded. Every sentence contributes either purpose, behavior, return content, or a routing pointer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates the returned fields and the follow-up path to get_work_package, which is enough for an agent to chain calls. It is not exhaustive about all sibling relationships or edge-case behaviors, but it is complete for the tool's core use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining what happens when query is omitted—it lists the most recently updated open items—thus clarifying query's optionality and the implied ordering/filtering beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear action ('Search work packages') and resource, then clarifies the kinds of entities included (tasks, bugs, milestones) and the full-text scope. It also distinguishes itself from get_work_package by noting it returns only summary fields and that details come from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default behavior when no query is given and explicitly routes the agent to get_work_package for full descriptions. It does not enumerate when to prefer other siblings like list_statuses or list_types, but the most important differentiation is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource or action: current user, projects, work-package search, single work package, comments, statuses, and types. There is no meaningful overlap between search_work_packages and get_work_package because one is full-text search and the other is retrieval by ID.
All tools follow a consistent verb_noun snake_case pattern: get_current_user, list_projects, search_work_packages, get_work_package, and so on. The one longer name, get_work_package_comments, still fits the established convention.
Seven tools is a well-scoped size for a read-oriented OpenProject integration. Each tool has a clear purpose and none are redundant, so the count feels intentional rather than padded or thin.
The surface is entirely read-only: it can search, view, and list work packages, projects, comments, statuses, and types, but it cannot create, update, transition, or comment on work packages. For a project-management domain this is a significant functional gap that prevents agents from completing common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Secure AI access to OpenOak tasks, notes, and Kanban boards.
Knowledge base MCP for AI agents on iknow.dev. Search, read, and maintain via OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with self-hosted OpenProject instances through the MCP protocol, supporting CRUD operations for projects and tasks (work packages) with pagination and filtering capabilities.8
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage projects through OpenProject's API, providing complete project management capabilities including work packages, tasks, and team collaboration features.
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with OpenProject's API v3 for comprehensive project management operations including work packages, projects, time tracking, users, and all other OpenProject features through natural language.4MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage OpenProject projects, work packages, activities, and wiki pages through the Model Context Protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nraitschew/openproject-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server