Notion API MCP Server
by pbohannon
Verified
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
import { AzureDevOpsConnection } from '../../api/connection.js';
import { AzureDevOpsConfig } from '../../config/environment.js';
interface GetWikiPageArgs {
wikiIdentifier: string;
path: string;
version?: string;
includeContent?: boolean;
}
export async function getWikis(args: Record<string, never>, config: AzureDevOpsConfig) {
AzureDevOpsConnection.initialize(config);
const connection = AzureDevOpsConnection.getInstance();
const wikiApi = await connection.getWikiApi();
const wikis = await wikiApi.getAllWikis(config.project);
return {
content: [
{
type: 'text',
text: JSON.stringify(wikis, null, 2),
},
],
};
}
export async function getWikiPage(args: GetWikiPageArgs, config: AzureDevOpsConfig) {
if (!args.wikiIdentifier || !args.path) {
throw new McpError(
ErrorCode.InvalidParams,
'Wiki identifier and page path are required'
);
}
AzureDevOpsConnection.initialize(config);
const connection = AzureDevOpsConnection.getInstance();
const wikiApi = await connection.getWikiApi();
try {
// Get wiki information
const wiki = await wikiApi.getWiki(config.project, args.wikiIdentifier);
if (!wiki || !wiki.id) {
throw new McpError(
ErrorCode.InvalidParams,
`Wiki ${args.wikiIdentifier} not found`
);
}
// For now, we can only return the wiki information since the page API is not available
return {
content: [
{
type: 'text',
text: JSON.stringify({
id: wiki.id,
name: wiki.name,
path: args.path,
message: 'Wiki page content retrieval is not supported in the current API version'
}, null, 2),
},
],
};
} catch (error: unknown) {
if (error instanceof McpError) throw error;
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
throw new McpError(
ErrorCode.InternalError,
`Failed to get wiki page: ${errorMessage}`
);
}
}